Hi

Following this thread ( 
http://www.cmake.org/pipermail/cmake/2011-December/048015.html ) and bug ( 
http://public.kitware.com/Bug/view.php?id=12886 ), i would like to submit a 
patch that allow to specify a Manifest.txt when creating a jar.

Could you review it please ?

Regards.

Paul.


From d904e38deda4277a8daabe0b4c37f62be8cf4ac0 Mon Sep 17 00:00:00 2001
From: Paul Chavent <[email protected]>
Date: Mon, 17 Jun 2013 15:57:11 +0200
Subject: [PATCH] Add the options to insert a manifest in a jar.

---
 Modules/UseJava.cmake |   20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake
index 9c23127..e134be2 100644
--- a/Modules/UseJava.cmake
+++ b/Modules/UseJava.cmake
@@ -7,6 +7,7 @@
 #         [SOURCES] source1 [source2 ...] [resource1 ...]
 #         [INCLUDE_JARS jar1 [jar2 ...]]
 #         [ENTRY_POINT entry]
+#         [MANIFEST manifest]
 #         [VERSION version]
 #         [OUTPUT_NAME name]
 #         [OUTPUT_DIR dir]
@@ -49,6 +50,11 @@
 #
 #       add_jar(example ENTRY_POINT com/examples/MyProject/Main)
 #
+#   To define a Manifest in your jar you can set it with the MANIFEST
+#   named argument:
+#
+#       add_jar(example MANIFEST /path/to/the/Manifest.txt)
+#
 #   To add a VERSION to the target output name you can set it using
 #   the VERSION named argument to add_jar. This will create a jar file with the
 #   name shibboleet-1.0.0.jar and will create a symlink shibboleet.jar
@@ -235,10 +241,13 @@ function(add_jar _TARGET_NAME)
     if(DEFINED CMAKE_JAVA_JAR_ENTRY_POINT)
         set(_add_jar_ENTRY_POINT "${CMAKE_JAVA_JAR_ENTRY_POINT}")
     endif()
+    if(DEFINED CMAKE_JAVA_JAR_MANIFEST)
+        set(_add_jar_MANIFEST "${CMAKE_JAVA_JAR_MANIFEST}")
+    endif()
 
     cmake_parse_arguments(_add_jar
       ""
-      "VERSION;OUTPUT_DIR;OUTPUT_NAME;ENTRY_POINT"
+      "VERSION;OUTPUT_DIR;OUTPUT_NAME;ENTRY_POINT;MANIFEST"
       "SOURCES;INCLUDE_JARS"
       ${ARGN}
     )
@@ -254,6 +263,11 @@ function(add_jar _TARGET_NAME)
         set(_ENTRY_POINT_VALUE ${_add_jar_ENTRY_POINT})
     endif ()
 
+    if (_add_jar_MANIFEST)
+      set(_MANIFEST_OPTION m)
+      set(_MANIFEST_VALUE ${_add_jar_MANIFEST})
+    endif ()
+
     if (LIBRARY_OUTPUT_PATH)
         set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH})
     else ()
@@ -392,7 +406,7 @@ function(add_jar _TARGET_NAME)
         add_custom_command(
             OUTPUT ${_JAVA_JAR_OUTPUT_PATH}
             COMMAND ${Java_JAR_EXECUTABLE}
-                -cf${_ENTRY_POINT_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE}
+                -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE}
                 ${_JAVA_RESOURCE_FILES} @java_class_filelist
             COMMAND ${CMAKE_COMMAND}
                 -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
@@ -412,7 +426,7 @@ function(add_jar _TARGET_NAME)
         add_custom_command(
             OUTPUT ${_JAVA_JAR_OUTPUT_PATH}
             COMMAND ${Java_JAR_EXECUTABLE}
-                -cf${_ENTRY_POINT_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE}
+                -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE}
                 ${_JAVA_RESOURCE_FILES} @java_class_filelist
             COMMAND ${CMAKE_COMMAND}
                 -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR}
-- 
1.7.9.5

--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to