Accept colon separated paths with -L and -I

This allows passing colon separated paths to
  tcc_add_library_path
  tcc_add_sysinclude_path
  tcc_add_include_path

Also there are new configure variables
  CONFIG_TCC_LIBPATH
  CONFIG_TCC_SYSINCLUDE_PATHS
which define the lib/sysinclude paths all in one and can
be overridden from configure/make

For TCC_TARGET_PE semicolons (;) are used as separators

Also, \b in the path string is replaced by s->tcc_lib_path
(CONFIG_TCCDIR rsp. -B option)
This commit is contained in:
grischka
2011-08-01 01:10:36 +02:00
parent 626a907451
commit df9cce24a8
5 changed files with 111 additions and 132 deletions

View File

@ -2857,13 +2857,6 @@ static int ld_next(TCCState *s1, char *name, int name_size)
return c;
}
char *tcc_strcpy_part(char *out, const char *in, size_t num)
{
memcpy(out, in, num);
out[num] = '\0';
return out;
}
/*
* Extract the library name from the file name
* Return 0 if the file isn't a library
@ -2886,20 +2879,20 @@ static int filename_to_libname(TCCState *s1, const char filename[], char libname
#ifdef TCC_TARGET_PE
if (!strcmp(ext, ".def")) {
size_t len = ext - filename;
tcc_strcpy_part(libname, filename, len);
pstrncpy(libname, filename, len);
return 1;
}
#else
if (libprefix && (!strcmp(ext, ".so"))) {
size_t len = ext - filename - 3;
tcc_strcpy_part(libname, filename + 3, len);
pstrncpy(libname, filename + 3, len);
return 1;
}
#endif
} else {
if (libprefix && (!strcmp(ext, ".a"))) {
size_t len = ext - filename - 3;
tcc_strcpy_part(libname, filename + 3, len);
pstrncpy(libname, filename + 3, len);
return 1;
}
}