aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Preud'homme <robotux@celest.fr>2013-02-13 20:14:13 +0100
committerThomas Preud'homme <robotux@celest.fr>2013-02-13 20:14:13 +0100
commitf9ac2013779370e0d010922ae3684e601e53aa1d (patch)
treed2389c603a06c0373d8c4065737fba5bd89c489c
parentaf4b27f0fd7d1ee247bbd1a330dfbff9ed16bcae (diff)
downloadtinycc-f9ac2013779370e0d010922ae3684e601e53aa1d.tar.gz
tinycc-f9ac2013779370e0d010922ae3684e601e53aa1d.tar.bz2
Detect multiarch triplet and lddir from ldd output
-rwxr-xr-xconfigure16
-rw-r--r--tcc.h36
2 files changed, 8 insertions, 44 deletions
diff --git a/configure b/configure
index 761c20c..425f719 100755
--- a/configure
+++ b/configure
@@ -261,12 +261,12 @@ if $cc -o $TMPO $TMPC 2> /dev/null ; then
fi
if test -z "$cross_prefix" ; then
- if test -f "/usr/lib64" ; then
- lddir="lib64"
- elif test -z "$tcc_crtprefix" ; then # check if system is multiarch
- if test ! -f $sysroot/usr/lib/crti.o -o -L $sysroot/usr/lib/crti.o ; then
- use_multiarch="yes"
- fi
+ libc_dir="$(ldd ./print_env_info | grep libc.so | sed 's|[^/]*/\(.*/\)[^/]*|\1|')"
+ multiarch_triplet=${libc_dir#*/}
+ multiarch_triplet=${multiarch_triplet%/}
+ lddir="${libc_dir%%/*}"
+ if test -n "$multiarch_triplet" ; then
+ lddir="$lddir/$multiarch_triplet"
fi
fi
@@ -501,8 +501,8 @@ if test "$have_selinux" = "yes" ; then
echo "#define HAVE_SELINUX" >> $TMPH
echo "HAVE_SELINUX=yes" >> config.mak
fi
-if test "$use_multiarch" = "yes" ; then
- echo "#define CONFIG_TCC_MULTIARCH" >> $TMPH
+if test -n "$multiarch_triplet" ; then
+ echo "#define CONFIG_MULTIARCHDIR \"$multiarch_triplet\"" >> $TMPH
fi
if test -n "$lddir" ; then
echo "#define CONFIG_LDDIR \"$lddir\"" >> $TMPH
diff --git a/tcc.h b/tcc.h
index 3a9c0e8..e9ce802 100644
--- a/tcc.h
+++ b/tcc.h
@@ -156,42 +156,6 @@
# define CONFIG_SYSROOT ""
#endif
-#if defined(CONFIG_TCC_MULTIARCH) && defined(TCC_IS_NATIVE)
-/* Define architecture */
-# if defined(TCC_TARGET_I386)
-# define TRIPLET_ARCH "i386"
-# elif defined(TCC_TARGET_X86_64)
-# define TRIPLET_ARCH "x86_64"
-# elif defined(TCC_TARGET_ARM)
-# define TRIPLET_ARCH "arm"
-# else
-# define TRIPLET_ARCH "unknown"
-# endif
-/* Define OS */
-# if defined (__linux__)
-# define TRIPLET_OS "linux"
-# elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
-# define TRIPLET_OS "kfreebsd"
-# elif !defined (__GNU__)
-# define TRIPLET_OS "unknown"
-# endif
-/* Define calling convention and ABI */
-# define TRIPLET_ABI "gnu"
-# ifdef __GNU__
-# define CONFIG_MULTIARCHDIR TRIPLET_ARCH "-" TRIPLET_ABI
-# else
-# define CONFIG_MULTIARCHDIR TRIPLET_ARCH "-" TRIPLET_OS "-" TRIPLET_ABI
-# endif
-#endif
-
-#ifndef CONFIG_LDDIR
-# ifdef CONFIG_MULTIARCHDIR
-# define CONFIG_LDDIR "lib/" CONFIG_MULTIARCHDIR
-# else
-# define CONFIG_LDDIR "lib"
-# endif
-#endif
-
/* path to find crt1.o, crti.o and crtn.o */
#ifndef CONFIG_TCC_CRTPREFIX
# define CONFIG_TCC_CRTPREFIX CONFIG_SYSROOT "/usr/" CONFIG_LDDIR