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
