Bring things to new compile-r7rs

This commit is contained in:
retropikzel 2025-07-19 17:00:10 +03:00
parent e0c37c7b8d
commit 946a1145a7
1 changed files with 39 additions and 38 deletions

View File

@ -5,6 +5,7 @@ DOCKER_INIT=cd /workdir && make clean &&
VERSION=$(shell awk '/version:/{ print $$2 }' README.md ) VERSION=$(shell awk '/version:/{ print $$2 }' README.md )
TEST=primitives TEST=primitives
SCHEME=chibi SCHEME=chibi
TMPDIR=tmp/${SCHEME}
all: build all: build
@ -26,53 +27,53 @@ uninstall:
install-jenkins: install-jenkins:
snow-chibi --impls=${SCHEME} --always-yes install foreign-c-${VERSION}.tgz snow-chibi --impls=${SCHEME} --always-yes install foreign-c-${VERSION}.tgz
test-java: tmp/test/libtest.o tmp/test/libtest.so tmp/test/libtest.a test-java: ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.a
mkdir -p tmp/test mkdir -p ${TMPDIR}/test
cp kawa.jar tmp/test/ cp kawa.jar ${TMPDIR}/test/
cp -r foreign tmp/test/ cp -r foreign ${TMPDIR}/test/
cp tests/*.scm tmp/test/ cp tests/*.scm ${TMPDIR}/test/
cp tests/c-include/libtest.h tmp/test/ cp tests/c-include/libtest.h ${TMPDIR}/test/
cd tmp/test \ cd ${TMPDIR}/test \
&& ${JAVA_HOME}/bin/java --add-exports java.base/jdk.internal.foreign.abi=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign.layout=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign=ALL-UNNAMED --enable-native-access=ALL-UNNAMED --enable-preview -jar kawa.jar --r7rs --full-tailcalls -Dkawa.import.path=*.sld:./snow/*.sld:./snow/retropikzel/*.sld ${TEST}.scm && ${JAVA_HOME}/bin/java --add-exports java.base/jdk.internal.foreign.abi=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign.layout=ALL-UNNAMED --add-exports java.base/jdk.internal.foreign=ALL-UNNAMED --enable-native-access=ALL-UNNAMED --enable-preview -jar kawa.jar --r7rs --full-tailcalls -Dkawa.import.path=*.sld:./snow/*.sld:./snow/retropikzel/*.sld ${TEST}.scm
test-chibi: tmp/test/libtest.o tmp/test/libtest.so tmp/test/libtest.a test-chibi: ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.a
make chibi make chibi
mkdir -p tmp/test mkdir -p ${TMPDIR}/test
cp kawa.jar tmp/test/ cp kawa.jar ${TMPDIR}/test/
cp -r foreign tmp/test/ cp -r foreign ${TMPDIR}/test/
cp tests/*.scm tmp/test/ cp tests/*.scm ${TMPDIR}/test/
cp tests/c-include/libtest.h tmp/test/ cp tests/c-include/libtest.h ${TMPDIR}/test/
cd tmp/test && chibi-scheme -I . ${TEST}.scm cd ${TMPDIR}/test && chibi-scheme -I . ${TEST}.scm
test: tmp/test/libtest.o tmp/test/libtest.so tmp/test/libtest.a test: ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.a
make ${SCHEME} make ${SCHEME}
cp -r foreign tmp/test/ cp -r foreign ${TMPDIR}/test/
cp tests/*.scm tmp/test/ cp tests/*.scm ${TMPDIR}/test/
cp tests/c-include/libtest.h tmp/test/ cp tests/c-include/libtest.h ${TMPDIR}/test/
cd tmp/test && \ cd ${TMPDIR}/test && \
COMPILE_R7RS_CHICKEN="-L -ltest -I. -L." \ COMPILE_R7RS_CHICKEN="-L -ltest -I. -L." \
COMPILE_R7RS_KAWA="-J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -J--enable-preview" \ COMPILE_R7RS_KAWA="-J--add-exports=java.base/jdk.internal.foreign.abi=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign.layout=ALL-UNNAMED -J--add-exports=java.base/jdk.internal.foreign=ALL-UNNAMED -J--enable-native-access=ALL-UNNAMED -J--enable-preview" \
COMPILE_R7RS=${SCHEME} \ COMPILE_R7RS=${SCHEME} \
compile-r7rs -I . -I /usr/local/share/kawa/lib -o ${TEST} ${TEST}.scm compile-r7rs -I . -I /usr/local/share/kawa/lib -o ${TEST} ${TEST}.scm
cd tmp/test && \ cd ${TMPDIR}/test && \
LD_LIBRARY_PATH=. \ LD_LIBRARY_PATH=. \
GUILE_AUTO_COMPILE=0 \ GUILE_AUTO_COMPILE=0 \
./${TEST} ./${TEST}
test-compile-r7rs-snow: tmp/test/libtest.o tmp/test/libtest.so tmp/test/libtest.a test-compile-r7rs-snow: ${TMPDIR}/test/libtest.o ${TMPDIR}/test/libtest.so ${TMPDIR}/test/libtest.a
cp tests/*.scm tmp/test/ cp tests/*.scm ${TMPDIR}/test/
cp tests/c-include/libtest.h tmp/test/ cp tests/c-include/libtest.h ${TMPDIR}/test/
cd tmp/test && \ cd ${TMPDIR}/test && \
compile-r7rs -o hello hello.scm compile-r7rs -o hello hello.scm
cd tmp/test && ./hello cd ${TMPDIR}/test && ./hello
test-compile-r7rs-wine: test-compile-r7rs-wine:
cp -r foreign tmp/test/ cp -r foreign ${TMPDIR}/test/
cp tests/*.scm tmp/test/ cp tests/*.scm ${TMPDIR}/test/
cp tests/c-include/libtest.h tmp/test/ cp tests/c-include/libtest.h ${TMPDIR}/test/
cd tmp/test && \ cd ${TMPDIR}/test && \
wine "${HOME}/.wine/drive_c/Program Files (x86)/compile-r7rs/compile-r7rs.bat" -I . -o ${TEST} ${TEST}.scm wine "${HOME}/.wine/drive_c/Program Files (x86)/compile-r7rs/compile-r7rs.bat" -I . -o ${TEST} ${TEST}.scm
cd tmp/test && \ cd ${TMPDIR}/test && \
LD_LIBRARY_PATH=. \ LD_LIBRARY_PATH=. \
wine ./${TEST}.bat wine ./${TEST}.bat
@ -80,16 +81,16 @@ test-docker:
docker build --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f dockerfiles/Dockerfile.test . docker build --build-arg SCHEME=${SCHEME} --tag=foreign-c-test-${SCHEME} -f dockerfiles/Dockerfile.test .
docker run -it -v "${PWD}:/workdir" -w /workdir -t foreign-c-test-${SCHEME} sh -c "make SCHEME=${SCHEME} TEST=${TEST} test" docker run -it -v "${PWD}:/workdir" -w /workdir -t foreign-c-test-${SCHEME} sh -c "make SCHEME=${SCHEME} TEST=${TEST} test"
tmp/test/libtest.o: tests/c-src/libtest.c ${TMPDIR}/test/libtest.o: tests/c-src/libtest.c
mkdir -p tmp/test mkdir -p ${TMPDIR}/test
${CC} -o tmp/test/libtest.o -fPIC -c tests/c-src/libtest.c -I./include ${CC} -o ${TMPDIR}/test/libtest.o -fPIC -c tests/c-src/libtest.c -I./include
tmp/test/libtest.so: tests/c-src/libtest.c ${TMPDIR}/test/libtest.so: tests/c-src/libtest.c
mkdir -p tmp/test mkdir -p ${TMPDIR}/test
${CC} -o tmp/test/libtest.so -shared -fPIC tests/c-src/libtest.c -I./include ${CC} -o ${TMPDIR}/test/libtest.so -shared -fPIC tests/c-src/libtest.c -I./include
tmp/test/libtest.a: tmp/test/libtest.o tests/c-src/libtest.c ${TMPDIR}/test/libtest.a: ${TMPDIR}/test/libtest.o tests/c-src/libtest.c
ar rcs tmp/test/libtest.a tmp/test/libtest.o ar rcs ${TMPDIR}/test/libtest.a ${TMPDIR}/test/libtest.o
documentation/foreign-c.html: documentation/foreign-c.html: