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

Reply via email to