From 7a3f6d49415fd5f1fa99d25aba40c7884d5774a4 Mon Sep 17 00:00:00 2001 From: YX Hao Date: Mon, 16 Jun 2014 16:00:46 +0800 Subject: [PATCH] Win: Enable use "*.def + *.c" files as library instead of *.a by "-l" option example: "-lshell32" will try "shell32.def + shell32.c" Add lib type "%s/%s.c" for tcc_add_library() ('-l' option parse) So tcc can use all files as scripts. --- libtcc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libtcc.c b/libtcc.c index d761582..070c6f3 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1300,7 +1300,7 @@ ST_FUNC int tcc_add_crt(TCCState *s, const char *filename) LIBTCCAPI int tcc_add_library(TCCState *s, const char *libraryname) { #ifdef TCC_TARGET_PE - const char *libs[] = { "%s/%s.def", "%s/lib%s.def", "%s/%s.dll", "%s/lib%s.dll", "%s/lib%s.a", NULL }; + const char *libs[] = { "%s/%s.def", "%s/lib%s.def", "%s/%s.dll", "%s/lib%s.dll", "%s/lib%s.a", "%s/%s.c", NULL }; const char **pp = s->static_link ? libs + 4 : libs; #else const char *libs[] = { "%s/lib%s.so", "%s/lib%s.a", NULL }; @@ -1308,8 +1308,15 @@ LIBTCCAPI int tcc_add_library(TCCState *s, const char *libraryname) #endif while (*pp) { if (0 == tcc_add_library_internal(s, *pp, - libraryname, 0, s->library_paths, s->nb_library_paths)) + libraryname, 0, s->library_paths, s->nb_library_paths)) { +#ifdef TCC_TARGET_PE + /* extra search for *.c file together with *.def file */ + if (pp < libs + 2) + tcc_add_library_internal(s, *(libs + 5), libraryname, 0, + s->library_paths, s->nb_library_paths); +#endif return 0; + } ++pp; } return -1;