summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/generate-meson-crossfile.sh51
1 files changed, 51 insertions, 0 deletions
diff --git a/scripts/generate-meson-crossfile.sh b/scripts/generate-meson-crossfile.sh
new file mode 100755
index 0000000..31fc0e0
--- /dev/null
+++ b/scripts/generate-meson-crossfile.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+set -eu
+
+_target_endianess=little
+_target_cpu="$CARCH"
+
+case "$CARCH" in
+ mips*)
+ _target_endianness=big
+ _target_cpu_family=mips
+ ;;
+ arm*)
+ _target_cpu_family=arm
+ ;;
+ ppc64le)
+ _target_cpu_family=ppc64
+ ;;
+ aarch64|x86*)
+ # $CARCH maps 1:1 to _cpu_family for meson for these arches
+ _target_cpu_family="$CARCH"
+ ;;
+esac
+
+# Keep in mind that CC, CXX etc. are the binaries to compile from host
+# to target, not from host to host!
+cat > apk.cross <<EOF
+[binaries]
+c = '${CC}'
+cpp = '${CXX}'
+ar = '${AR}'
+nm = '${NM}'
+ld = '${LD}'
+strip = '${STRIP}'
+readelf = '${READELF}'
+objcopy = '${OBJCOPY}'
+pkgconfig = 'pkg-config'
+[properties]
+needs_exe_wrapper = true
+c_args = ['$(echo ${CFLAGS} | sed -r "s/\s+/','/g")']
+c_link_args = ['$(echo ${LDFLAGS} | sed -r "s/\s+/','/g")']
+cpp_args = ['$(echo ${CXXFLAGS} | sed -r "s/\s+/','/g")']
+cpp_link_args = ['$(echo ${LDFLAGS} | sed -r "s/\s+/','/g")']
+[host_machine]
+system = 'linux'
+cpu_family = '${_target_cpu_family}'
+cpu = '${_target_cpu}'
+endian = '${_target_endianess}'
+EOF
+
+echo "Generating crossfile is done. You can invoke meson with the cross file with 'meson --cross apk.cross' now."