Revert "implement #pragma comment(lib,...)"

This reverts commit 8615bb40fb.

Reverting as it breaks on MinGW targets
This commit is contained in:
Steven G. Messervey 2015-04-15 21:24:15 -04:00
parent 8615bb40fb
commit e50d68e417
4 changed files with 15 additions and 74 deletions

View File

@ -515,7 +515,7 @@ ST_FUNC void put_extern_sym2(Sym *sym, Section *section,
}
#else
if (! (sym->type.t & VT_STATIC))
other = (sym->type.t & VT_VIS_MASK) >> VT_VIS_SHIFT;
other = (sym->type.t & VT_VIS_MASK) >> VT_VIS_SHIFT;
#endif
if (tcc_state->leading_underscore && can_add_underscore) {
buf1[0] = '_';
@ -829,31 +829,13 @@ static int tcc_compile(TCCState *s1)
LIBTCCAPI int tcc_compile_string(TCCState *s, const char *str)
{
int i;
int len, ret;
len = strlen(str);
tcc_open_bf(s, "<string>", len);
memcpy(file->buffer, str, len);
len = s->nb_files;
ret = tcc_compile(s);
tcc_close();
/* habdle #pragma comment(lib,) */
for(i = len; i < s->nb_files; i++) {
/* int filetype = *(unsigned char *)s->files[i]; */
const char *filename = s->files[i] + 1;
if (filename[0] == '-' && filename[1] == 'l') {
if (tcc_add_library(s, filename + 2) < 0) {
tcc_warning("cannot find '%s'", filename+2);
ret++;
}
}
tcc_free(s->files[i]);
}
s->nb_files = len;
return ret;
}
@ -1357,7 +1339,7 @@ LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type)
{
s->output_type = output_type;
if (output_type == TCC_OUTPUT_PREPROCESS)
print_defines();
print_defines();
if (!s->nostdinc) {
/* default include paths */
@ -1917,16 +1899,16 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv)
s->do_debug = 1;
break;
case TCC_OPTION_c:
if (s->output_type)
if (s->output_type)
tcc_warning("-c: some compiler action already specified (%d)", s->output_type);
s->output_type = TCC_OUTPUT_OBJ;
break;
case TCC_OPTION_d:
if (*optarg != 'D') {
if (s->warn_unsupported)
goto unsupported_option;
if (*optarg != 'D') {
if (s->warn_unsupported)
goto unsupported_option;
tcc_error("invalid option -- '%s'", r);
}
}
s->dflag = 1;
break;
#ifdef TCC_TARGET_ARM
@ -1945,11 +1927,11 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv)
s->static_link = 1;
break;
case TCC_OPTION_std:
/* silently ignore, a current purpose:
allow to use a tcc as a reference compiler for "make test" */
/* silently ignore, a current purpose:
allow to use a tcc as a reference compiler for "make test" */
break;
case TCC_OPTION_shared:
if (s->output_type)
if (s->output_type)
tcc_warning("-shared: some compiler action already specified (%d)", s->output_type);
s->output_type = TCC_OUTPUT_DLL;
break;
@ -1964,7 +1946,7 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv)
break;
case TCC_OPTION_r:
/* generate a .o merging several output files */
if (s->output_type)
if (s->output_type)
tcc_warning("-r: some compiler action already specified (%d)", s->output_type);
s->option_r = 1;
s->output_type = TCC_OUTPUT_OBJ;
@ -1982,7 +1964,7 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv)
s->print_search_dirs = 1;
break;
case TCC_OPTION_run:
if (s->output_type)
if (s->output_type)
tcc_warning("-run: some compiler action already specified (%d)", s->output_type);
s->output_type = TCC_OUTPUT_MEMORY;
tcc_set_options(s, optarg);
@ -2013,7 +1995,7 @@ PUB_FUNC int tcc_parse_args(TCCState *s, int argc, char **argv)
cstr_ccat(&linker_arg, '\0');
break;
case TCC_OPTION_E:
if (s->output_type)
if (s->output_type)
tcc_warning("-E: some compiler action already specified (%d)", s->output_type);
s->output_type = TCC_OUTPUT_PREPROCESS;
break;

4
tcc.c
View File

@ -265,7 +265,7 @@ int main(int argc, char **argv)
}
if (s->output_type == 0)
s->output_type = TCC_OUTPUT_EXE;
s->output_type = TCC_OUTPUT_EXE;
if (s->option_m)
exec_other_tcc(s, argv, s->option_m);
@ -317,7 +317,7 @@ int main(int argc, char **argv)
const char *filename = s->files[i] + 1;
if (filename[0] == '-' && filename[1] == 'l') {
if (tcc_add_library(s, filename + 2) < 0) {
tcc_error_noabort("cannot find '%s'", filename+2);
tcc_error_noabort("cannot find '%s'", filename);
ret = 1;
}
} else {

38
tccpp.c
View File

@ -1420,45 +1420,7 @@ static void pragma_parse(TCCState *s1)
*s1->pack_stack_ptr = val;
skip(')');
}
} else if (tok == TOK_comment) {
if (s1->ms_extensions) {
next();
skip('(');
if (tok == TOK_lib) {
next();
skip(',');
if (tok != TOK_STR)
tcc_error("invalid library specification");
else {
/**/
int len = strlen((char *)tokc.cstr->data);
char *file = tcc_malloc(len+4); /* filetype, "-l" and 0 at the end */
file[0] = TCC_FILETYPE_BINARY;
file[1] = '-';
file[2] = 'l';
strcpy(&file[3], (char *)tokc.cstr->data);
dynarray_add((void ***)&s1->files, &s1->nb_files, file);
/**/
/* we can't use
tcc_add_library(s1,(char *)tokc.cstr->data);
while compiling some file
*/
/*
if (strrchr((char *)tokc.cstr->data,'.') == NULL)
tcc_add_library(s1,(char *)tokc.cstr->data);
else
tcc_add_file(s1,(char *)tokc.cstr->data,TCC_FILETYPE_BINARY);
*/
}
next();
tok = TOK_LINEFEED;
}
}
else
tcc_warning("#pragma comment(lib) is ignored");
}
else
tcc_warning("unknown #pragma %s", get_tok_str(tok, &tokc));
}
/* is_bof is true if first non space token at beginning of file */

View File

@ -153,9 +153,6 @@
DEF(TOK_ASM_push, "push")
DEF(TOK_ASM_pop, "pop")
#endif
/* pragma comment & comment(lib,...) */
DEF(TOK_comment, "comment")
DEF(TOK_lib, "lib")
/* builtin functions or variables */
#ifndef TCC_ARM_EABI