X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fasdf-module.mk;h=e211f0c9752e9464b8b6fb94b9899b3818f52484;hb=260de2062fca170efdac3e42491d7d866c2d2e56;hp=b6edb51e83ff87f4fcdc2bd6790b0aa32cdea317;hpb=dca20740848a3e316371460a25be29fd574850ed;p=sbcl.git diff --git a/contrib/asdf-module.mk b/contrib/asdf-module.mk index b6edb51..e211f0c 100644 --- a/contrib/asdf-module.mk +++ b/contrib/asdf-module.mk @@ -1,5 +1,3 @@ -CC=gcc - # We need to extend flags to the C compiler and the linker # here. sb-posix, sb-grovel, and sb-bsd-sockets depends upon these # being set on x86_64. Setting these in their Makefiles is not @@ -8,6 +6,9 @@ CC=gcc # ones as dependencies. UNAME:=$(shell uname -s) +DEST=$(SBCL_PWD)/obj/sbcl-home/contrib/ +FASL=$(DEST)/$(SYSTEM).fasl +ASD=$(DEST)/$(SYSTEM).asd ifeq (SunOS,$(UNAME)) EXTRA_CFLAGS=-D_XOPEN_SOURCE=500 -D__EXTENSIONS__ @@ -15,25 +16,34 @@ ifeq (SunOS,$(UNAME)) endif ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME))) EXTRA_CFLAGS=-mno-cygwin + # GCC 4.x doesn't accept -mno-cygwin. + CC:=gcc-3 # SBCL can't read cygwin symlinks, and cygwin likes to symlink # gcc. To further complicate things, SBCL can't handle cygwin # paths, either. CC:=$(shell cygpath -m $(shell readlink -fn $(shell which $(CC)))) endif +ifeq (Linux,$(UNAME)) + EXTRA_CFLAGS=-D_GNU_SOURCE +endif export CC SBCL EXTRA_CFLAGS EXTRA_LDFLAGS -all: $(EXTRA_ALL_TARGETS) +all: $(FASL) $(ASD) $(EXTRA_ALL_TARGETS) + +$(FASL):: $(MAKE) -C ../asdf - $(SBCL) --eval '(defvar *system* "$(SYSTEM)")' --load ../asdf-stub.lisp --eval '(quit)' + $(SBCL) --load ../asdf-stub.lisp \ + --eval '(asdf::build-asdf-contrib "$(SYSTEM)")' + +$(ASD):: + echo "(defsystem :$(SYSTEM) :class require-system)" > $@ -test: all - echo "(asdf:operate (quote asdf:load-op) :$(SYSTEM))" \ - "(asdf:operate (quote asdf:test-op) :$(SYSTEM))" | \ - $(SBCL) --eval '(load "../asdf/asdf")' +test: $(FASL) $(ASD) + $(SBCL) --load ../asdf-stub.lisp \ + --eval '(asdf::test-asdf-contrib "$(SYSTEM)")' # KLUDGE: There seems to be no portable way to tell tar to not to # preserve owner, so chown after installing for the current user. install: $(EXTRA_INSTALL_TARGETS) - tar cf - . | ( cd "$(BUILD_ROOT)$(INSTALL_DIR)" && tar xpvf - ) - find "$(BUILD_ROOT)$(INSTALL_DIR)" -exec chown `id -u`:`id -g` {} \; + cp $(FASL) $(ASD) "$(BUILD_ROOT)$(INSTALL_DIR)"