aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Preud'homme <thomas.preudhomme@celest.fr>2011-07-07 10:36:38 +0200
committerThomas Preud'homme <thomas.preudhomme@celest.fr>2011-07-07 12:10:57 +0200
commit4d6a4a26e08ef8581c70d29f578a42ab7d738c2d (patch)
treef7919143ec0132e962a29b0840215a396d9124ff
parenta6775fc1544c23d9d1c265f143b5aafc3b906082 (diff)
downloadtinycc-4d6a4a26e08ef8581c70d29f578a42ab7d738c2d.tar.gz
tinycc-4d6a4a26e08ef8581c70d29f578a42ab7d738c2d.tar.bz2
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.
-rw-r--r--libtcc.c19
-rw-r--r--tcc.h3
2 files changed, 20 insertions, 2 deletions
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