#!/bin/sh # tests related to foreign function interface and loading of shared # libraries # This software is part of the SBCL system. See the README file for # more information. # # While most of SBCL is derived from the CMU CL system, the test # files (like this one) were written from scratch after the fork # from CMU CL. # # This software is in the public domain and is provided with # absolutely no warranty. See the COPYING and CREDITS files for # more information. . ./subr.sh use_test_subdirectory echo //entering foreign.test.sh # simple way to make sure we're not punting by accident: # setting PUNT to anything other than 104 will make non-dlopen # and non-linkage-table platforms fail this PUNT=$EXIT_TEST_WIN ## Make some shared object files to test with. build_so() ( echo building $1.so set +u case "`uname -m`" in x86_64|amd64|mips|mips64) CFLAGS="$CFLAGS -fPIC" ;; esac if [ "`uname`" = Darwin ]; then SO_FLAGS="-bundle" else SO_FLAGS="-shared" fi cc -c $1.c -o $1.o $CFLAGS ld $SO_FLAGS -o $1.so $1.o ) # We want to bail out in case any of these Unix programs fails. set -e cat > $TEST_FILESTEM.c < $TEST_FILESTEM-b.c echo 'int bar() { return 42; }' >> $TEST_FILESTEM-b.c build_so $TEST_FILESTEM-b echo 'int foo = 42;' > $TEST_FILESTEM-b2.c echo 'int bar() { return 13; }' >> $TEST_FILESTEM-b2.c build_so $TEST_FILESTEM-b2 echo 'int late_foo = 43;' > $TEST_FILESTEM-c.c echo 'int late_bar() { return 14; }' >> $TEST_FILESTEM-c.c build_so $TEST_FILESTEM-c ## Foreign definitions & load cat > $TEST_FILESTEM.base.lisp < $TEST_FILESTEM.fast.lisp cat $TEST_FILESTEM.base.lisp >> $TEST_FILESTEM.fast.lisp echo "(declaim (optimize space))" > $TEST_FILESTEM.small.lisp cat $TEST_FILESTEM.base.lisp >> $TEST_FILESTEM.small.lisp # Test code cat > $TEST_FILESTEM.test.lisp <