From 8615bb40fb39bf7435462ca54cbbc24aaecae502 Mon Sep 17 00:00:00 2001 From: "Steven G. Messervey" Date: Wed, 15 Apr 2015 17:00:26 -0400 Subject: implement #pragma comment(lib,...) --- tccpp.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tccpp.c') 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 */ -- cgit v1.3.1