# # Makefile created at Fri Jun 4 10:48:57 2004, by mmake # # Programs (with common options): SHELL = /bin/sh RM = rm -f MV = mv -f SED = sed ETAGS = etags XARGS = xargs CAT = cat FIND = find CPP = cpp -C -P INSTALL = install INSTALL_PROG = $(INSTALL) -m $(MODE_PROGS) INSTALL_FILE = $(INSTALL) -m $(MODE_FILES) INSTALL_DIR = $(INSTALL) -m $(MODE_DIRS) -d # Install modes MODE_PROGS = 555 MODE_FILES = 444 MODE_DIRS = 2755 # Build programs JAVAC = javac JAVADOC = javadoc JAR = jar # Build flags JAVAC_FLAGS = JAVADOC_FLAGS = -version -author JAR_FLAGS = cvf0 JIKES_DEP_FLAG = +M # ------------------------------------------------------------------- # # Prefix for every install directory PREFIX = # Where to start installing the class files. Set this to an empty value # if you dont want to install classes CLASS_DIR = $(PREFIX)classes # The directory to install the jar file in. Set this to an empty value # if you dont want to install a jar file JAR_DIR = $(PREFIX)lib # The directory to install html files generated by javadoc DOC_DIR = $(PREFIX)doc/api-docs # The directory to install script files in SCRIPT_DIR = $(PREFIX)bin # ------------------------------------------------------------------- # # The name of the jar file to install JAR_FILE = WLC2OSIS.jar # # The VERSION variable below should be set to a value # that will be tested in the .xjava code. # VERSION = CHANGE_ME # ------------------------------------------------------------------- # # Packages we should compile PACKAGES = \ Utilities \ WLC2OSIS.Utilities \ WLC2OSIS.Parse \ WLC2OSIS.Translate \ WLC2OSIS.GUI \ WLC2OSIS # Resource packages RESOURCES = # Directories with shell scripts SCRIPTS = # ------------------------------------------------------------------- # # A marker variable for the top level directory TOPLEVEL := . # Subdirectories with java files: JAVA_DIRS := $(subst .,/,$(PACKAGES)) $(TOPLEVEL) # Subdirectories with only resource files: RESOURCE_DIRS := $(subst .,/,$(RESOURCES)) # All the .xjava source files: XJAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.xjava)) # All the xjava files to build XJAVA_OBJS := $(XJAVA_SRC:.xjava=.java) # All the .java source files: JAVA_SRC := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.java)) JAVA_SRC := $(XJAVA_OBJS) $(JAVA_SRC) # Dependency files: DEPEND_OBJS := $(JAVA_SRC:.java=.u) # Objects that should go into the jar file. (find syntax) JAR_OBJS := \( -name '*.class' -o -name '*.gif' -o -name "*.au" \ -o -name '*.properties' \) # The intermediate java files and main classes we should build: JAVA_OBJS := $(XJAVA_OBJS) $(JAVA_SRC:.java=.class) # Resource files: # Extend the list to install other files of your choice RESOURCE_SRC := *.properties *.gif *.au # Search for resource files in both JAVA_DIRS and RESOURCE_DIRS RESOURCE_OBJS := $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \ $(wildcard $(foreach file, $(RESOURCE_SRC), \ $(dir)/$(file)))) # All the shell scripts source SCRIPT_SRCS := $(foreach dir, $(SCRIPTS), $(wildcard $(dir)/*.sh)) # All shell scripts we should install SCRIPT_OBJS := $(SCRIPT_SRCS:.sh=) # All the files to install into CLASS_DIR INSTALL_OBJS := $(foreach dir, $(JAVA_DIRS), $(wildcard $(dir)/*.class)) # Escape inner class delimiter $ INSTALL_OBJS := $(subst $$,\$$,$(INSTALL_OBJS)) # Add the resource files to be installed as well INSTALL_OBJS := $(INSTALL_OBJS) $(RESOURCE_OBJS) # ------------------------------------------------------------------- # define check-exit || exit 1 endef # ----------- # Build Rules # ----------- %.java: %.xjava $(CPP) -D$(VERSION) $< $@ %.class: %.java $(JAVAC) $(JAVAC_FLAGS) $< %.jar: $(JAVA_OBJS) $(RESOURCE_OBJS) $(FIND) $(TOPLEVEL) $(JAR_OBJS) -print | $(XARGS) \ $(JAR) $(JAR_FLAGS) $(JAR_FILE) %.u: %.java $(JAVAC) $(JIKES_DEP_FLAG) $< # ------- # Targets # ------- .PHONY: all jar install uninstall doc clean depend tags all:: $(JAVA_OBJS) help: @echo "Usage: make {all|jar|install|uninstall|doc|clean|depend|tags}" # Jar target ifneq ($(strip $(JAR_FILE)),) jar: $(JAR_FILE) ifneq ($(strip $(JAR_DIR)),) install:: $(JAR_FILE) @echo "===> [Installing jar file, $(JAR_FILE) in $(JAR_DIR)] " $(INSTALL_DIR) $(JAR_DIR) $(check-exit) $(INSTALL_FILE) $(JAR_FILE) $(JAR_DIR) $(check-exit) uninstall:: @echo "===> [Removing jar file, $(JAR_FILE) from $(JAR_DIR)] " $(RM) $(JAR_DIR)/$(JAR_FILE) $(check-exit) else install:: @echo "No jar install dir defined" endif clean:: $(RM) $(JAR_FILE) else jar: @echo "No jar file defined" endif # Install target for Classes and Resources ifneq ($(strip $(CLASS_DIR)),) install:: $(JAVA_OBJS) @echo "===> [Installing classes in $(CLASS_DIR)] " $(INSTALL_DIR) $(CLASS_DIR) $(check-exit) $(foreach dir, $(JAVA_DIRS) $(RESOURCE_DIRS), \ $(INSTALL_DIR) $(CLASS_DIR)/$(dir) $(check-exit)) $(foreach file, $(INSTALL_OBJS), \ $(INSTALL_FILE) $(file) $(CLASS_DIR)/$(file) \ $(check-exit)) uninstall:: @echo "===> [Removing class-files from $(CLASS_DIR)] " $(foreach file, $(INSTALL_OBJS), \ $(RM) $(CLASS_DIR)/$(file) \ $(check-exit)) else # Print a warning here if you like. (No class install dir defined) endif # Depend target ifeq ($(findstring jikes,$(JAVAC)),jikes) depend: $(XJAVA_OBJS) $(DEPEND_OBJS) ( $(CAT) $(DEPEND_OBJS) | $(SED) -e '/\.class$$/d' \ -e '/.*$$.*/d' > $(MAKEFILE_DEPEND); $(RM) $(DEPEND_OBJS); ) else depend: @echo "mmake needs the jikes compiler to build class dependencies" endif # Doc target ifneq ($(strip $(PACKAGES)),) doc: $(JAVA_SRC) @echo "===> [Installing java documentation in $(DOC_DIR)] " $(INSTALL_DIR) $(DOC_DIR) $(check-exit) $(JAVADOC) -d $(DOC_DIR) $(JAVADOC_FLAGS) $(PACKAGES) else doc: @echo "You must put your source files in a package to run make doc" endif # Script target ifneq ($(strip $(SCRIPT_OBJS)),) all:: $(SCRIPT_OBJS) ifneq ($(strip $(SCRIPT_DIR)),) install:: $(SCRIPT_OBJS) @echo "===> [Installing shell-scripts in $(SCRIPT_DIR)] " $(INSTALL_DIR) $(SCRIPT_DIR) $(check-exit) $(foreach file, $(SCRIPT_OBJS), \ $(INSTALL_PROG) $(file) $(SCRIPT_DIR) $(check-exit)) uninstall:: @echo "===> [Removing shell-scripts from $(SCRIPT_DIR)] " $(foreach file, $(SCRIPT_OBJS), \ $(RM) $(SCRIPT_DIR)/$(file) $(check-exit)) else # Print a warning here if you like. (No script install dir defined) endif clean:: rm -f $(SCRIPT_OBJS) endif # Tag target tags: @echo "Tagging" $(ETAGS) $(filter-out $(XJAVA_OBJS), $(JAVA_SRC)) $(XJAVA_SRC) # Various cleanup routines clean:: $(FIND) . \( -name '*~' -o -name '*.class' \) -print | \ $(XARGS) $(RM) $(FIND) . -name '*.u' -print | $(XARGS) $(RM) ifneq ($(strip $(XJAVA_SRC)),) clean:: $(RM) $(XJAVA_OBJS) endif # ---------------------------------------- # Include the dependency graph if it exist # ---------------------------------------- MAKEFILE_DEPEND = makefile.dep DEPEND = $(wildcard $(MAKEFILE_DEPEND)) ifneq ($(DEPEND),) include $(MAKEFILE_DEPEND) endif