X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fasdf-module.mk;h=e211f0c9752e9464b8b6fb94b9899b3818f52484;hb=3db292921fabecad0ba8107097d763ba2a044136;hp=c646b9df0c07a77c2613ad2777df98707b07e4b3;hpb=1a6c2275ab21acc79d3a6866d4749dda8f02f7d7;p=sbcl.git diff --git a/contrib/asdf-module.mk b/contrib/asdf-module.mk index c646b9d..e211f0c 100644 --- a/contrib/asdf-module.mk +++ b/contrib/asdf-module.mk @@ -1,45 +1,49 @@ -CC=gcc - -# Need to set CFLAGS and LDFLAGS here. sb-posix, sb-grovel, and -# sb-bsd-sockets depends upon these being set on x86_64. Setting these -# in their Makefile's is not adequate since their asd files are -# invoked when loaded from other modules which don't require these -# environmental values in their Makefile's. - -UNAME:=$(shell uname -m) -export CFLAGS=-fPIC -ifeq (solaris,$(UNAME)) - export LDFLAGS=-shared -lresolv -lsocket -lnsl -else - ifeq (Darwin,$(UNAME)) - export LDFLAGS=-bundle - else - ifeq (x86_64,$(UNAME)) - export LDFLAGS=-m32 -shared - export CFLAGS+= -m32 - else - export LDFLAGS=-shared - endif - endif +# 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 +# adequate since, while we're building contrib, they can be compiled +# directly via ASDF from a non-C-aware module which has these tricky +# 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__ + PATH:=/usr/xpg4/bin:${PATH} +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 -export CC SBCL CFLAGS LDFLAGS +all: $(FASL) $(ASD) $(EXTRA_ALL_TARGETS) -all: $(EXTRA_ALL_TARGETS) +$(FASL):: $(MAKE) -C ../asdf - $(SBCL) --eval '(load "../asdf/asdf")' \ - --eval "(setf asdf::*central-registry* '((MERGE-PATHNAMES \"systems/\" (TRUENAME (SB-EXT:POSIX-GETENV \"SBCL_HOME\")))))" \ - --eval "(push :sb-building-contrib *features*)" \ - --eval "(asdf:operate 'asdf:load-op :$(SYSTEM))" \ - --eval "(progn (when (probe-file \"$(SYSTEM).fasl\") (error \"fasl file exists\")) (with-open-file (s \"$(SYSTEM).lisp\" :direction :output :if-exists :error) (print (quote (require :asdf)) s) (print (quote (require :$(SYSTEM))) s)) (compile-file \"$(SYSTEM).lisp\") (delete-file \"$(SYSTEM).lisp\"))" \ - --eval "(quit)" + $(SBCL) --load ../asdf-stub.lisp \ + --eval '(asdf::build-asdf-contrib "$(SYSTEM)")' -test: all - echo "(asdf:operate (quote asdf:load-op) :$(SYSTEM))" \ - "(asdf:operate (quote asdf:test-op) :$(SYSTEM))" | \ - $(SBCL) --eval '(load "../asdf/asdf")' +$(ASD):: + echo "(defsystem :$(SYSTEM) :class require-system)" > $@ +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 - ) - ( cd $(BUILD_ROOT)$(SBCL_HOME)/systems && ln -fs ../$(SYSTEM)/$(SYSTEM).asd . ) + cp $(FASL) $(ASD) "$(BUILD_ROOT)$(INSTALL_DIR)"