summaryrefslogblamecommitdiff
path: root/Makefile.distrib
blob: 2fabe689a96f40e770bea07da6ebc60ce7cd595e (plain) (tree)




























































































































































































































                                                                                   
############################################################-*-Makefile-*-####
# Project Installation and Distribution
##############################################################################
# $Id$

# scala documents
DOCUMENTS_ROOT		 = $(PROJECT_ROOT)/doc
DOCUMENTS_FILES		+= $(DOCUMENTS_ROOT)/reference/reference.pdf
DOCUMENTS_FILES		+= $(DOCUMENTS_ROOT)/reference/examples.pdf

# scala examples
EXAMPLES_ROOT		 = $(PROJECT_SOURCEDIR)/examples
EXAMPLES_LIST		+= $(call READLIST, $(PROJECT_LISTDIR)/examples.lst)
EXAMPLES_FILES		 = $(EXAMPLES_LIST:%=$(EXAMPLES_ROOT)/%)

# emacs scala-mode
EMACS_ROOT		 = $(PROJECT_ROOT)/support/emacs
EMACS_LIST		+= $(call READLIST,$(PROJECT_LISTDIR)/emacs.lst)
EMACS_FILES		 = $(EMACS_LIST:%=$(EMACS_ROOT)/%)

# scala test
TEST_ROOT		 = $(PROJECT_ROOT)/test
TEST_LIST		+= $(call READLIST,$(PROJECT_LISTDIR)/test-pos.lst)
TEST_LIST		+= $(call READLIST,$(PROJECT_LISTDIR)/test-neg.lst)
TEST_LIST		+= $(call READLIST,$(PROJECT_LISTDIR)/test-run.lst)
TEST_FILES		 = $(TEST_LIST:%=$(TEST_ROOT)/%)

##############################################################################
# beta versions
##############################################################################

INSTALL			 = $(ROOT)/support/scripts/install
MIRROR			 = $(ROOT)/support/scripts/mirror

INSTALL_VERSION		 = install-test
INSTALL_PREFIX		 = $(ROOT)/distribs/scala-test
INSTALL_BINDIR		 = $(INSTALL_PREFIX)/bin
INSTALL_DOCDIR		 = $(INSTALL_PREFIX)/doc
INSTALL_LIBDIR		 = $(INSTALL_PREFIX)/lib
INSTALL_DATADIR		 = $(INSTALL_PREFIX)/share
INSTALL_DATADIR_ROOT	 = $(INSTALL_DATADIR)/$(PROJECT_NAME)
INSTALL_DATADIR_LIBRARY	 = $(INSTALL_DATADIR_ROOT)/library
INSTALL_DATADIR_EXAMPLES = $(INSTALL_DATADIR_ROOT)/examples
INSTALL_DATADIR_TEST	 = $(INSTALL_DATADIR_ROOT)/test
INSTALL_DATADIR_EMACS	 = $(INSTALL_DATADIR)/emacs/site-lisp

install-clean		:
	$(RM) -r $(INSTALL_PREFIX)

install			: $(PROJECT_JAR_ARCHIVE)
	$(MAKE) -C $(DOCUMENTS_ROOT)/reference all
	$(INSTALL) -m 755 -d $(INSTALL_PREFIX)
	$(INSTALL) -m 755 -d $(INSTALL_BINDIR)
	$(INSTALL) -m 755 $(ROOT)/bin/.scala_wrapper $(INSTALL_BINDIR)
	@$(MAKE) SCRIPTS_PREFIX=$(INSTALL_BINDIR) scripts
	$(INSTALL) -m 755 -d $(INSTALL_DOCDIR)
	$(INSTALL) -m 644 $(DOCUMENTS_FILES) $(INSTALL_DOCDIR)
	$(INSTALL) -m 755 -d $(INSTALL_LIBDIR)
	$(INSTALL) -m 644 $(PROJECT_JAR_ARCHIVE) $(INSTALL_LIBDIR)
	$(INSTALL) -m 644 $(BCEL_LICENSE) $(INSTALL_LIBDIR)/bcel.LICENSE
	$(INSTALL) -m 644 $(BCEL_JARFILE) $(INSTALL_LIBDIR)/bcel.jar
	$(INSTALL) -m 644 $(MSIL_JARFILE) $(INSTALL_LIBDIR)/msil.jar
	$(INSTALL) -m 644 $(FJBG_JARFILE) $(INSTALL_LIBDIR)/fjbg.jar
	$(INSTALL) -m 755 -d $(INSTALL_DATADIR)
	$(INSTALL) -m 755 -d $(INSTALL_DATADIR_ROOT)
	$(INSTALL) -m 755 -d $(INSTALL_DATADIR_LIBRARY)
	$(strip $(MIRROR) -m 644 -C $(LIBRARY_ROOT) $(LIBRARY_LIST:%='%') \
	    $(INSTALL_DATADIR_LIBRARY)/$(PROJECT_NAME))
	$(INSTALL) -m 755 -d $(INSTALL_DATADIR_EXAMPLES)
	$(strip $(MIRROR) -m 644 -C $(EXAMPLES_ROOT) $(EXAMPLES_LIST) \
	    $(INSTALL_DATADIR_EXAMPLES))
	$(INSTALL) -m 755 -d $(INSTALL_DATADIR)/$(PROJECT_NAME)/test
	$(INSTALL) -m 755 -d $(INSTALL_DATADIR)/$(PROJECT_NAME)/test/bin
	$(INSTALL) -m 755 $(ROOT)/test/bin/scala-test $(INSTALL_DATADIR_TEST)/bin
	$(strip $(MIRROR) -m 644 -C $(TEST_ROOT) $(TEST_LIST) \
	    $(INSTALL_DATADIR_TEST))
	$(strip $(MIRROR) -m 644 -C $(TEST_ROOT) \
	    $(shell cd $(TEST_ROOT); ls $(TEST_LIST:%.scala=%.check) 2>/dev/null) \
	    $(INSTALL_DATADIR_TEST))
	$(strip $(MIRROR) -m 644 -C $(TEST_ROOT) \
	    $(shell cd $(TEST_ROOT); ls $(TEST_LIST:%.scala=%.flags) 2>/dev/null) \
	    $(INSTALL_DATADIR_TEST))
	$(INSTALL) -m 755 -d $(INSTALL_DATADIR_EMACS)
	$(strip $(MIRROR) -m 644 -C $(EMACS_ROOT) $(EMACS_LIST) \
	    $(INSTALL_DATADIR_EMACS))
	$(INSTALL) -m 644 $(ROOT)/README $(INSTALL_PREFIX)
	$(INSTALL) -m 644 $(ROOT)/LICENSE $(INSTALL_PREFIX)
	$(ECHO) $(INSTALL_VERSION) > $(INSTALL_PREFIX)/VERSION
	$(CHMOD) 644 $(INSTALL_PREFIX)/VERSION


install-windows		:
	@if [ ! -d "$(INSTALL_PREFIX)" ]; then \
	    echo "Could not find UNIX install '$(INSTALL_PREFIX)'"; \
	    exit 1; \
	fi
	$(UNIX2DOS) $(INSTALL_PREFIX)/README
	$(UNIX2DOS) $(INSTALL_PREFIX)/LICENSE
	$(UNIX2DOS) $(INSTALL_PREFIX)/VERSION
	$(UNIX2DOS) $(INSTALL_LIBDIR)/bcel.LICENSE
	$(TOUCH) $(INSTALL_PREFIX)/VERSION-$(INSTALL_VERSION)
	@root=`cd "$(INSTALL_PREFIX)"; pwd`; \
	for file in "" $(SCRIPTS_WRAPPER_ALIASES); do \
	    if [ -z "$$file" ]; then continue; fi; \
	    echo -n "Generating $$file.bat ... "; \
	    srcfile="$(ROOT)/support/windows/scala_wrapper"; \
	    nixfile="$(INSTALL_PREFIX)/bin/$$file"; \
	    winfile="$(INSTALL_PREFIX)/bin/$$file.bat"; \
	    nixexec=`SCALA_WRAPPER_EXEC=echo $$nixfile`; \
	    winexec="$$nixexec"; \
	    winexec=`echo "$$winexec" | sed -es"#$$root#%SCALA_HOME%#g"`; \
	    winexec=`echo "$$winexec" | tr '/' '\\\\' | tr ':' ';'`; \
	    $(RM) -f "$$winfile"; \
	    ( \
	        $(CAT) "$$srcfile-header.bat"; \
	        $(ECHO) "set VERSION=$(INSTALL_VERSION)"; \
	        $(ECHO) "set COMMAND=$$winexec"; \
	        $(CAT) "$$srcfile-footer.bat"; \
	    ) | $(UNIX2DOS) >> "$$winfile"; \
	    $(RM) "$$nixfile"; \
	    echo "done"; \
	done
	$(RM) $(INSTALL_PREFIX)/bin/.scala_wrapper
	$(FIND) $(INSTALL_DATADIR_LIBRARY) -type f -exec unix2dos "{}" ";"
	$(FIND) $(INSTALL_DATADIR_EXAMPLES) -type f -exec unix2dos "{}" ";"
	$(FIND) $(INSTALL_DATADIR_TEST) -type f -exec unix2dos "{}" ";"
	$(FIND) $(INSTALL_DATADIR_EMACS) -type f -exec unix2dos "{}" ";"

.PHONY	: install
.PHONY	: install-windows

##############################################################################

DISTRIB_REPOSITORY	 = $(ROOT)/distribs
DISTRIB_VERSION		:= $(shell $(DATE) -u "+%Y%m%d-%H%M%S")
DISTRIB_NAME		 = $(PROJECT_NAME)-$(DISTRIB_VERSION)
DISTRIB_PREFIX		 = $(DISTRIB_REPOSITORY)/$(DISTRIB_NAME)
DISTRIB_ARCHIVE		 = $(DISTRIB_REPOSITORY)/$(DISTRIB_NAME).tar.gz

distrib-extract		:
	@if [ ! -f "$(DISTRIB_ARCHIVE)" ]; then \
	    echo "Could not find source archive '$(DISTRIB_ARCHIVE)'"; \
	    exit 1; \
	fi
	@if [ -d "$(DISTRIB_PREFIX)" ]; then \
	    $(call RUN,$(RM) -rf $(DISTRIB_PREFIX)); \
	fi
	tar xvzf $(DISTRIB_ARCHIVE) -C $(DISTRIB_REPOSITORY)

distrib-build-unix	:
	@$(MAKE) INSTALL_PREFIX=$(DISTRIB_PREFIX) \
	    INSTALL_VERSION=$(DISTRIB_VERSION) install
	tar czf $(DISTRIB_ARCHIVE) -C $(DISTRIB_REPOSITORY) $(DISTRIB_NAME)

distrib-build-windows	:
	@$(MAKE) INSTALL_PREFIX=$(DISTRIB_PREFIX) \
	    INSTALL_VERSION=$(DISTRIB_VERSION) install-windows
	$(RM) -f $(DISTRIB_PREFIX).zip
	cd $(DISTRIB_REPOSITORY); \
	    $(ZIP) -q -r $(DISTRIB_NAME).zip $(DISTRIB_NAME)

distrib-clean		:
	$(RM) -rf $(DISTRIB_PREFIX)

distrib-unix		: distrib-build-unix
distrib-unix		: distrib-clean

distrib-windows		: DISTRIB_NAME=$(notdir $(ARGS:%.tar.gz=%))
distrib-windows 	: DISTRIB_VERSION=$(DISTRIB_NAME:scala-%=%)
distrib-windows 	: distrib-extract
distrib-windows 	: distrib-build-windows
distrib-windows 	: distrib-clean

distrib-all-oses	: distrib-build-unix
distrib-all-oses	: distrib-build-windows
distrib-all-oses	: distrib-clean

distrib-14		:
	@if [ -f "$(ROOT)/bin/.scala_wrapper.bak" ]; then \
	    echo "There is a backup of .scala_wrapper, maybe you should run: "; \
	    echo "make distrib-13-undo"; \
	    exit 1; \
	fi
	@$(MAKE) distrib-all-oses DISTRIB_VERSION=$(DISTRIB_VERSION);

distrib-13-undo		:
	@$(MAKE) clean;
	mv $(ROOT)/bin/.scala_wrapper.bak $(ROOT)/bin/.scala_wrapper

distrib-13		: PATH:=/home/linuxsoft/apps/java-1.3/bin:$(PATH)
distrib-13		:
	@if [ -f "$(ROOT)/bin/.scala_wrapper.bak" ]; then \
	    echo "Cannot save .scala_wrapper, there is already a backup," \
	      "maybe you should run: "; \
	    echo "make distrib-13-undo"; \
	    exit 1; \
	fi
	mv $(ROOT)/bin/.scala_wrapper $(ROOT)/bin/.scala_wrapper.bak
	$(SED) -e "s/-enableassertions//" $(ROOT)/bin/.scala_wrapper.bak \
	    > $(ROOT)/bin/.scala_wrapper
	@$(MAKE) clean;
	@$(MAKE) COMPILER_JC_FLAGS="$(COMPILER_JC_FLAGS) -target 1.3"
	@$(MAKE) distrib-all-oses DISTRIB_VERSION=$(DISTRIB_VERSION)-jdk-1.3;
	@$(MAKE) distrib-13-undo;

distrib			: distrib-14
#distrib			: distrib-13

.PHONY	: distrib-extract
.PHONY	: distrib-build-unix
.PHONY	: distrib-build-windows
.PHONY	: distrib-clean
.PHONY	: distrib-unix
.PHONY	: distrib-windows
.PHONY	: distrib-all-oses
.PHONY	: distrib-14
.PHONY	: distrib-13-undo
.PHONY	: distrib-13
.PHONY	: distrib

##############################################################################