2025-09-07 21:12:31 +00:00
|
|
|
#!/bin/bash
|
2026-01-01 14:20:09 +00:00
|
|
|
set -eux
|
|
|
|
|
|
|
|
|
|
ARCH=${1:-x86_64}
|
|
|
|
|
|
|
|
|
|
case "$ARCH" in
|
2026-01-26 22:57:15 +00:00
|
|
|
(x86_64|arm-v6|arm-v7|arm-v7-thumb|all)
|
2026-01-01 14:20:09 +00:00
|
|
|
;;
|
|
|
|
|
(*)
|
2026-01-26 22:57:15 +00:00
|
|
|
echo "Usage: $0 [x86_64|arm-v6|arm-v7|arm-v6-thumb|all]"
|
2026-01-01 14:20:09 +00:00
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
2025-11-23 16:46:03 +00:00
|
|
|
|
|
|
|
|
mkdir -p build/stencils
|
|
|
|
|
mkdir -p build/runner
|
|
|
|
|
|
2025-11-12 23:29:48 +00:00
|
|
|
SRC=build/stencils/stencils.c
|
2025-10-04 20:57:45 +00:00
|
|
|
DEST=src/copapy/obj
|
2025-10-22 21:17:53 +00:00
|
|
|
python3 stencils/generate_stencils.py $SRC
|
2025-10-04 20:57:45 +00:00
|
|
|
mkdir -p $DEST
|
2025-11-23 16:46:03 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
#######################################
|
|
|
|
|
# x86_64
|
|
|
|
|
#######################################
|
|
|
|
|
if [[ "$ARCH" == "x86_64" || "$ARCH" == "all" ]]; then
|
|
|
|
|
echo "--------------x86_64----------------"
|
|
|
|
|
|
|
|
|
|
gcc -fno-pic -ffunction-sections -c $SRC -O3 -o build/stencils/stencils.o
|
|
|
|
|
ld -r build/stencils/stencils.o build/musl/musl_objects_x86_64.o \
|
|
|
|
|
-o $DEST/stencils_x86_64_O3.o
|
|
|
|
|
objdump -d -x $DEST/stencils_x86_64_O3.o \
|
|
|
|
|
> build/stencils/stencils_x86_64_O3.asm
|
|
|
|
|
|
|
|
|
|
mkdir -p bin
|
|
|
|
|
gcc -Wall -Wextra -Wconversion -Wsign-conversion \
|
|
|
|
|
-Wshadow -Wstrict-overflow -Werror -g -O3 \
|
|
|
|
|
-DENABLE_LOGGING \
|
|
|
|
|
src/coparun/runmem.c \
|
|
|
|
|
src/coparun/coparun.c \
|
|
|
|
|
src/coparun/mem_man.c \
|
|
|
|
|
-o build/runner/coparun
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
|
# ARM v6
|
|
|
|
|
#######################################
|
|
|
|
|
if [[ "$ARCH" == "arm-v6" || "$ARCH" == "all" ]]; then
|
|
|
|
|
echo "--------------arm-v6 32 bit----------------"
|
|
|
|
|
|
|
|
|
|
LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name)
|
|
|
|
|
|
|
|
|
|
arm-none-eabi-gcc -fno-pic -ffunction-sections \
|
|
|
|
|
-march=armv6 -mfpu=vfp -mfloat-abi=hard -marm \
|
|
|
|
|
-c $SRC -O3 -o build/stencils/stencils.o
|
|
|
|
|
|
|
|
|
|
arm-none-eabi-ld -r \
|
|
|
|
|
build/stencils/stencils.o \
|
|
|
|
|
build/musl/musl_objects_armv6.o \
|
|
|
|
|
$LIBGCC \
|
|
|
|
|
-o $DEST/stencils_armv6_O3.o
|
|
|
|
|
|
|
|
|
|
arm-none-eabi-objdump -d -x \
|
|
|
|
|
$DEST/stencils_armv6_O3.o \
|
|
|
|
|
> build/stencils/stencils_armv6_O3.asm
|
2025-09-30 21:18:58 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
arm-linux-gnueabihf-gcc \
|
|
|
|
|
-march=armv6 -mfpu=vfp -mfloat-abi=hard -marm -static \
|
|
|
|
|
-Wall -Wextra -Wconversion -Wsign-conversion \
|
|
|
|
|
-Wshadow -Wstrict-overflow -O3 \
|
|
|
|
|
-DENABLE_LOGGING \
|
|
|
|
|
src/coparun/runmem.c \
|
|
|
|
|
src/coparun/coparun.c \
|
|
|
|
|
src/coparun/mem_man.c \
|
|
|
|
|
-o build/runner/coparun-armv6
|
|
|
|
|
fi
|
2025-11-23 16:46:03 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
#######################################
|
|
|
|
|
# ARM v7
|
|
|
|
|
#######################################
|
|
|
|
|
if [[ "$ARCH" == "arm-v7" || "$ARCH" == "all" ]]; then
|
|
|
|
|
echo "--------------arm-v7 32 bit----------------"
|
2025-11-23 16:46:03 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name)
|
2025-12-22 17:47:47 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
arm-none-eabi-gcc -fno-pic -ffunction-sections \
|
|
|
|
|
-march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm \
|
|
|
|
|
-c $SRC -O3 -o build/stencils/stencils.o
|
2025-12-22 17:47:47 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
arm-none-eabi-ld -r \
|
|
|
|
|
build/stencils/stencils.o \
|
|
|
|
|
build/musl/musl_objects_armv7.o \
|
|
|
|
|
$LIBGCC \
|
|
|
|
|
-o $DEST/stencils_armv7_O3.o
|
2025-12-22 17:47:47 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
arm-none-eabi-objdump -d -x \
|
|
|
|
|
$DEST/stencils_armv7_O3.o \
|
|
|
|
|
> build/stencils/stencils_armv7_O3.asm
|
2025-11-24 08:41:34 +00:00
|
|
|
|
2026-01-01 14:20:09 +00:00
|
|
|
arm-linux-gnueabihf-gcc \
|
|
|
|
|
-march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm -static \
|
|
|
|
|
-Wall -Wextra -Wconversion -Wsign-conversion \
|
|
|
|
|
-Wshadow -Wstrict-overflow -O3 \
|
|
|
|
|
-DENABLE_LOGGING \
|
|
|
|
|
src/coparun/runmem.c \
|
|
|
|
|
src/coparun/coparun.c \
|
|
|
|
|
src/coparun/mem_man.c \
|
|
|
|
|
-o build/runner/coparun-armv7
|
|
|
|
|
fi
|
2026-01-26 22:57:15 +00:00
|
|
|
|
|
|
|
|
#######################################
|
|
|
|
|
# ARM v7 thumb
|
|
|
|
|
#######################################
|
|
|
|
|
if [[ "$ARCH" == "arm-v7-thumb" || "$ARCH" == "all" ]]; then
|
|
|
|
|
echo "--------------arm-v7-thumb 32 bit----------------"
|
|
|
|
|
|
|
|
|
|
LIBGCC=$(arm-none-eabi-gcc -print-libgcc-file-name)
|
|
|
|
|
|
|
|
|
|
arm-none-eabi-gcc -fno-pic -ffunction-sections \
|
|
|
|
|
-march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb \
|
|
|
|
|
-c $SRC -O3 -o build/stencils/stencils.o
|
|
|
|
|
|
|
|
|
|
arm-none-eabi-ld -r \
|
|
|
|
|
build/stencils/stencils.o \
|
|
|
|
|
build/musl/musl_objects_armv7thumb.o \
|
|
|
|
|
$LIBGCC \
|
|
|
|
|
-o $DEST/stencils_armv7thumb_O3.o
|
|
|
|
|
|
|
|
|
|
arm-none-eabi-objdump -d -x \
|
|
|
|
|
$DEST/stencils_armv7thumb_O3.o \
|
|
|
|
|
> build/stencils/stencils_armv7thumb_O3.asm
|
|
|
|
|
|
|
|
|
|
arm-linux-gnueabihf-gcc \
|
|
|
|
|
-march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -mthumb -static \
|
|
|
|
|
-Wall -Wextra -Wconversion -Wsign-conversion \
|
|
|
|
|
-Wshadow -Wstrict-overflow -O3 \
|
|
|
|
|
-DENABLE_LOGGING \
|
|
|
|
|
src/coparun/runmem.c \
|
|
|
|
|
src/coparun/coparun.c \
|
|
|
|
|
src/coparun/mem_man.c \
|
|
|
|
|
-o build/runner/coparun-armv7thumb
|
|
|
|
|
fi
|