aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Sing <joshua@joshuasing.dev>2026-01-25 03:46:28 +1100
committerJoshua Sing <joshua@joshuasing.dev>2026-01-25 06:12:27 +1100
commit3474d66b13bec7b9c04c797296091ae6a12df05a (patch)
tree6a9ee51dd658610ccc35b1c0d9c3c987165f73d0
parent022cafc5dc114c731f06f9b73508d001ddc4f825 (diff)
downloadportable-3474d66b13bec7b9c04c797296091ae6a12df05a.tar.gz
portable-3474d66b13bec7b9c04c797296091ae6a12df05a.tar.bz2
portable-3474d66b13bec7b9c04c797296091ae6a12df05a.zip
scripts/test: fix missing env vars for cross-compilation
-rwxr-xr-xscripts/test58
1 files changed, 44 insertions, 14 deletions
diff --git a/scripts/test b/scripts/test
index a7ce1ea..1c00e61 100755
--- a/scripts/test
+++ b/scripts/test
@@ -12,6 +12,33 @@ 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 # Use unversioned symlink if available, otherwise find versioned binary
20 if command -v "${cross_prefix}-gcc" >/dev/null 2>&1; then
21 CC=${cross_prefix}-gcc
22 CXX=${cross_prefix}-g++
23 else
24 gcc_ver=$(find /usr/bin -maxdepth 1 -name "${cross_prefix}-gcc-[0-9]*" 2>/dev/null \
25 | sed "s/.*${cross_prefix}-gcc-//" | sort -V | tail -1)
26 CC=${cross_prefix}-gcc-${gcc_ver}
27 CXX=${cross_prefix}-g++-${gcc_ver}
28 fi
29
30 if ! command -v "${CC}" >/dev/null 2>&1; then
31 echo "##### Error: ${CC} not found in PATH"
32 exit 1
33 fi
34
35 AR=${cross_prefix}-ar
36 STRIP=${cross_prefix}-strip
37 RANLIB=${cross_prefix}-ranlib
38
39 echo "##### Using $($CC --version | head -1)"
40}
41
15if type apt-get >/dev/null 2>&1; then 42if type apt-get >/dev/null 2>&1; then
16 sudo apt-get update 43 sudo apt-get update
17 sudo apt-get install -y cmake ninja-build 44 sudo apt-get install -y cmake ninja-build
@@ -87,7 +114,7 @@ elif [ "$ARCH" = "native" ]; then
87 ninja test 114 ninja test
88 ) 115 )
89 116
90elif [ "$ARCH" = "mingw32" -o "$ARCH" = "mingw64" ]; then 117elif [ "$ARCH" = "mingw32" ] || [ "$ARCH" = "mingw64" ]; then
91 CPU=i686 118 CPU=i686
92 if [ "$ARCH" = "mingw64" ]; then 119 if [ "$ARCH" = "mingw64" ]; then
93 CPU=x86_64 120 CPU=x86_64
@@ -115,54 +142,57 @@ elif [ "$ARCH" = "mingw32" -o "$ARCH" = "mingw64" ]; then
115 ninja -j 4 142 ninja -j 4
116 ) 143 )
117 144
118elif [ "$ARCH" = "arm32" -o "$ARCH" = "arm64" ]; then 145elif [ "$ARCH" = "arm32" ] || [ "$ARCH" = "arm64" ]; then
119 sudo apt-get install -y qemu-user-static binfmt-support 146 sudo apt-get install -y qemu-user-static binfmt-support
120 147
121 if [ "$ARCH" = "arm32" ]; then 148 if [ "$ARCH" = "arm32" ]; then
122 sudo apt-get install -y g++-arm-linux-gnueabihf 149 sudo apt-get install -y g++-arm-linux-gnueabihf
123 sudo ln -sf /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/ 150 sudo ln -sf /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/
151 setup_cross_compiler arm-linux-gnueabihf
152
124 ./configure --host=arm-linux-gnueabihf 153 ./configure --host=arm-linux-gnueabihf
125 LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib make -j 4 check 154 LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib make -j 4 check
126 else 155 else
127 sudo apt-get install -y g++-aarch64-linux-gnu 156 sudo apt-get install -y g++-aarch64-linux-gnu
128 sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ 157 sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/
158 setup_cross_compiler aarch64-linux-gnu
159
129 ./configure --host=aarch64-linux-gnu 160 ./configure --host=aarch64-linux-gnu
130 LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib make -j 4 check 161 LD_LIBRARY_PATH=/usr/aarch64-linux-gnu/lib make -j 4 check
131 fi 162 fi
132 163
133 file apps/openssl/.libs/openssl 164 file apps/openssl/openssl
134 165
135elif [ "$ARCH" = "loong64" ]; then 166elif [ "$ARCH" = "loong64" ]; then
136 sudo apt install -y qemu-user-static binfmt-support g++-14-loongarch64-linux-gnu 167 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 168 sudo ln -sf /usr/loongarch64-linux-gnu/lib64/ld-linux-loongarch-lp64d.so.1 /lib64
138 169 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 170
145 ./configure --host=loongarch64-linux-gnu 171 ./configure --host=loongarch64-linux-gnu
146 LD_LIBRARY_PATH=/usr/loongarch64-linux-gnu/lib make -j 4 check 172 LD_LIBRARY_PATH=/usr/loongarch64-linux-gnu/lib make -j 4 check
147 173
148 file apps/openssl/openssl 174 file apps/openssl/openssl
149 175
150elif [ "$ARCH" = "mips32" -o "$ARCH" = "mips64" ]; then 176elif [ "$ARCH" = "mips32" ] || [ "$ARCH" = "mips64" ]; then
151 sudo apt-get install -y qemu-user-static binfmt-support 177 sudo apt-get install -y qemu-user-static binfmt-support
152 178
153 if [ "$ARCH" = "mips32" ]; then 179 if [ "$ARCH" = "mips32" ]; then
154 sudo apt-get install -y g++-mips-linux-gnu 180 sudo apt-get install -y g++-mips-linux-gnu
155 sudo ln -sf /usr/mipsel-linux-gnu/lib/ld.so.1 /lib/ 181 sudo ln -sf /usr/mips-linux-gnu/lib/ld.so.1 /lib/
156 ./configure --host=mipsel-linux-gnu 182 setup_cross_compiler mips-linux-gnu
157 LD_LIBRARY_PATH=/usr/mipsel-linux-gnu/lib make -j 4 check 183
184 ./configure --host=mips-linux-gnu
185 LD_LIBRARY_PATH=/usr/mips-linux-gnu/lib make -j 4 check
158 else 186 else
159 sudo apt-get install -y g++-mips64el-linux-gnuabi64 187 sudo apt-get install -y g++-mips64el-linux-gnuabi64
160 sudo ln -sf /usr/mips64el-linux-gnuabi64/lib64/ld.so.1 /lib64 188 sudo ln -sf /usr/mips64el-linux-gnuabi64/lib64/ld.so.1 /lib64
189 setup_cross_compiler mips64el-linux-gnuabi64
190
161 ./configure --host=mips64el-linux-gnuabi64 191 ./configure --host=mips64el-linux-gnuabi64
162 LD_LIBRARY_PATH=/usr/mips64el-linux-gnuabi64/lib make -j 4 check 192 LD_LIBRARY_PATH=/usr/mips64el-linux-gnuabi64/lib make -j 4 check
163 fi 193 fi
164 194
165 file apps/openssl/.libs/openssl 195 file apps/openssl/openssl
166 196
167elif [ "$ARCH" = "android" ]; then 197elif [ "$ARCH" = "android" ]; then
168 export TC_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake 198 export TC_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake