aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo Buehler <tb@openbsd.org>2026-01-26 07:22:23 +0100
committerTheo Buehler <tb@openbsd.org>2026-01-26 07:22:23 +0100
commitd0127ebaf2bfce3f616922c4cea751c0a7ac705e (patch)
treead6a28ef7bf0a61238ba86532cca3b427870ae6b
parent022cafc5dc114c731f06f9b73508d001ddc4f825 (diff)
parent836c23eb15c1d4c2d408f22c7e2e34e87a3697c2 (diff)
downloadportable-d0127ebaf2bfce3f616922c4cea751c0a7ac705e.tar.gz
portable-d0127ebaf2bfce3f616922c4cea751c0a7ac705e.tar.bz2
portable-d0127ebaf2bfce3f616922c4cea751c0a7ac705e.zip
Land #1227 - add missing env vars for cross compilation
-rwxr-xr-xscripts/test60
1 files changed, 46 insertions, 14 deletions
diff --git a/scripts/test b/scripts/test
index a7ce1ea..2148d52 100755
--- a/scripts/test
+++ b/scripts/test
@@ -12,6 +12,35 @@ fi
12 12
13ENABLE_ASM="${ENABLE_ASM:=ON}" 13ENABLE_ASM="${ENABLE_ASM:=ON}"
14 14
15# setup_cross_compiler sets up environment variables for cross-compilation with the given prefix.
16setup_cross_compiler() {
17 cross_prefix=$1
18
19 CC=${cross_prefix}-gcc
20 CXX=${cross_prefix}-g++
21 AR=${cross_prefix}-ar
22 STRIP=${cross_prefix}-strip
23 RANLIB=${cross_prefix}-ranlib
24
25 # If the unversioned symlink for gcc doesn't exist, find versioned binary.
26 if ! command -v "$CC" >/dev/null 2>&1; then
27 gcc_ver=$(find /usr/bin -name "${CC}-[0-9]*" -prune 2>/dev/null \
28 | sed "s/.*${CC}-//" | sort -n | tail -n 1)
29 CC=${CC}-${gcc_ver}
30 CXX=${CXX}-${gcc_ver}
31 fi
32
33 # Check all binaries actually exist.
34 for c in "$CC" "$CXX" "$AR" "$STRIP" "$RANLIB"; do
35 if ! command -v "$c" >/dev/null 2>&1; then
36 echo "##### Error: $c not found"
37 exit 1
38 fi
39 done
40
41 echo "##### Using $($CC --version | head -n 1)"
42}
43
15if type apt-get >/dev/null 2>&1; then 44if type apt-get >/dev/null 2>&1; then
16 sudo apt-get update 45 sudo apt-get update
17 sudo apt-get install -y cmake ninja-build 46 sudo apt-get install -y cmake ninja-build
@@ -87,7 +116,7 @@ elif [ "$ARCH" = "native" ]; then
87 ninja test 116 ninja test
88 ) 117 )
89 118
90elif [ "$ARCH" = "mingw32" -o "$ARCH" = "mingw64" ]; then 119elif [ "$ARCH" = "mingw32" ] || [ "$ARCH" = "mingw64" ]; then
91 CPU=i686 120 CPU=i686
92 if [ "$ARCH" = "mingw64" ]; then 121 if [ "$ARCH" = "mingw64" ]; then
93 CPU=x86_64 122 CPU=x86_64
@@ -115,54 +144,57 @@ elif [ "$ARCH" = "mingw32" -o "$ARCH" = "mingw64" ]; then
115 ninja -j 4 144 ninja -j 4
116 ) 145 )
117 146
118elif [ "$ARCH" = "arm32" -o "$ARCH" = "arm64" ]; then 147elif [ "$ARCH" = "arm32" ] || [ "$ARCH" = "arm64" ]; then
119 sudo apt-get install -y qemu-user-static binfmt-support 148 sudo apt-get install -y qemu-user-static binfmt-support
120 149
121 if [ "$ARCH" = "arm32" ]; then 150 if [ "$ARCH" = "arm32" ]; then
122 sudo apt-get install -y g++-arm-linux-gnueabihf 151 sudo apt-get install -y g++-arm-linux-gnueabihf
123 sudo ln -sf /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/ 152 sudo ln -sf /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/
153 setup_cross_compiler arm-linux-gnueabihf
154
124 ./configure --host=arm-linux-gnueabihf 155 ./configure --host=arm-linux-gnueabihf
125 LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib make -j 4 check 156 LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib make -j 4 check
126 else 157 else
127 sudo apt-get install -y g++-aarch64-linux-gnu 158 sudo apt-get install -y g++-aarch64-linux-gnu
128 sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ 159 sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/
160 setup_cross_compiler aarch64-linux-gnu
161
129 ./configure --host=aarch64-linux-gnu 162 ./configure --host=aarch64-linux-gnu
130 LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib make -j 4 check 163 LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib make -j 4 check
131 fi 164 fi
132 165
133 file apps/openssl/.libs/openssl 166 file apps/openssl/openssl
134 167
135elif [ "$ARCH" = "loong64" ]; then 168elif [ "$ARCH" = "loong64" ]; then
136 sudo apt install -y qemu-user-static binfmt-support g++-14-loongarch64-linux-gnu 169 sudo apt install -y qemu-user-static binfmt-support g++-14-loongarch64-linux-gnu
137 sudo ln -sf /usr/loongarch64-linux-gnu/lib64/ld-linux-loongarch-lp64d.so.1 /lib64 170 sudo ln -sf /usr/loongarch64-linux-gnu/lib64/ld-linux-loongarch-lp64d.so.1 /lib64
138 171 setup_cross_compiler loongarch64-linux-gnu
139 CC=loongarch64-linux-gnu-gcc-14
140 CXX=loongarch64-linux-gnu++-14
141 AR=loongarch64-linux-gnu-ar
142 STRIP=loongarch64-linux-gnu-strip-14
143 RANLIB=loongarch64-linux-gnu-ranlib
144 172
145 ./configure --host=loongarch64-linux-gnu 173 ./configure --host=loongarch64-linux-gnu
146 LD_LIBRARY_PATH=/usr/loongarch64-linux-gnu/lib make -j 4 check 174 LD_LIBRARY_PATH=/usr/loongarch64-linux-gnu/lib make -j 4 check
147 175
148 file apps/openssl/openssl 176 file apps/openssl/openssl
149 177
150elif [ "$ARCH" = "mips32" -o "$ARCH" = "mips64" ]; then 178elif [ "$ARCH" = "mips32" ] || [ "$ARCH" = "mips64" ]; then
151 sudo apt-get install -y qemu-user-static binfmt-support 179 sudo apt-get install -y qemu-user-static binfmt-support
152 180
153 if [ "$ARCH" = "mips32" ]; then 181 if [ "$ARCH" = "mips32" ]; then
154 sudo apt-get install -y g++-mips-linux-gnu 182 sudo apt-get install -y g++-mips-linux-gnu
155 sudo ln -sf /usr/mipsel-linux-gnu/lib/ld.so.1 /lib/ 183 sudo ln -sf /usr/mips-linux-gnu/lib/ld.so.1 /lib/
156 ./configure --host=mipsel-linux-gnu 184 setup_cross_compiler mips-linux-gnu
157 LD_LIBRARY_PATH=/usr/mipsel-linux-gnu/lib make -j 4 check 185
186 ./configure --host=mips-linux-gnu
187 LD_LIBRARY_PATH=/usr/mips-linux-gnu/lib make -j 4 check
158 else 188 else
159 sudo apt-get install -y g++-mips64el-linux-gnuabi64 189 sudo apt-get install -y g++-mips64el-linux-gnuabi64
160 sudo ln -sf /usr/mips64el-linux-gnuabi64/lib64/ld.so.1 /lib64 190 sudo ln -sf /usr/mips64el-linux-gnuabi64/lib64/ld.so.1 /lib64
191 setup_cross_compiler mips64el-linux-gnuabi64
192
161 ./configure --host=mips64el-linux-gnuabi64 193 ./configure --host=mips64el-linux-gnuabi64
162 LD_LIBRARY_PATH=/usr/mips64el-linux-gnuabi64/lib make -j 4 check 194 LD_LIBRARY_PATH=/usr/mips64el-linux-gnuabi64/lib make -j 4 check
163 fi 195 fi
164 196
165 file apps/openssl/.libs/openssl 197 file apps/openssl/openssl
166 198
167elif [ "$ARCH" = "android" ]; then 199elif [ "$ARCH" = "android" ]; then
168 export TC_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake 200 export TC_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake