diff --git a/libtcc.c b/libtcc.c index d0e6e77..f060476 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1328,8 +1328,23 @@ LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type) /* default include paths */ /* -isystem paths have already been handled */ #ifndef TCC_TARGET_PE - tcc_add_sysinclude_path(s, CONFIG_SYSROOT "/usr/local/include"); - tcc_add_sysinclude_path(s, CONFIG_SYSROOT "/usr/include"); + { + int i, nb_extra_incdirs, nb_prefixs; + char **extra_incdirs; + const char incdir_prefix1[] = CONFIG_SYSROOT "/usr/local/include"; + const char incdir_prefix2[] = CONFIG_SYSROOT "/usr/include"; + const char * const incdir_prefixs[] = {incdir_prefix1, + incdir_prefix2}; + + nb_prefixs = sizeof incdir_prefixs / sizeof *incdir_prefixs; + nb_extra_incdirs = tcc_split_path_components(CONFIG_TCC_INCSUBDIR, + incdir_prefixs, + nb_prefixs, + &extra_incdirs); + for (i = 0; i < nb_extra_incdirs; i++) + tcc_add_sysinclude_path(s, extra_incdirs[i]); + dynarray_reset(&extra_incdirs, &nb_extra_incdirs); + } #endif snprintf(buf, sizeof(buf), "%s/include", s->tcc_lib_path); tcc_add_sysinclude_path(s, buf); diff --git a/tcc.h b/tcc.h index 686b3c5..c3c1031 100644 --- a/tcc.h +++ b/tcc.h @@ -150,6 +150,9 @@ typedef int BOOL; #endif #endif #define CONFIG_TCC_CRT_PREFIX CONFIG_SYSROOT "/usr" CONFIG_TCC_LDDIR +#ifndef CONFIG_TCC_INCSUBDIR + #define CONFIG_TCC_INCSUBDIR "" +#endif #define INCLUDE_STACK_SIZE 32 #define IFDEF_STACK_SIZE 64