UNAME := $(shell uname -s)

ifeq ($(UNAME),Darwin)
	MD5SUM := gmd5sum
else
	MD5SUM := md5sum
endif

PACKAGE_PATH=$(shell rospack find sbcl)

SBCL_VERSION=1.0.50
ARCHIVE_URL=http://code.in.tum.de/files/sbcl-$(SBCL_VERSION)-source.tar.bz2
ARCHIVE_FILENAME=$(PACKAGE_PATH)/sbcl-$(SBCL_VERSION)-source.tar.bz2

BUILD_DIR=$(PACKAGE_PATH)/build
SOURCE_DIR=$(BUILD_DIR)/sbcl-$(SBCL_VERSION)
INSTALL_ROOT=$(PACKAGE_PATH)/sbcl

MD5_STRING="74ce9b24516885d066ec4287cde52e8c  sbcl-1.0.50-source.tar.bz2"

all: installed

# We need to do the clean by hand here since clean is a phony target
# and we don't want to clean on every build.
downloaded: Makefile
	make -C $(PACKAGE_PATH) clean
	wget $(ARCHIVE_URL) -O $(ARCHIVE_FILENAME)
	@echo $(MD5_STRING) | $(MD5SUM) -c --status || ( echo "MD5 sum mismatch. Failing."; exit 1 )
	mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && tar xvjf $(ARCHIVE_FILENAME)
	touch downloaded

patched: downloaded
	cd $(SOURCE_DIR) && patch -p1 < $(PACKAGE_PATH)/sbcl.patch
	touch patched

installed: patched
	cp $(PACKAGE_PATH)/customize-target-features.lisp $(SOURCE_DIR)
	cd $(SOURCE_DIR) && sh ./make.sh
	cd $(SOURCE_DIR) && SBCL_HOME='' INSTALL_ROOT=$(INSTALL_ROOT) sh ./install.sh
	touch $(BUILD_DIR)/rospack_nosubdir
	touch installed roslisp_ignore

clean:
	rm -rf $(BUILD_DIR) $(INSTALL_ROOT) *.tar.bz2
	rm -f downloaded installed patched roslisp_ignore
