.PHONY: package test libtest.o tests/libtest.so libtest.a documentation README.html .SILENT: build install test test-docker clean SCHEME=chibi DOCKERIMG=${SCHEME}:head VERSION=0.10.9 PKG=foreign-c-${VERSION}.tgz GAUCHE_PKG=foreign-c-gauche-primitives-${VERSION}.tgz GAUCHE_TAR=foreign-c-gauche-primitives-${VERSION}.tar CC=gcc PKG=foreign-c-${VERSION}.tgz ifeq "${SCHEME}" "chicken" DOCKERIMG=${SCHEME}:5 endif # Mit scheme specific MITCMD=mit-scheme --batch-mode MITDIR=${PWD}/foreign/c/primitives/mit-scheme MITLIBDIR=$(shell echo "(display (->namestring (system-library-directory-pathname)))" | mit-scheme --batch-mode 2> /dev/null | tail -1) build: echo "
$$(cat README.md)" > README.html snow-chibi package \ --version=${VERSION} \ --authors="Retropikzel" \ --doc=README.html \ --foreign-depends=ffi \ --description="Portable foreign function interface for R7RS Schemes" \ --test=test.scm \ foreign/c.sld \ foreign/c/array.sld \ foreign/c/struct.sld \ foreign/c/chibi-primitives.sld \ foreign/c/chicken-primitives.sld \ foreign/c/guile-primitives.sld \ foreign/c/mosh-primitives.sld \ foreign/c/racket-primitives.sld \ foreign/c/sagittarius-primitives.sld \ foreign/c/ypsilon-primitives.sld build-gauche: snow-chibi package \ --version=${VERSION} \ --authors="Retropikzel" \ --foreign-depends="libgauche ffi" \ --description="Portable foreign function interface for R7RS Schemes - Gauche primitives" \ foreign/c/gauche-primitives.sld \ foreign/c/gauche-primitives.stub install: snow-chibi --impls=${SCHEME} ${SNOW_CHIBI_ARGS} install ${PKG} install-gauche: if [ "${SCHEME}" = "gauche" ]; then \ snow-chibi --impls=${SCHEME} ${SNOW_CHIBI_ARGS} install ${GAUCHE_PKG}; \ fi #make gauche; \ #sudo cp foreign/c/primitives/gauche.scm $(shell gauche-config --sitelibdir)/foreign/c/primitives/;\ #sudo mkdir -p $(shell gauche-config --sitearchdir)/foreign/c/lib/; \ #sudo cp -r foreign/c/lib/gauche.so $(shell gauche-config --sitearchdir)/foreign/c/lib/; \ #fi uninstall: snow-chibi --impls=${SCHEME} remove "(foreign c)" test: libtest.o libtest.so libtest.a rm -rf test COMPILE_R7RS_CHICKEN="-L -ltest -I./tests/c-include -L." \ COMPILE_R7RS=${SCHEME} compile-r7rs -I . -o test test.scm LD_LIBRARY_PATH=. ./test test-no: package libtest.o libtest.so libtest.a COMPILE_R7RS=${SCHEME} test-snowball --apt-pkgs "libffi-dev" ${PKG} test-docker-old: docker run -it -v "${PWD}:/workdir" -w /workdir retropikzel1/compile-r7rs sh -c \ "make SCHEME=${SCHEME} SNOW_CHIBI_ARGS=--always-yes build install test" test-docker: docker build --build-arg IMAGE=${DOCKERIMG} --build-arg SCHEME=${SCHEME} --tag=retropikzel-foreign-c-test-${SCHEME} -f Dockerfile.test . docker run -it -v "${PWD}:/workdir" -w /workdir -t retropikzel-foreign-c-test-${SCHEME} sh -c "make SCHEME=${SCHEME} SNOW_CHIBI_ARGS=--always-yes build install test" libtest.o: tests/c-src/libtest.c ${CC} ${CFLAGS} -o libtest.o -fPIC -c tests/c-src/libtest.c -I./include ${LDFLAGS} libtest.so: tests/c-src/libtest.c ${CC} ${CFLAGS} -o libtest.so -shared -fPIC tests/c-src/libtest.c -I./include ${LDFLAGS} libtest.a: libtest.o tests/c-src/libtest.c ar rcs libtest.a libtest.o ${LDFLAGS} chibi: foreign/c/chibi-primitives.stub chibi-ffi foreign/c/chibi-primitives.stub #${CC} ${CFLAGS} -g3 -o foreign/c/primitives/chibi/foreign-c.so foreign/c/primitives/chibi/foreign-c.c -fPIC -lffi -shared gauche: gauche-package compile \ --srcdir=foreign/c \ --keep-c-files \ gauche-primitives \ gauche-primitives.gauche.scm #gcc -shared -o foreign/c/gauche-primitives.so gauche-primitives.so #--verbose \ #--keep-c-files \ #--srcdir=foreign/c/gauche \ #--cc=${CC} \ #--cflags="${CFLAGS} -I.foreign/c/gauche" \ #--libs=-lffi \ #foreign-c-gauche-primitives foreign-c-gauche-primitives.c gauchelib.scm #mkdir -p foreign/c/lib #mv foreign-c-gauche-primitives.so foreign/c/lib/gauche.so #mv foreign-c-gauche-primitives.o foreign/c/lib/gauche.o mit-scheme: cd ${MITDIR} && echo "(load-option 'ffi) (c-generate \"mit-scheme-foreign-c\" \"#include