libtcc: minor adjustments

- use {B} to substitute tcc_lih_path (instead of \b)

- expand CONFIG_TCC_CRTPREFIX in CONFIG_TCC_LIBPATHS
  which fixes duplicate CONFIG_SYSROOT.

- put default CONFIG_SYSROOT ("") into tcc.h

- remove hack from commit db6fcce78f
  because $(tccdir)/include is already in sysincludes

- configure: error out for unrecognized options.

- win32/build-tcc.bat: put libtcc into base dir where it will
  find lib/include automatically, and build libtcc_test example.
This commit is contained in:
grischka
2011-08-11 16:55:30 +02:00
parent fd0cea8895
commit 74a24d77fd
10 changed files with 96 additions and 97 deletions

59
tcc.c
View File

@ -263,6 +263,16 @@ static void exec_other_tcc(TCCState *s, char **argv, const char *optarg)
}
#endif
static void parse_option_D(TCCState *s1, const char *optarg)
{
char *sym = tcc_strdup(optarg);
char *value = strchr(sym, '=');
if (value)
*value++ = '\0';
tcc_define_symbol(s1, sym, value);
tcc_free(sym);
}
static int parse_args(TCCState *s, int argc, char **argv)
{
int optind;
@ -327,16 +337,7 @@ static int parse_args(TCCState *s, int argc, char **argv)
error("too many include paths");
break;
case TCC_OPTION_D:
{
char *sym, *value;
sym = (char *)optarg;
value = strchr(sym, '=');
if (value) {
*value = '\0';
value++;
}
tcc_define_symbol(s, sym, value);
}
parse_option_D(s, optarg);
break;
case TCC_OPTION_U:
tcc_undefine_symbol(s, optarg);
@ -347,12 +348,6 @@ static int parse_args(TCCState *s, int argc, char **argv)
case TCC_OPTION_B:
/* set tcc utilities path (mainly for tcc development) */
tcc_set_lib_path(s, optarg);
/* append /include and add it as -isystem, as gcc does */
r = tcc_strdup(optarg);
r = tcc_realloc(r, strlen(r) + 8 + 1);
strcat(r, "/include");
tcc_add_sysinclude_path(s, r);
tcc_free(r);
break;
case TCC_OPTION_l:
dynarray_add((void ***)&files, &nb_files, r);
@ -360,14 +355,14 @@ static int parse_args(TCCState *s, int argc, char **argv)
break;
case TCC_OPTION_pthread:
was_pthread = 1;
tcc_define_symbol(s, "_REENTRANT", "1");
parse_option_D(s, "_REENTRANT");
break;
case TCC_OPTION_bench:
do_bench = 1;
break;
#ifdef CONFIG_TCC_BACKTRACE
case TCC_OPTION_bt:
set_num_callers(atoi(optarg));
tcc_set_num_callers(atoi(optarg));
break;
#endif
#ifdef CONFIG_TCC_BCHECK
@ -417,17 +412,17 @@ static int parse_args(TCCState *s, int argc, char **argv)
print_search_dirs = 1;
break;
case TCC_OPTION_run:
{
int argc1;
char **argv1;
argc1 = expand_args(&argv1, optarg);
if (argc1 > 0) {
parse_args(s, argc1, argv1);
}
multiple_files = 0;
output_type = TCC_OUTPUT_MEMORY;
{
int argc1;
char **argv1;
argc1 = expand_args(&argv1, optarg);
if (argc1 > 0) {
parse_args(s, argc1, argv1);
}
multiple_files = 0;
output_type = TCC_OUTPUT_MEMORY;
break;
}
case TCC_OPTION_v:
do ++s->verbose; while (*optarg++ == 'v');
break;
@ -447,10 +442,8 @@ static int parse_args(TCCState *s, int argc, char **argv)
s->rdynamic = 1;
break;
case TCC_OPTION_Wl:
{
if ((r = (char *) tcc_set_linker(s, (char *)optarg, TRUE)))
error("unsupported linker option '%s'", r);
}
if ((r = (char *) tcc_set_linker(s, (char *)optarg, TRUE)))
error("unsupported linker option '%s'", r);
break;
case TCC_OPTION_E:
output_type = TCC_OUTPUT_PREPROCESS;
@ -473,9 +466,7 @@ static int parse_args(TCCState *s, int argc, char **argv)
}
}
/* fixme: these options could be different on your platform */
if (was_pthread
&& output_type != TCC_OUTPUT_OBJ)
{
if (was_pthread && output_type != TCC_OUTPUT_OBJ) {
dynarray_add((void ***)&files, &nb_files, "-lpthread");
nb_libraries++;
}