############################################################-*-Makefile-*-#### # Project Installation and Distribution ############################################################################## # $Id$ # scala documents DOCUMENTS_ROOT = $(PROJECT_DOCUMENTDIR) DOCUMENTS_FILES += $(DOCUMENTS_ROOT)/reference/ScalaReference.pdf DOCUMENTS_FILES += $(DOCUMENTS_ROOT)/reference/ScalaByExample.pdf DOCUMENTS_FILES += $(DOCUMENTS_ROOT)/tutorial/tutorial.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_SUPPORTDIR)/emacs EMACS_LIST += $(call READLIST,$(PROJECT_LISTDIR)/emacs.lst) EMACS_FILES = $(EMACS_LIST:%=$(EMACS_ROOT)/%) # ultraedit scala-mode ULTRAEDIT_ROOT = $(PROJECT_SUPPORTDIR)/ultraedit ULTRAEDIT_LIST += scala.txt ULTRAEDIT_FILES = $(ULTRAEDIT_LIST:%=$(ULTRAEDIT_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_VERSION = install-test INSTALL_PREFIX = $(PROJECT_ROOT)/distribs/scala-test INSTALL_BINDIR = $(INSTALL_PREFIX)/bin INSTALL_DOCDIR = $(INSTALL_PREFIX)/doc INSTALL_APIDOCDIR = $(INSTALL_DOCDIR)/api INSTALL_LIBDIR = $(INSTALL_PREFIX)/lib INSTALL_SRCDIR = $(INSTALL_PREFIX)/src INSTALL_EXAMPLEDIR = $(INSTALL_PREFIX)/examples INSTALL_SUPPORTDIR = $(INSTALL_PREFIX)/support INSTALL_TESTDIR = $(INSTALL_PREFIX)/test INSTALL_RUNTIME_JARFILE = $(INSTALL_LIBDIR)/$(PROJECT_NAME).jar INSTALL_TOOLS_JARFILE = $(INSTALL_LIBDIR)/$(TOOLS_NAME).jar INSTALL_FJBG_JARFILE = $(INSTALL_LIBDIR)/fjbg.jar INSTALL_MSIL_JARFILE = $(INSTALL_LIBDIR)/msil.jar INSTALL_BCEL_JARFILE = $(INSTALL_LIBDIR)/bcel.jar INSTALL_BCEL_LICENSE = $(INSTALL_LIBDIR)/bcel.LICENSE INSTALL_XERCES_JARFILE = $(INSTALL_LIBDIR)/xerces.jar INSTALL_XERCES_LICENSE = $(INSTALL_LIBDIR)/xerces.LICENSE install-clean : $(RM) -r $(INSTALL_PREFIX) install : $(LIBRARY_JAR_ARCHIVE) install : $(TOOLS_JAR_ARCHIVE) $(MAKE) -C $(DOCUMENTS_ROOT)/reference $(MAKE) -C $(DOCUMENTS_ROOT)/tutorial $(INSTALL) -m 755 -d $(INSTALL_PREFIX) $(INSTALL) -m 755 -d $(INSTALL_BINDIR) $(INSTALL) -m 644 -p $(SCRIPTS_WRAPPER).tmpl $(INSTALL_BINDIR) @$(make) \ SCRIPTS_PREFIX=$(INSTALL_BINDIR) \ INSTALL_PREFIX=$(INSTALL_PREFIX) \ MACRO_VERSION=$(INSTALL_VERSION) \ MACRO_RUNTIME_SOURCES=$(INSTALL_SRCDIR) \ MACRO_RUNTIME_CLASSES=$(INSTALL_RUNTIME_JARFILE) \ MACRO_TOOLS_CLASSES=$(INSTALL_TOOLS_JARFILE) \ MACRO_BCEL_CLASSES=$(INSTALL_BCEL_JARFILE) \ MACRO_FJBG_CLASSES=$(INSTALL_FJBG_JARFILE) \ MACRO_MSIL_CLASSES=$(INSTALL_MSIL_JARFILE) \ MACRO_XERCES_CLASSES=$(INSTALL_XERCES_JARFILE) \ MACRO_JAVA_ARGS= \ scripts $(RM) $(INSTALL_BINDIR)/$(notdir $(SCRIPTS_WRAPPER)).tmpl $(INSTALL) -m 755 -d $(INSTALL_DOCDIR) $(INSTALL) -m 644 -p $(DOCUMENTS_FILES) $(INSTALL_DOCDIR) @$(make) \ target=LIBRARY \ LIBRARY_SDC_FILES='$(subst $$,$$$$,$(LIBRARY_SC_FILES))' \ LIBRARY_SDC_OUTPUTDIR=$(INSTALL_APIDOCDIR) \ sdc $(INSTALL) -m 755 -d $(INSTALL_LIBDIR) $(INSTALL) -m 644 -p $(LIBRARY_JAR_ARCHIVE) $(INSTALL_RUNTIME_JARFILE) $(INSTALL) -m 644 -p $(TOOLS_JAR_ARCHIVE) $(INSTALL_TOOLS_JARFILE) $(INSTALL) -m 644 -p $(FJBG_JARFILE) $(INSTALL_FJBG_JARFILE) $(INSTALL) -m 644 -p $(MSIL_JARFILE) $(INSTALL_MSIL_JARFILE) $(INSTALL) -m 644 -p $(BCEL_JARFILE) $(INSTALL_BCEL_JARFILE) $(INSTALL) -m 644 -p $(BCEL_LICENSE) $(INSTALL_BCEL_LICENSE) $(INSTALL) -m 644 -p $(XERCES_JARFILE) $(INSTALL_XERCES_JARFILE) $(INSTALL) -m 644 -p $(XERCES_LICENSE) $(INSTALL_XERCES_LICENSE) $(INSTALL) -m 755 -d $(INSTALL_SRCDIR) $(strip $(MIRROR) -m 644 -p -C $(LIBRARY_ROOT) $(LIBRARY_LIST:%='%') \ $(INSTALL_SRCDIR)/$(PROJECT_NAME)) $(INSTALL) -m 755 -d $(INSTALL_EXAMPLEDIR) $(strip $(MIRROR) -m 644 -p -C $(EXAMPLES_ROOT) $(EXAMPLES_LIST) \ $(INSTALL_EXAMPLEDIR)) $(INSTALL) -m 755 -d $(INSTALL_SUPPORTDIR) $(INSTALL) -m 755 -d $(INSTALL_SUPPORTDIR)/emacs $(strip $(MIRROR) -m 644 -p -C $(EMACS_ROOT) $(EMACS_LIST) \ $(INSTALL_SUPPORTDIR)/emacs) $(INSTALL) -m 755 -d $(INSTALL_SUPPORTDIR)/ultraedit $(strip $(MIRROR) -m 644 -p -C $(ULTRAEDIT_ROOT) $(ULTRAEDIT_LIST) \ $(INSTALL_SUPPORTDIR)/ultraedit) $(INSTALL) -m 755 -d $(INSTALL_TESTDIR) $(INSTALL) -m 755 -d $(INSTALL_TESTDIR)/bin $(INSTALL) -m 755 $(TEST_ROOT)/bin/scala-test $(INSTALL_TESTDIR)/bin $(strip $(MIRROR) -m 644 -p -C $(TEST_ROOT) $(TEST_LIST) \ $(INSTALL_TESTDIR)) $(strip $(MIRROR) -m 644 -p -C $(TEST_ROOT) \ $(shell cd $(TEST_ROOT); ls $(TEST_LIST:%.scala=%.check) 2>/dev/null) \ $(INSTALL_TESTDIR)) $(strip $(MIRROR) -m 644 -p -C $(TEST_ROOT) \ $(shell cd $(TEST_ROOT); ls $(TEST_LIST:%.scala=%.flags) 2>/dev/null) \ $(INSTALL_TESTDIR)) $(strip $(MIRROR) -m 644 -p -C $(TEST_ROOT) \ $(shell cd $(TEST_ROOT); ls $(TEST_LIST:%.scala=%.dtd) 2>/dev/null) \ $(INSTALL_TESTDIR)) $(strip $(MIRROR) -m 644 -p -C $(TEST_ROOT) \ $(shell cd $(TEST_ROOT); ls $(TEST_LIST:%.scala=%.xml) 2>/dev/null) \ $(INSTALL_TESTDIR)) $(INSTALL) -m 644 -p $(PROJECT_ROOT)/README $(INSTALL_PREFIX) $(INSTALL) -m 644 -p $(PROJECT_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_BCEL_LICENSE) $(UNIX2DOS) $(INSTALL_XERCES_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="$(PROJECT_SUPPORTDIR)/windows/scala_wrapper"; \ nixfile="$(INSTALL_PREFIX)/bin/$$file"; \ winfile="$(INSTALL_PREFIX)/bin/$$file.bat"; \ nixexec=`SCALA_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_SRCDIR) -type f -exec $(UNIX2DOS) "{}" ";" $(FIND) $(INSTALL_APIDOCDIR) -type f -exec $(UNIX2DOS) "{}" ";" $(FIND) $(INSTALL_EXAMPLEDIR) -type f -exec $(UNIX2DOS) "{}" ";" $(FIND) $(INSTALL_SUPPORTDIR) -type f -exec $(UNIX2DOS) "{}" ";" $(RM) -r $(INSTALL_TESTDIR) .PHONY : install .PHONY : install-windows ############################################################################## DISTRIB_REPOSITORY = $(PROJECT_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 : @$(make) distrib-all-oses DISTRIB_VERSION=$(DISTRIB_VERSION); .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 ##############################################################################