From 4d6a4a26e08ef8581c70d29f578a42ab7d738c2d Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Thu, 7 Jul 2011 10:36:38 +0200 Subject: [PATCH] Add configuration of include subdirectories Add the possibility to search headers in several subdirectories of /usr/local/include and /usr/include. A possible use case would be for tcc to search for headers in /usr/local/include/x86_64-linux-gnu, /usr/local/include, /usr/include/x86_64-linux-gnu and /usr/include in turn. --- libtcc.c | 19 +++++++++++++++++-- tcc.h | 3 +++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libtcc.c b/libtcc.c index d0e6e77e..f0604762 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 686b3c50..c3c10316 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