mirror of
https://github.com/mirror/tinycc.git
synced 2024-12-28 04:00:06 +08:00
Improve multiarch detection
* Detect multiarch at configure time * Detect based on the place where crti.o is * Define multiarch triplet in tcc.h
This commit is contained in:
parent
05108a3b0a
commit
f6cfaa6d25
10
Makefile
10
Makefile
@ -35,16 +35,8 @@ endif
|
||||
|
||||
ifeq ($(ARCH),i386)
|
||||
NATIVE_DEFINES=-DTCC_TARGET_I386
|
||||
NATIVE_DEFINES+=\
|
||||
$(if $(wildcard /lib/i386-linux-gnu),-DCONFIG_MULTIARCHDIR=\"i386-linux-gnu\",\
|
||||
$(if $(wildcard /lib/i386-kfreebsd-gnu),-DCONFIG_MULTIARCHDIR=\"i386-kfreebsd-gnu\",\
|
||||
$(if $(wildcard /lib/i386-gnu),-DCONFIG_MULTIARCHDIR=\"i386-gnu\")))
|
||||
else ifeq ($(ARCH),x86-64)
|
||||
NATIVE_DEFINES=-DTCC_TARGET_X86_64
|
||||
NATIVE_DEFINES+=\
|
||||
$(if $(wildcard /usr/lib64),-DCONFIG_LDDIR=\"lib64\",\
|
||||
$(if $(wildcard /lib/x86_64-linux-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-linux-gnu\",\
|
||||
$(if $(wildcard /lib/x86_64-kfreebsd-gnu),-DCONFIG_MULTIARCHDIR=\"x86_64-kfreebsd-gnu\")))
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),arm)
|
||||
@ -52,10 +44,8 @@ NATIVE_DEFINES=-DTCC_TARGET_ARM
|
||||
NATIVE_DEFINES+=-DWITHOUT_LIBTCC
|
||||
ifneq (,$(wildcard /lib/ld-linux-armhf.so.3 /lib/arm-linux-gnueabihf/ld-linux.so.3))
|
||||
NATIVE_DEFINES+=-DTCC_ARM_EABI -DTCC_ARM_HARDFLOAT
|
||||
NATIVE_DEFINES+=$(if $(wildcard /lib/arm-linux-gnueabihf),-DCONFIG_MULTIARCHDIR=\"arm-linux-gnueabihf\")
|
||||
else ifneq (,$(wildcard /lib/ld-linux.so.3))
|
||||
NATIVE_DEFINES+=-DTCC_ARM_EABI
|
||||
NATIVE_DEFINES+=$(if $(wildcard /lib/arm-linux-gnueabi), -DCONFIG_MULTIARCHDIR=\"arm-linux-gnueabi\")
|
||||
endif
|
||||
NATIVE_DEFINES+=$(if $(shell grep -l "^Features.* \(vfp\|iwmmxt\) " /proc/cpuinfo),-DTCC_ARM_VFP)
|
||||
endif
|
||||
|
16
configure
vendored
16
configure
vendored
@ -260,6 +260,16 @@ if $cc -o $TMPO $TMPC 2> /dev/null ; then
|
||||
gcc_major="4"
|
||||
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 test -L $sysroot/usr/lib/crti.o ; then
|
||||
use_multiarch="yes"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test x"$show_help" = "xyes" ; then
|
||||
cat << EOF
|
||||
Usage: configure [options]
|
||||
@ -491,6 +501,12 @@ 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
|
||||
fi
|
||||
if test -n "$lddir" ; then
|
||||
echo "#define CONFIG_LDDIR \"$lddir\"" >> $TMPH
|
||||
fi
|
||||
|
||||
version=`head $source_path/VERSION`
|
||||
echo "VERSION=$version" >>config.mak
|
||||
|
28
tcc.h
28
tcc.h
@ -156,6 +156,34 @@
|
||||
# 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
|
||||
|
Loading…
Reference in New Issue
Block a user