aboutsummaryrefslogtreecommitdiff
path: root/tcc.c
diff options
context:
space:
mode:
Diffstat (limited to 'tcc.c')
-rw-r--r--tcc.c59
1 files changed, 25 insertions, 34 deletions
diff --git a/tcc.c b/tcc.c
index daf302b..ada67a0 100644
--- a/tcc.c
+++ b/tcc.c
@@ -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++;
}