copapy/tools/crosscompile.sh

66 lines
2.2 KiB
Bash
Raw Permalink Normal View History

2025-10-04 20:57:45 +00:00
#!/bin/bash
set -e
set -v
2025-10-07 21:23:14 +00:00
2025-11-12 23:29:48 +00:00
mkdir -p build/stencils
SRC=build/stencils/stencils.c
STMP=build/stencils/stencils.o
2025-10-04 20:57:45 +00:00
DEST=src/copapy/obj
2025-10-04 20:59:53 +00:00
OPT=O3
FLAGS="-fno-pic -ffunction-sections"
2025-10-07 21:23:14 +00:00
2025-10-04 20:57:45 +00:00
mkdir -p $DEST
echo "Precompiled objects:"
ls /object_files/
# -------------- Compile stencils --------------
python3 stencils/generate_stencils.py $SRC
2025-11-10 19:09:54 +00:00
# x86_64
gcc-13 $FLAGS -$OPT -c $SRC -o $STMP
ld -r $STMP /object_files/musl_objects_x86_64.o -o $DEST/stencils_x86_64_$OPT.o
2025-10-08 21:15:14 +00:00
2025-11-10 19:09:54 +00:00
# x86 - 32 bit
i686-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $STMP
i686-linux-gnu-ld -r $STMP /object_files/musl_objects_x86.o -o $DEST/stencils_x86_$OPT.o
2025-10-08 21:15:14 +00:00
# ARM64 linux (aarch64)
aarch64-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $STMP
aarch64-linux-gnu-ld -r $STMP /object_files/musl_objects_arm64.o -o $DEST/stencils_arm64_$OPT.o
# ARMv6 hardware fp
2025-11-23 16:55:45 +00:00
arm-none-eabi-gcc -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm $FLAGS -$OPT -c $SRC -o $STMP
LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name)
arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv6.o $LIBGCC -o $DEST/stencils_armv6_$OPT.o
# ARMv7 hardware fp
2025-11-23 16:55:45 +00:00
arm-none-eabi-gcc -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm $FLAGS -$OPT -c $SRC -o $STMP
LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name)
arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv7.o $LIBGCC -o $DEST/stencils_armv7_$OPT.o
2025-10-04 20:57:45 +00:00
2025-12-28 17:29:53 +00:00
# Armv7 Thumb for Cortex-M3..7 hardware fp
2025-12-30 18:13:42 +00:00
arm-none-eabi-gcc -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb $FLAGS -$OPT -c $SRC -o $STMP
2025-12-28 17:29:53 +00:00
LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name)
arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv7thumb.o $LIBGCC -o $DEST/stencils_armv7thumb_$OPT.o
2025-10-04 20:57:45 +00:00
# PowerPC64LE
# powerpc64le-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_ppc64le_$OPT.o
2025-10-04 20:57:45 +00:00
# S390x
# s390x-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_s390x_$OPT.o
2025-10-08 21:21:51 +00:00
# Mips (Big Endian)
#mips-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_mips_$OPT.o
2025-10-04 20:57:45 +00:00
2025-10-08 21:21:51 +00:00
# Mips (Little Endian)
#mipsel-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_mipsel_$OPT.o
2025-10-04 20:57:45 +00:00
# RISCV 32 Bit
2025-11-10 19:09:54 +00:00
# riscv64-linux-gnu-gcc-13 $FLAGS -$OPT -march=rv32imac -mabi=ilp32 -c $SRC -o $DEST/stencils_riscv_$OPT.o
2025-10-04 20:57:45 +00:00
# RISCV 64 Bit
#riscv64-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_riscv64_$OPT.o