aboutsummaryrefslogtreecommitdiff
path: root/tccpp.c
diff options
context:
space:
mode:
Diffstat (limited to 'tccpp.c')
-rw-r--r--tccpp.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/tccpp.c b/tccpp.c
index 111ea2b..51353aa 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -1420,7 +1420,45 @@ 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 */