diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD index e5c357d1a..cf7428a3e 100644 --- a/configure/RULES_BUILD +++ b/configure/RULES_BUILD @@ -79,6 +79,8 @@ all: install -include $(CONFIG)/RULES.Db +-include $(CONFIG)/RULES_JAVA + ifeq ($(HDEPENDS),YES) ifneq (,$(strip $(HDEPENDS_FILES))) -include $(HDEPENDS_FILES) diff --git a/configure/RULES_JAVA b/configure/RULES_JAVA index 6c1f247ac..78beedd4f 100644 --- a/configure/RULES_JAVA +++ b/configure/RULES_JAVA @@ -1,59 +1,113 @@ # $Id$ # -#--------------------------------------------------------------- -# Java classes and packages -# -ifdef JAVA + +#------------------------------------------------------- +# java jdk1.1.5 definitions + +JAVA_INC = $(JAVA_DIR)/include +JAVA_BIN = $(JAVA_DIR)/bin +JAVA_INCLUDES += -I${JAVA_INC} -I${JAVA_INC}/${OS_CLASS} + +JAVACCMD = $(subst \,/,$(JAVA_BIN)/javac$(EXE) $(CLASSPATH) $(SOURCEPATH) $(JAVACFLAGS)) +JAVAHCMD = $(subst \,/,$(JAVA_BIN)/javah$(EXE) -d $(COMMON_DIR) -force $(CLASSPATH) $(JAVAHFLAGS)) +JARCMD = $(subst \,/,$(JAVA_BIN)/jar$(EXE) $(JAR_OPTIONS) $(COMMON_JAR) $(JARINPUT)) + +#------------------------------------------------------- +vpath %.java .. + +CLASSPATH=-classpath $(INSTALL_JAVA)$(addprefix :,$(USR_CLASSPATH)) +SOURCEPATH=-sourcepath .:..:../.. + +#------------------------------------------------------- +# Java install directory INSTALL_JAVA = $(INSTALL_LOCATION)/javalib JAVA_DIRECTORY_TARGETS += $(INSTALL_JAVA) -ifdef PACKAGE -JAVA_DIRECTORY_TARGETS += $(INSTALL_JAVA)/$(PACKAGE) -endif #ifdef PACKAGE -vpath %.class $(INSTALL_JAVA)/$(PACKAGE) -vpath %.java .. +#------------------------------------------------------- +# Java native method C header files +JAVAHFLAGS += $(USR_JAVAHFLAGS) +COMMON_JAVAINC += $(addprefix $(COMMON_DIR)/,$(JAVAINC)) +JAVAINC_CLASSFILES += $(addprefix $(INSTALL_JAVA)/,$(subst _,/,$(subst .h,.class,$(JAVAINC)))) +JAVAINC_CLASSNAMES += $(subst _,.,$(subst .h,,$(JAVAINC))) + +#------------------------------------------------------- +# Java class files + +JAVACFLAGS += $(USR_JAVACFLAGS) CLASSES += $(subst .java,.class,$(JAVA)) -TESTCLASSES += $(subst .java,.class,$(TESTJAVA)) -INSTALL_CLASSES =$(CLASSES:%=$(INSTALL_JAVA)/$(PACKAGE)/%) -INSTALL_JAR =$(JAR:%=$(INSTALL_JAVA)/%) +DEPJAVA += $(subst .class,.java,$(CLASSES)) +INSTALL_CLASSES = $(addprefix $(INSTALL_JAVA)/,$(CLASSES)) +TESTCLASSES += $(subst .java,.class,$(notdir $(TESTJAVA))) +COMMON_TESTCLASSES += $(addprefix $(COMMON_DIR)/,$(TESTCLASSES)) +DEPTESTJAVA += $(subst .class,.java,$(TESTCLASSES)) + +#------------------------------------------------------- +# Java jar file + +COMMON_JAR += $(addprefix $(COMMON_DIR)/,$(JAR)) +INSTALL_JAR =$(addprefix $(INSTALL_JAVA)/,$(JAR)) +JARMANIFEST += $(firstword $(trim $(MANIFEST) $(JAR_MANIFEST))) +JARINPUT += $(subst .java,.class,$(JAR_INPUT)) +JARDEPFILES += $(JARINPUT) $(JARMANIFEST) +ifneq ($(JARMANIFEST),) +JAR_OPTIONS = cvmf $(JARMANIFEST) +else JAR_OPTIONS = cvf -ifdef MANIFEST -JAR_OPTIONS = cvmf endif -JAR_DEPFILES += $(wildcard $(JAR_INPUT) $(addsuffix /*,$(JAR_INPUT))) -build: $(TESTCLASSES) $(JAR) +#------------------------------------------------------- +# Java rules -buildInstall : $(JAVA_DIRECTORY_TARGETS) $(INSTALL_CLASSES) $(INSTALL_JAR) +all: install -clean:: - @$(RM) $(TESTCLASSES) $(JAR) +inc: $(JAVA_DIRECTORY_TARGETS) $(INSTALL_CLASSES) $(COMMON_JAVAINC) + +build: inc + +build: $(COMMON_TESTCLASSES) $(COMMON_JAR) + +buildInstall : build + +buildInstall : $(INSTALL_JAR) + +install: buildInstall + +rebuild: clean install + +#This clean works only from O.* dirs. +clean:: + @$(RMDIR) $(INSTALL_CLASSES) + @$(RM) $(INSTALL_JAR) + @$(RM) $(COMMON_TESTCLASSES) $(COMMON_JAR) $(COMMON_JAVAINC) $(JAVA_DIRECTORY_TARGETS): $(MKDIR) -p $@ -%.class:%.java - @echo Creating java class file $@ - $(RM) $@ - $(JAVACCMD) $< - -$(INSTALL_JAVA)/$(PACKAGE)/%.class:%.java - @echo Creating java class file $@ +$(COMMON_JAVAINC):$(JAVAINC_CLASSFILES) + @echo Creating header files $(COMMON_JAVAINC) @$(RM) $@ - $(JAVACCMD) -d $(INSTALL_JAVA) $< + $(JAVAHCMD) $(JAVAINC_CLASSNAMES) -$(JAR):%.jar: $(JAR_DEPFILES) +$(COMMON_TESTCLASSES): $(addprefix ../,$(DEPTESTJAVA)) + @echo Creating test java class files $(COMMON_TESTCLASSES) + @$(RM) $@ + $(JAVACCMD) -d $(COMMON_DIR) $^ + +$(INSTALL_CLASSES): $(addprefix ../,$(DEPJAVA)) + @echo Creating java class files + @$(RM) $@ + $(JAVACCMD) -d $(INSTALL_JAVA) $^ + +$(COMMON_DIR)/%.jar: $(JARDEPFILES) @echo Creating java jar file $@ @$(RM) $@ $(JARCMD) -$(INSTALL_JAVA)/%.jar: %.jar - @echo "Installing jar file $@" - $(INSTALL) -d -m 644 $< $(@D) - -endif #ifdef JAVA +$(INSTALL_JAVA)/%.jar: $(COMMON_DIR)/%.jar + @echo "Installing java jar file $@" + @$(INSTALL) -d -m 644 $< $(@D)