summaryrefslogblamecommitdiff
path: root/Makefile.distrib
blob: 522481723488b094d0e7198b00e898fccec9aec3 (plain) (tree)
1
2
3
4
5
6
7
8
9





                                                                              
                                                 

                                                                         
                                                                  






                                                                            
                                                      


                                                                        




                                                                  










                                                                              
                                       
                                                              

                                                
                                                
                                                





                                                                
                                                              





                                                           



                                  

                                                

                                              

                                              
                                                                      





                                                              
                                                          






                                                                 
                                              
                                                                 

                            
                                                                      

                                                        
                                              







                                                                              
                                              
                                                                              

                                                  
                                                                          


                                                        
                                                                    

                                                            
                                                                            



                                                                            
                                                                  
                               
                                                     
                                                                                   
                               
                                                     
                                                                                   
                               
                                                     

                                                                                 
                                                     

                                                                                 

                                                                      


                                                              







                                                                     

                                             




                                                             
                                                                    

                                                         
                                                  













                                                                           




                                                                        
 

                                         


                                                                              
                                                   















                                                                        
                                                   



                                                                           
                                                   




















                                                                   











                                                                     

                                                                              
############################################################-*-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

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