From fe8de955b012369207f64dc79e5cb416c52ee9cf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Gl=C3=B6ckner?= Date: Fri, 5 Sep 2008 21:08:22 +0200 Subject: [PATCH] A prefix for default library/include search paths This patch is useful for cross compilers. Without this patch tcc tries to use the host's libraries, crt*.o and include files. The patch prepends a string to all default paths. The string can be passed to configure with --sysroot=string. Daniel --- configure | 6 ++++++ tcc.c | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/configure b/configure index a98f0789..8517485f 100755 --- a/configure +++ b/configure @@ -26,6 +26,7 @@ libdir="" tccdir="" includedir="" mandir="" +sysroot="" cross_prefix="" cc="gcc" host_cc="gcc" @@ -102,6 +103,8 @@ for opt do ;; --mandir=*) mandir=`echo $opt | cut -d '=' -f 2` ;; + --sysroot=*) sysroot=`echo $opt | cut -d '=' -f 2` + ;; --source-path=*) source_path=`echo $opt | cut -d '=' -f 2` ;; --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2` @@ -218,6 +221,7 @@ echo "" echo "Advanced options (experts only):" echo " --source-path=PATH path of source code [$source_path]" echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" +echo " --sysroot=PREFIX prepend PREFIX to library/include paths []" echo " --cc=CC use C compiler CC [$cc]" echo " --make=MAKE use specified make [$make]" echo "" @@ -267,6 +271,7 @@ echo "Library directory $libdir" echo "Include directory $includedir" echo "Manual directory $mandir" echo "Doc directory $docdir" +echo "Target root prefix $sysroot" echo "Source path $source_path" echo "C compiler $cc" echo "make $make" @@ -287,6 +292,7 @@ echo "libdir=$libdir" >> config.mak echo "includedir=$includedir" >> config.mak echo "mandir=$mandir" >> config.mak echo "docdir=$docdir" >> config.mak +echo "#define CONFIG_SYSROOT \"$sysroot\"" >> $TMPH echo "#define CONFIG_TCCDIR \"$tccdir\"" >> $TMPH echo "MAKE=$make" >> config.mak echo "CC=$cc" >> config.mak diff --git a/tcc.c b/tcc.c index 68826782..cbf29298 100644 --- a/tcc.c +++ b/tcc.c @@ -113,7 +113,7 @@ typedef int BOOL; /* path to find crt1.o, crti.o and crtn.o. Only needed when generating executables or dlls */ -#define CONFIG_TCC_CRT_PREFIX "/usr/lib" +#define CONFIG_TCC_CRT_PREFIX CONFIG_SYSROOT "/usr/lib" #define INCLUDE_STACK_SIZE 32 #define IFDEF_STACK_SIZE 64 @@ -10190,9 +10190,9 @@ TCCState *tcc_new(void) #ifndef TCC_TARGET_PE /* default library paths */ - tcc_add_library_path(s, "/usr/local/lib"); - tcc_add_library_path(s, "/usr/lib"); - tcc_add_library_path(s, "/lib"); + tcc_add_library_path(s, CONFIG_SYSROOT "/usr/local/lib"); + tcc_add_library_path(s, CONFIG_SYSROOT "/usr/lib"); + tcc_add_library_path(s, CONFIG_SYSROOT "/lib"); #endif /* no section zero */ @@ -10469,8 +10469,8 @@ int tcc_set_output_type(TCCState *s, int output_type) /* default include paths */ /* XXX: reverse order needed if -isystem support */ #ifndef TCC_TARGET_PE - tcc_add_sysinclude_path(s, "/usr/local/include"); - tcc_add_sysinclude_path(s, "/usr/include"); + tcc_add_sysinclude_path(s, CONFIG_SYSROOT "/usr/local/include"); + tcc_add_sysinclude_path(s, CONFIG_SYSROOT "/usr/include"); #endif snprintf(buf, sizeof(buf), "%s/include", tcc_lib_path); tcc_add_sysinclude_path(s, buf); -- 2.11.4.GIT