aboutsummaryrefslogtreecommitdiff
path: root/tccpp.c
diff options
context:
space:
mode:
authorSteven G. Messervey <nuke48386@yahoo.com>2015-04-15 17:00:26 -0400
committerSteven G. Messervey <nuke48386@yahoo.com>2015-04-15 17:00:26 -0400
commit8615bb40fb39bf7435462ca54cbbc24aaecae502 (patch)
tree8bf391abadfa52b544275975c63741289c367738 /tccpp.c
parenta13f183e4c2c4b4d1d40e142b57a4298672dfd2c (diff)
downloadtinycc-8615bb40fb39bf7435462ca54cbbc24aaecae502.tar.gz
tinycc-8615bb40fb39bf7435462ca54cbbc24aaecae502.tar.bz2
implement #pragma comment(lib,...)
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 */