chiark / gitweb /
Bring `native' architectures into the collection.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 26 Nov 2018 13:16:49 +0000 (13:16 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 26 Nov 2018 13:18:00 +0000 (13:18 +0000)
Also fix Android `cross-gcc'.  And other stuff.

Makefile
android-cross-setup.sh.in
bin/crosstool
etc/android-cross-config.site
etc/common-cross-config.site
linux-cross-setup.sh.in
linux-native-setup.sh.in [new file with mode: 0644]

index 268ff6dc5a4040eba4aebb2548c75e39cdd2f999..b1c4d9f062af04e79d529ced366c9b2a7818cc5c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,34 +3,45 @@
 .SECONDEXPANSION: #sorry
 all::
 
-FLAVOURS               += linux
-linux_ARCHS             = armel armhf arm64
-linux/armel_ARCH        = arm-linux-gnueabi
-linux/armhf_ARCH        = arm-linux-gnueabihf
-linux/arm64_ARCH        = aarch64-linux-gnu
-
-FLAVOURS               += android
-android_ARCHS           = arm arm64 x86 x86_64
-android/arm_ARCH        = arm-linux-androideabi
-android/arm64_ARCH      = aarch64-linux-android
-android/x86_ARCH        = i686-linux-android
-android/x86_64_ARCH     = x86_64-linux-android
+FLAVOURS               += linux-cross
+linux-cross_ARCHS       = linux-armel linux-armhf linux-arm64
+linux-armel_ARCH        = arm-linux-gnueabi
+linux-armhf_ARCH        = arm-linux-gnueabihf
+linux-arm64_ARCH        = aarch64-linux-gnu
+
+FLAVOURS               += linux-native
+linux-native_ARCHS      = linux-i386 linux-amd64
+linux-i386_ARCH                 = i686-linux-gnu
+linux-amd64_ARCH        = x86_64-linux-gnu
+
+FLAVOURS               += android-cross
+android-cross_ARCHS     = android-arm android-arm64 android-x86 android-x86_64
+android-arm_ARCH        = arm-linux-androideabi
+android-arm64_ARCH      = aarch64-linux-android
+android-x86_ARCH        = i686-linux-android
+android-x86_64_ARCH     = x86_64-linux-android
 
 V                       = 0
 v_tag                   = $(call v_tag_$V,$1)
 v_tag_0                         = @printf "  %-8s %s\n" "$1" "$@";
 
-SETUPS                  = \
-       $(foreach f,$(FLAVOURS),\
-               $(foreach a,$($f_ARCHS),etc/$f-$a-setup.sh))
+define define-setup
+SETUPS                 += etc/$2-setup.sh
+$2_FLAVOUR              = $1
+endef
+$(foreach f,$(FLAVOURS), \
+       $(foreach a,$($f_ARCHS), \
+               $(eval $(call define-setup,$f,$a))))
+
 TARGETS                        += $(SETUPS)
-setup-flavour           = $(word 1,$(subst -, ,$1))
-setup-arch              = $(word 2,$(subst -, ,$1))
+setup-flavour           = $($1_FLAVOUR)
 
-$(SETUPS): etc/%-setup.sh: $$(call setup-flavour,$$*)-cross-setup.sh.in Makefile
-       $(call v_tag,GEN)sed 's/@arch@/$($(call setup-flavour,$*)/$(call setup-arch,$*)_ARCH)/g' $< >$@.new && mv $@.new $@
+$(SETUPS): etc/%-setup.sh: $$(call setup-flavour,$$*)-setup.sh.in Makefile
+       $(call v_tag,GEN)sed 's/@arch@/$($*_ARCH)/g' $< >$@.new && mv $@.new $@
 
 all:: $(TARGETS)
 
 CLEANFILES             += $(TARGETS)
 clean::; rm -f $(CLEANFILES)
+
+show:; : $(VAR)
index 4da5d85dde2d977b815c470670d2dbe161daf608..06d82c38cdff194f14928da2497d2be182ab83c3 100644 (file)
@@ -4,3 +4,14 @@ ANDROID_NDK_TARGETARCH=@arch@
 . $CROSSDIR/etc/android.sh
 CONFIG_SITE=$CROSSDIR/etc/android-cross-config.site
 PATH=$PATH:$ANDROID_NDK_TOOLS
+
+CROSS_gcc_FLAGS=" --sysroot=$ANDROID_NDK_SYSROOT \
+       -D__ANDROID_API__=$ANDROID_NDK_TARGETVER \
+       -isystem $ANDROID_NDK/sysroot/usr/include \
+       -isystem $ANDROID_NDK/sysroot/usr/include/$ANDROID_NDK_TARGETARCH \
+       -fPIE -pie"
+CROSS_gxx_FLAGS=$CROSS_gcc_FLAGS
+export CROSS_gcc_FLAGS CROSS_gxx_FLAGS
+
+PKG_CONFIG_PATH=$prefix/lib/pkgconfig:/usr/lib/pkgconfig
+export PKG_CONFIG_PATH
index cfb800c2cf0e5e8493089f85d9a0463ec4b46fba..bf9a221558ba74ec328ba9f015ed94cc54f97e72 100755 (executable)
@@ -1,6 +1,10 @@
-#! /bin/sh -ex
+#! /bin/sh -e
 
 tool=${0##*/cross-}
 xtool=$(printf %s "$tool" | tr -c a-zA-Z0-9 x)
 eval flags=\$CROSS_${xtool}_FLAGS
-exec $CROSS_COMPILER_PREFIX $CROSS_ARCH-$tool $flags "$@"
+
+case ${CROSS_NATIVE_P-nil} in
+  t) exec $CROSS_COMPILER_PREFIX $tool $flags "$@" ;;
+  nil) exec $CROSS_COMPILER_PREFIX $CROSS_ARCH-$tool $flags "$@" ;;
+esac
index 5bd822ee2ee796ef2da82d34aaa88768cae4f4c4..4932b1484d38de704dda1252b9aa4fdae82b5588 100644 (file)
@@ -4,13 +4,5 @@ ANDROID_NDK_TARGETARCH=$CROSS_ARCH
 . $CROSSDIR/etc/android.sh
 . $CROSSDIR/etc/common-cross-config.site
 
-CROSS_gcc_FLAGS=" --sysroot=$ANDROID_NDK_SYSROOT \
-       -D__ANDROID_API__=$ANDROID_NDK_TARGETVER \
-       -isystem $ANDROID_NDK/sysroot/usr/include \
-       -isystem $ANDROID_NDK/sysroot/usr/include/$ANDROID_NDK_TARGETARCH \
-       -fPIE -pie"
-CROSS_gxx_FLAGS=$CROSS_gcc_FLAGS
-export CROSS_gcc_FLAGS
-
 CC="$CROSS_ARCH-gcc $CROSS_gcc_FLAGS"
 CXX="$CROSS_ARCH-g++ $CROSS_gxx_FLAGS"
index b1d01da132fb31378ac0b6940544c186f6a46ce5..0679213d9e8a5d843f4c5a519383bc9108764ecf 100644 (file)
@@ -5,8 +5,15 @@ libexecdir=\${exec_prefix}/lib
 sysconfdir=\${prefix}/etc
 
 host_alias=$CROSS_ARCH
-cross_compiling=yes
-CC="$CROSS_COMPILER_PREFIX$CROSS_ARCH-gcc$CROSS_CFLAGS"
 
-PKG_CONFIG_PATH=$prefix/lib/pkgconfig:/usr/lib/pkgconfig
-export PKG_CONFIG_PATH
+case ${CROSS_NATIVE_P-nil} in
+  t)
+    CC="${CROSS_COMPILER_PREFIX}gcc$CROSS_gcc_FLAGS"
+    CXX="${CROSS_COMPILER_PREFIX}g++$CROSS_gxx_FLAGS"
+    ;;
+  nil)
+    cross_compiling=yes
+    CC="$CROSS_COMPILER_PREFIX$CROSS_ARCH-gcc$CROSS_gcc_FLAGS"
+    CXX="$CROSS_COMPILER_PREFIX$CROSS_ARCH-g++$CROSS_gxx_FLAGS"
+    ;;
+esac
index 5335d59864fa1869912de3d9ccf97eb4f6d25274..6ba0ef0f29ebfbdeb8cbad36d4f950ff487e61a0 100644 (file)
@@ -2,3 +2,6 @@
 
 CROSS_ARCH=@arch@
 QEMU_LD_PREFIX=/usr/$CROSS_ARCH; export QEMU_LD_PREFIX
+
+PKG_CONFIG_PATH=$prefix/lib/pkgconfig:/usr/lib/pkgconfig
+export PKG_CONFIG_PATH
diff --git a/linux-native-setup.sh.in b/linux-native-setup.sh.in
new file mode 100644 (file)
index 0000000..3b94110
--- /dev/null
@@ -0,0 +1,18 @@
+### -*-sh-*-
+
+CROSS_ARCH=@arch@
+case $CROSS_ARCH in
+  i686-linux-gnu) CROSS_gcc_FLAGS=" -m32" ;;
+  x86_64-linux-gnu) CROSS_gcc_FLAGS=" -m64" ;;
+  *)
+    echo 2>&1 "${0##*/}: unrecognized native architecture \`$CROSS_ARCH'";
+    exit 2
+    ;;
+esac
+CROSS_gxx_FLAGS=$CROSS_gcc_FLAGS
+export CROSS_gcc_FLAGS CROSS_gxx_FLAGS
+
+PKG_CONFIG_PATH=$prefix/lib/pkgconfig:/usr/lib/pkgconfig
+export PKG_CONFIG_PATH
+
+CROSS_NATIVE_P=t; export CROSS_NATIVE_P