Author: thebeing
Date: Sun Dec 21 08:16:04 2014
New Revision: 38254
URL: http://svn.gna.org/viewcvs/gnustep?rev=38254&view=rev
Log:
Add support for building jars from Java projects (`make jar').
Modified:
tools/make/trunk/ChangeLog
tools/make/trunk/Documentation/gnustep-make.texi
tools/make/trunk/Instance/Shared/java.make
tools/make/trunk/Instance/java.make
tools/make/trunk/Instance/rules.make
tools/make/trunk/Master/java.make
tools/make/trunk/Master/rules.make
tools/make/trunk/common.make
tools/make/trunk/messages.make
Modified: tools/make/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/ChangeLog?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/ChangeLog (original)
+++ tools/make/trunk/ChangeLog Sun Dec 21 08:16:04 2014
@@ -1,3 +1,15 @@
+2014-12-21: Niels Grewe <[email protected]>
+ * Instance/Shared/java.make
+ * Instance/java.make
+ * Instance/rules.make
+ * Master/java.make
+ * Master/rules.make
+ * common.make
+ * messages.make:
+ Add a `jar' target to the java project type that allows jars to
+ be built from all classes in the project.
+ * Documentation/gnustep-make.texi: Document Java project variables.
+
2014-06-29 Nicolas Boulenguez <[email protected]> (tiny change)
* common.make (INTERNAL_CFLAGS): Do not ignore user-specified
Modified: tools/make/trunk/Documentation/gnustep-make.texi
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Documentation/gnustep-make.texi?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/Documentation/gnustep-make.texi (original)
+++ tools/make/trunk/Documentation/gnustep-make.texi Sun Dec 21 08:16:04 2014
@@ -241,6 +241,48 @@
This project provides rules for building java programs. It also makes it
easy to make java projects that interact with the GNUstep libraries.
+@subsubsection Project Variables
+
+@defvr {Java project} JAVA_PACKAGE_NAME
+@code{JAVA_PACKAGE_NAME} is the reverse DNS style Java package name that
+resides in this project.
+@end defvr
+
+@defvr {Java project} JAVA_FILES
+@code{xxx_JAVA_FILES} is the list of Java source code files, with a
+@file{.java} extension, that are compiled for the @strong{xxx} project.
+@strong{xxx} should be replaced with the name of the Java package
+specified in @code{JAVA_PACKAGE_NAME}.
+@end defvr
+
+@defvr {Java project} JAVA_JNI_FILES
+@code{xxx_JAVA_JNI_FILES} is the list of Java source code files for
+which @code{javah} should produce header files for integration with
+Objective-C code.
+@strong{xxx} should be replaced with the name of the Java package
+specified in @code{JAVA_PACKAGE_NAME}.
+@end defvr
+
+@defvr {Java project} JAVA_PROPERTIES_FILES
+@code{xxx_JAVA_PROPERTIES_FILES} can be used to specify properties files
+to install.
+@strong{xxx} should be replaced with the name of the Java package
+specified in @code{JAVA_PACKAGE_NAME}.
+@end defvr
+
+@defvr {Java project} JAVA_MANIFEST_FILE
+@code{xxx_JAVA_MANIFEST_FILE} can be used to specify a manifest fragment
+that is used when building a jar file for the @strong{xxx} package.
+@strong{xxx} should be replaced with the name of the Java package
+specified in @code{JAVA_PACKAGE_NAME}.
+@end defvr
+
+@defvr {Java project} JAVA_JAR_NAME
+@code{xxx_JAVA_JAR_NAME} can be used to specify a custom name for the jar
+built by @code{make jar}. The default would be the package name (@strong{xxx})
+with all dots replaced by hyphens.
+@end defvr
+
@node library.make, native-library.make, java.make, Project Types
@subsection Libraries (@file{library.make})
@menu
Modified: tools/make/trunk/Instance/Shared/java.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Instance/Shared/java.make?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/Instance/Shared/java.make (original)
+++ tools/make/trunk/Instance/Shared/java.make Sun Dec 21 08:16:04 2014
@@ -64,11 +64,26 @@
shared-instance-java-install \
shared-instance-java-install-dirs \
shared-instance-java-uninstall \
+shared-instance-java-jar \
shared-instance-java-clean
shared-instance-java-all: $(JAVA_OBJ_FILES) \
$(JAVA_JNI_OBJ_FILES) \
$(SUBPROJECT_OBJ_FILES)
+
+ifeq ($(strip $($(GNUSTEP_INSTANCE)_JAVA_JAR_NAME)),)
+ JAVA_JAR_FILE = $(subst .,-,$(GNUSTEP_INSTANCE)).jar
+else
+ JAVA_JAR_FILE = $($(GNUSTEP_INSTANCE)_JAVA_JAR_NAME).jar
+endif
+
+JAVA_MANIFEST_FILE = $($(GNUSTEP_INSTANCE)_JAVA_MANIFEST_FILE)
+ifeq ($(strip $(JAVA_MANIFEST_FILE)),)
+ JAVA_JAR_FLAGS = cf
+else
+ JAVA_JAR_FLAGS = cmf
+endif
+
# By default, we enable "batch compilation" of Java files. This means
# that whenever make determines that a Java files needs recompilation,
@@ -124,6 +139,19 @@
JAVA_PROPERTIES_FILES = $($(GNUSTEP_INSTANCE)_JAVA_PROPERTIES_FILES)
+
+$(JAVA_JAR_FILE): $(JAVA_MANIFEST_FILE) \
+ $(JAVA_OBJ_FILES) \
+ $(ADDITIONAL_JAVA_OBJ_FILES) \
+ $(JAVA_PROPERTIES_FILES)
+ $(ECHO_CREATING_JAR_FILE)$(JAR) $(JAVA_JAR_FLAGS) $(JAVA_MANIFEST_FILE)
\
+ $(JAVA_JAR_FILE) $(filter-out $(JAVA_MANIFEST_FILE),$^);\
+ $(END_ECHO)
+
+shared-instance-java-jar-manifest: $(JAVA_JAR_MANIFEST_FILE)
+
+shared-instance-java-jar: $(JAVA_JAR_FILE)
+
shared-instance-java-install: shared-instance-java-install-dirs
ifneq ($(JAVA_OBJ_FILES),)
$(ECHO_INSTALLING_CLASS_FILES)for file in $(JAVA_OBJ_FILES) __done; do \
@@ -162,6 +190,7 @@
shared-instance-java-clean:
$(ECHO_NOTHING)rm -f $(JAVA_OBJ_FILES) \
$(ADDITIONAL_JAVA_OBJ_FILES) \
+ $(JAVA_JAR_FILE) \
$(JAVA_JNI_OBJ_FILES)$(END_ECHO)
shared-instance-java-uninstall:
Modified: tools/make/trunk/Instance/java.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Instance/java.make?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/Instance/java.make (original)
+++ tools/make/trunk/Instance/java.make Sun Dec 21 08:16:04 2014
@@ -58,6 +58,7 @@
# xxx_JAVA_PROPERTIES_FILES
.PHONY: internal-java_package-all_ \
+ internal-java_package-jar \
internal-java_package-clean \
internal-java_package-distclean \
internal-java_package-install_ \
@@ -86,6 +87,8 @@
internal-java_package-all_:: shared-instance-java-all
+internal-java_package-jar:: shared-instance-java-jar
+
internal-java_package-install_:: shared-instance-java-install
internal-java_package-clean:: shared-instance-java-clean
Modified: tools/make/trunk/Instance/rules.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Instance/rules.make?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/Instance/rules.make (original)
+++ tools/make/trunk/Instance/rules.make Sun Dec 21 08:16:04 2014
@@ -38,6 +38,8 @@
internal-precompile-headers \
before-$(GNUSTEP_INSTANCE)-all after-$(GNUSTEP_INSTANCE)-all \
internal-$(GNUSTEP_TYPE)-all \
+ before-$(GNUSTEP_INSTANCE)-jar after-$(GNUSTEP_INSTANCE)-jar \
+ internal-$(GNUSTEP_TYPE)-jar \
before-$(GNUSTEP_INSTANCE)-install after-$(GNUSTEP_INSTANCE)-install \
internal-$(GNUSTEP_TYPE)-install \
before-$(GNUSTEP_INSTANCE)-uninstall after-$(GNUSTEP_INSTANCE)-uninstall \
@@ -86,7 +88,6 @@
internal-$(GNUSTEP_TYPE)-all_ \
after-$(GNUSTEP_INSTANCE)-all \
internal-$(GNUSTEP_TYPE)-copy_into_dir
-
# To copy into a dir, we always have to first make sure the dir exists :-)
$(COPY_INTO_DIR):
$(ECHO_CREATING)$(MKDIRS) $@$(END_ECHO)
@@ -94,6 +95,10 @@
# The specific project-type makefiles will add more commands.
internal-$(GNUSTEP_TYPE)-copy_into_dir:: $(COPY_INTO_DIR)
endif
+
+before-$(GNUSTEP_INSTANCE)-jar::
+
+after-$(GNUSTEP_INSTANCE)-jar::
before-$(GNUSTEP_INSTANCE)-install::
Modified: tools/make/trunk/Master/java.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Master/java.make?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/Master/java.make (original)
+++ tools/make/trunk/Master/java.make Sun Dec 21 08:16:04 2014
@@ -26,10 +26,13 @@
JAVA_PACKAGE_NAME := $(strip $(JAVA_PACKAGE_NAME))
+
# Parallel building here is probably of little help since most
# GNUmakefiles will have a single java package. There is no point in
# having more than one.
internal-all:: $(JAVA_PACKAGE_NAME:=.all.java-package.variables)
+
+internal-jar:: $(JAVA_PACKAGE_NAME:=.jar.java-package.variables)
internal-install:: $(JAVA_PACKAGE_NAME:=.install.java-package.variables)
Modified: tools/make/trunk/Master/rules.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/Master/rules.make?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/Master/rules.make (original)
+++ tools/make/trunk/Master/rules.make Sun Dec 21 08:16:04 2014
@@ -53,9 +53,14 @@
else
all:: $(GNUSTEP_BUILD_DIR) before-all internal-all after-all
+
+
$(GNUSTEP_BUILD_DIR):
$(ECHO_CREATING)$(MKDIRS) $(GNUSTEP_BUILD_DIR)$(END_ECHO)
endif
+
+
+jar:: all before-jar internal-jar after-jar
# The rule to create the objects file directory. This should be done
# in the Master invocation before any parallel stuff is started (to
@@ -115,6 +120,13 @@
after-all::
+before-jar::
+
+internal-jar::
+
+after-jar::
+
+
ifneq ($(GNUSTEP_INSTALLATION_DIR),)
internal-check-install-permissions:
@if [ -d "$(GNUSTEP_INSTALLATION_DIR)" \
@@ -190,6 +202,7 @@
.PHONY: \
all before-all internal-all after-all \
+ jar before-jar internal-jar after-jar \
install before-install internal-install after-install \
internal-after-install \
uninstall before-uninstall internal-uninstall after-uninstall \
Modified: tools/make/trunk/common.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/common.make?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/common.make (original)
+++ tools/make/trunk/common.make Sun Dec 21 08:16:04 2014
@@ -800,6 +800,12 @@
endif
#
+# The java jar tool.
+#
+ifeq ($(JAR),)
+ JAR = $(JAVA_HOME)/bin/jar
+endif
+
# Common variables - default values
#
# Because this file is included at the beginning of the user's
Modified: tools/make/trunk/messages.make
URL:
http://svn.gna.org/viewcvs/gnustep/tools/make/trunk/messages.make?rev=38254&r1=38253&r2=38254&view=diff
==============================================================================
--- tools/make/trunk/messages.make (original)
+++ tools/make/trunk/messages.make Sun Dec 21 08:16:04 2014
@@ -78,7 +78,7 @@
ECHO_INSTALLING_CLASS_FILES = @(echo " Installing class files...";
ECHO_INSTALLING_ADD_CLASS_FILES = @(echo " Installing nested class files...";
ECHO_INSTALLING_PROPERTIES_FILES = @(echo " Installing property files...";
-
+ ECHO_CREATING_JAR_FILE = @(echo " Creating jar file...";
# Instance/Shared/stamp-string.make
ECHO_CREATING_STAMP_FILE = @(echo " Creating stamp file...";
@@ -118,7 +118,7 @@
ECHO_UNINSTALLING =
ECHO_COPYING_INTO_DIR =
ECHO_CREATING =
- ECHO_NOTHING =
+ ECHO_NOTHING =
ECHO_UPDATING_VERSION_SYMLINK =
@@ -140,7 +140,7 @@
ECHO_INSTALLING_CLASS_FILES =
ECHO_INSTALLING_ADD_CLASS_FILES =
ECHO_INSTALLING_PROPERTIES_FILES =
-
+ ECHO_CREATING_JAR_FILE =
ECHO_CREATING_STAMP_FILE =
ECHO_MAKING_STRINGS =
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs