197 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
.PHONY=libtest.so
 | 
						|
CC=gcc
 | 
						|
DOCKER=docker run -it -v ${PWD}:/workdir
 | 
						|
DOCKER_INIT=cd /workdir && make clean &&
 | 
						|
 | 
						|
libtest.so: libtest.c
 | 
						|
	${CC} -o libtest.so -shared -fPIC libtest.c
 | 
						|
 | 
						|
libtest.a: libtest.c
 | 
						|
	${CC} -fPIC -c libtest.c
 | 
						|
	ar rcs libtest.a libtest.o
 | 
						|
 | 
						|
CHIBI=chibi-scheme -A .
 | 
						|
test-chibi-docker:
 | 
						|
	docker build -f Dockerfile --build-arg SCHEME=chibi --tag=r7rs-pffi-chibi .
 | 
						|
	${DOCKER} r7rs-pffi-chibi bash -c \
 | 
						|
		"${DOCKER_INIT} chibi-ffi retropikzel/r7rs-pffi/r7rs-pffi-chibi.stub \
 | 
						|
		&& ${CC} -o retropikzel/r7rs-pffi/r7rs-pffi-chibi.so -fPIC -shared retropikzel/r7rs-pffi/r7rs-pffi-chibi.c -lchibi-scheme -lffi \
 | 
						|
		&& ${CHIBI} test.scm"
 | 
						|
 | 
						|
retropikzel/r7rs-pffi/r7rs-pffi-chibi.c: retropikzel/r7rs-pffi/r7rs-pffi-chibi.stub
 | 
						|
	chibi-ffi retropikzel/r7rs-pffi/r7rs-pffi-chibi.stub
 | 
						|
 | 
						|
retropikzel/r7rs-pffi/r7rs-pffi-chibi.so: retropikzel/r7rs-pffi/r7rs-pffi-chibi.c
 | 
						|
	${CC} -o retropikzel/r7rs-pffi/r7rs-pffi-chibi.so \
 | 
						|
		retropikzel/r7rs-pffi/r7rs-pffi-chibi.c \
 | 
						|
		-fPIC \
 | 
						|
		-lffi \
 | 
						|
		-shared
 | 
						|
 | 
						|
test-chibi: retropikzel/r7rs-pffi/r7rs-pffi-chibi.so libtest.so
 | 
						|
	${CHIBI} test.scm
 | 
						|
 | 
						|
CHICKEN5=SCMC=csc CSC_FLAGS='-I. -L. -L -ltest' compile-r7rs -I . main.scm
 | 
						|
test-chicken-5-docker:
 | 
						|
	docker build --build-arg SCHEME=chicken:5 -f Dockerfile --tag=r7rs-pffi-chicken-5 .
 | 
						|
	${DOCKER} r7rs-pffi-chicken-5 bash -c "${DOCKER_INIT} ${CHICKEN5} test.scm && ./test"
 | 
						|
 | 
						|
test-chicken-5: clean libtest.a
 | 
						|
	${CHICKEN5} test.scm
 | 
						|
	./test
 | 
						|
 | 
						|
CHICKEN6=SCMC=csc CSC_FLAGS='-I. -L. -L -ltest' compile-r7rs -I . main.scm
 | 
						|
test-chicken-6-docker:
 | 
						|
	docker build --build-arg SCHEME=chicken:6 -f Dockerfile --tag=r7rs-pffi-chicken-6 .
 | 
						|
	cp retropikzel/r7rs-pffi.sld retropikzel.r7rs-pffi.sld
 | 
						|
	${DOCKER} r7rs-pffi-chicken-6 bash -c "${DOCKER_INIT} ${CHICKEN6} test.scm && ./test"
 | 
						|
 | 
						|
test-chicken-6: clean libtest.so
 | 
						|
	cp retropikzel/r7rs-pffi.sld retropikzel.r7rs-pffi.sld
 | 
						|
	${CHICKEN6_LIB} retropikzel.r7rs-pffi.sld
 | 
						|
	${CHICKEN6} test.scm && ./test
 | 
						|
 | 
						|
CYCLONE=cyclone -COPT -I. -A .
 | 
						|
test-cyclone-docker:
 | 
						|
	docker build --build-arg SCHEME=cyclone -f Dockerfile --tag=r7rs-pffi-cyclone .
 | 
						|
	${DOCKER} r7rs-pffi-cyclone bash -c "${DOCKER_INIT} ${CYCLONE} retropikzel/r7rs-pffi.sld && ${CYCLONE} test.scm && ./test"
 | 
						|
 | 
						|
test-cyclone: clean libtest.so
 | 
						|
	${CYCLONE} retropikzel/r7rs-pffi.sld
 | 
						|
	${CYCLONE} test.scm
 | 
						|
	./test
 | 
						|
 | 
						|
GAMBIT_LIB=gsc -:search=.
 | 
						|
GAMBIT_CC=gsc -exe ./ -nopreload
 | 
						|
test-gambit-docker:
 | 
						|
	docker build --build-arg SCHEME=gambit -f Dockerfile --tag=r7rs-pffi-gambit .
 | 
						|
	${DOCKER} r7rs-pffi-gambit bash -c "${DOCKER_INIT} ${GAMBIT_LIB} retropikzel/r7rs-pffi; echo $$? && ${GAMBIT_CC} test.scm; echo $$? && ./test -:search=.; echo $$?"
 | 
						|
 | 
						|
test-gambit: clean libtest.so
 | 
						|
	${GAMBIT_LIB} retropikzel/r7rs-pffi; echo $$?
 | 
						|
	${GAMBIT_CC} test.scm; echo $$?
 | 
						|
	./test -:search=.; echo $$?
 | 
						|
 | 
						|
test-gauche:
 | 
						|
	gosh -r7 -A . test.scm
 | 
						|
 | 
						|
GERBIL_LIB=gxc -O
 | 
						|
GERBIL=GERBIL_LOADPATH=. gxc r7rs
 | 
						|
test-gerbil-docker:
 | 
						|
	docker build --build-arg SCHEME=gerbil -f Dockerfile --tag=r7rs-pffi-gerbil .
 | 
						|
	${DOCKER} r7rs-pffi-gerbil bash -c "${DOCKER_INIT} ${GERBIL_LIB} retropikzel/r7rs-pffi.sld && ${GERBIL} test.scm"
 | 
						|
 | 
						|
test-gerbil:
 | 
						|
	${GERBIL} test.scm
 | 
						|
 | 
						|
GUILE=guile --r7rs --fresh-auto-compile -L .
 | 
						|
test-guile-docker:
 | 
						|
	docker build --build-arg SCHEME=guile:head -f Dockerfile --tag=r7rs-pffi-guile .
 | 
						|
	${DOCKER} r7rs-pffi-guile bash -c "${DOCKER_INIT} ${GUILE} test.scm"
 | 
						|
 | 
						|
test-guile: libtest.so
 | 
						|
	${GUILE} test.scm
 | 
						|
 | 
						|
KAWA=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
 | 
						|
test-kawa-docker:
 | 
						|
	docker build --build-arg SCHEME=kawa -f Dockerfile --tag=r7rs-pffi-kawa .
 | 
						|
	${DOCKER} r7rs-pffi-kawa bash -c "${DOCKER_INIT} ${KAWA} test.scm"
 | 
						|
 | 
						|
test-kawa: libtest.so
 | 
						|
	${KAWA} test.scm
 | 
						|
 | 
						|
LARCENY=larceny -r7 -I .
 | 
						|
test-larceny-docker:
 | 
						|
	docker build --build-arg SCHEME=larceny -f Dockerfile --tag=r7rs-pffi-larceny .
 | 
						|
	${DOCKER} r7rs-pffi-larceny bash -c "${DOCKER_INIT} ${LARCENY} test.scm"
 | 
						|
 | 
						|
test-larceny: libtest.so
 | 
						|
	${LARCENY} test.scm
 | 
						|
 | 
						|
MOSH=mosh --loadpath=.
 | 
						|
test-mosh-docker:
 | 
						|
	docker build --build-arg SCHEME=mosh -f Dockerfile --tag=r7rs-pffi-mosh .
 | 
						|
	${DOCKER} r7rs-pffi-mosh bash -c "${DOCKER_INIT} ${MOSH} test.scm"
 | 
						|
 | 
						|
test-mosh: libtest.so
 | 
						|
	${MOSH} test.scm
 | 
						|
 | 
						|
SASH=sash --clean-cache -r7 -L .
 | 
						|
test-sagittarius-docker:
 | 
						|
	docker build --build-arg SCHEME=sagittarius -f Dockerfile --tag=r7rs-pffi-sagittarius .
 | 
						|
	${DOCKER} r7rs-pffi-sagittarius bash -c "${DOCKER_INIT} ${SASH} test.scm"
 | 
						|
 | 
						|
test-sagittarius: libtest.so
 | 
						|
	${SASH} test.scm
 | 
						|
 | 
						|
RACKET=racket -I r7rs -S . --script
 | 
						|
test-racket-docker:
 | 
						|
	docker build --build-arg SCHEME=racket -f Dockerfile --tag=r7rs-pffi-racket .
 | 
						|
	${DOCKER} r7rs-pffi-racket bash -c "${DOCKER_INIT} ${RACKET} test.scm"
 | 
						|
 | 
						|
test-racket: libtest.so
 | 
						|
	${RACKET} test.scm
 | 
						|
 | 
						|
SKINT=skint
 | 
						|
test-skint-docker:
 | 
						|
	docker build --build-arg SCHEME=skint:head -f Dockerfile --tag=r7rs-pffi-skint .
 | 
						|
	${DOCKER} r7rs-pffi-skint bash -c "${DOCKER_INIT} ${SKINT} test.scm"
 | 
						|
 | 
						|
test-skint: libtest.so
 | 
						|
	${SKINT} test.scm
 | 
						|
 | 
						|
STKLOS=stklos -A . -f
 | 
						|
test-stklos-docker:
 | 
						|
	docker build --build-arg SCHEME=stklos:head -f Dockerfile --tag=r7rs-pffi-stklos .
 | 
						|
	${DOCKER} r7rs-pffi-stklos bash -c "${DOCKER_INIT} ${STKLOS} test.scm"
 | 
						|
 | 
						|
test-stklos: libtest.so
 | 
						|
	${STKLOS} test.scm
 | 
						|
 | 
						|
TR7=tr7i
 | 
						|
test-tr7-docker:
 | 
						|
	docker build --build-arg SCHEME=tr7:head -f Dockerfile --tag=r7rs-pffi-tr7 .
 | 
						|
	${DOCKER} r7rs-pffi-tr7 bash -c "${DOCKER_INIT} ${TR7} test.scm"
 | 
						|
 | 
						|
test-tr7: libtest.so
 | 
						|
	${TR7} test.scm
 | 
						|
 | 
						|
YPSILON=ypsilon --r7rs --sitelib=. --top-level-program
 | 
						|
test-ypsilon-docker:
 | 
						|
	docker build --build-arg SCHEME=ypsilon -f Dockerfile --tag=r7rs-pffi-ypsilon .
 | 
						|
	${DOCKER} r7rs-pffi-ypsilon bash -c "${DOCKER_INIT} ${YPSILON} test.scm"
 | 
						|
 | 
						|
test-ypsilon: libtest.so
 | 
						|
	${YPSILON} test.scm
 | 
						|
 | 
						|
documentation:
 | 
						|
	cat README.md > docs/index.md
 | 
						|
	mkdocs build
 | 
						|
 | 
						|
tmp:
 | 
						|
	mkdir -p tmp
 | 
						|
 | 
						|
clean:
 | 
						|
	@rm -rf docutmp
 | 
						|
	@rm -rf retropikzel/r7rs-pffi/*.o*
 | 
						|
	@rm -rf retropikzel/r7rs-pffi/*.so
 | 
						|
	@rm -rf retropikzel/r7rs-pffi/*.meta
 | 
						|
	@rm -rf retropikzel/r7rs-pffi/retropikzel.*
 | 
						|
	@rm -rf retropikzel/r7rs-pffi/compiled
 | 
						|
	@rm -rf retropikzel.*
 | 
						|
	find . -name "*.meta" -delete
 | 
						|
	@rm -rf test/pffi-define
 | 
						|
	@rm -rf test/*gambit*
 | 
						|
	find . -name "*.link" -delete
 | 
						|
	find . -name "*.c" -not -name "libtest.c" -delete
 | 
						|
	find . -name "*.o" -delete
 | 
						|
	find . -name "*.o[1-9]" -delete
 | 
						|
	find . -name "*.so" -delete
 | 
						|
	find . -name "*.a" -delete
 | 
						|
	@rm -rf test
 | 
						|
	@rm -rf tmp
 | 
						|
	find . -name "core.1" -delete
 | 
						|
	find . -name "*@gambit*" -delete
 | 
						|
	rm -rf retropikzel/r7rs-pffi/r7rs-pffi-chibi.so
 | 
						|
	rm -rf retropikzel/r7rs-pffi/r7rs-pffi-chibi.c
 |