diff options
author | asn <asn@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2010-10-19 17:45:27 +0000 |
---|---|---|
committer | asn <asn@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2010-10-19 17:45:27 +0000 |
commit | 5d11bd9a06525640759aeb6cdd95c5dad54d7230 (patch) | |
tree | 184ef04336f51097cae7b2b2fa44943094be1631 /pki/cmake | |
parent | ed4e7fbdce22d8ca5a25f6d95e5d0c841bef8a99 (diff) | |
download | pki-5d11bd9a06525640759aeb6cdd95c5dad54d7230.tar.gz pki-5d11bd9a06525640759aeb6cdd95c5dad54d7230.tar.xz pki-5d11bd9a06525640759aeb6cdd95c5dad54d7230.zip |
cmake: Added improved jar file creation.
This avoids that the jar file is polluted with build system CMake files.
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@1407 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
Diffstat (limited to 'pki/cmake')
-rw-r--r-- | pki/cmake/Modules/JavaClassFilelist.cmake | 39 | ||||
-rw-r--r-- | pki/cmake/Modules/UseJava.cmake | 27 |
2 files changed, 50 insertions, 16 deletions
diff --git a/pki/cmake/Modules/JavaClassFilelist.cmake b/pki/cmake/Modules/JavaClassFilelist.cmake new file mode 100644 index 000000000..bee84a264 --- /dev/null +++ b/pki/cmake/Modules/JavaClassFilelist.cmake @@ -0,0 +1,39 @@ +# +# This script create a list of compiled Java class files to be added to a +# jar file. This avoids including cmake files which get created in the +# binary directory. +# +#============================================================================= +# Copyright 2010 Andreas schneider <asn@redhat.com> +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +if (CMAKE_JAVA_CLASS_OUTPUT_PATH) + if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}") + # glob for class files + file(GLOB_RECURSE _JAVA_GLOBBED_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/*.class") + + # create relative path + set(_JAVA_CLASS_FILES) + foreach(_JAVA_GLOBBED_FILE ${_JAVA_GLOBBED_FILES}) + file(RELATIVE_PATH _JAVA_CLASS_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH} ${_JAVA_GLOBBED_FILE}) + set(_JAVA_CLASS_FILES "${_JAVA_CLASS_FILES}${_JAVA_CLASS_FILE}\n") + endforeach(_JAVA_GLOBBED_FILE ${_JAVA_GLOBBED_FILES}) + + # write to file + file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist ${_JAVA_CLASS_FILES}) + + else (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}") + message(SEND_ERROR "FATAL: Java class output path doesn't exist") + endif (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}") +else (CMAKE_JAVA_CLASS_OUTPUT_PATH) + message(SEND_ERROR "FATAL: Can't find CMAKE_JAVA_CLASS_OUTPUT_PATH") +endif (CMAKE_JAVA_CLASS_OUTPUT_PATH) diff --git a/pki/cmake/Modules/UseJava.cmake b/pki/cmake/Modules/UseJava.cmake index ff20193af..3ff782e8a 100644 --- a/pki/cmake/Modules/UseJava.cmake +++ b/pki/cmake/Modules/UseJava.cmake @@ -84,19 +84,6 @@ function(ADD_JAR _TARGET_NAME) set(_JAVA_CLASS_FILE "${_JAVA_PATH}/${_JAVA_FILE}.class") set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES} ${_JAVA_CLASS_FILE}) - # TODO FIXME - if (FALSE) - add_custom_command( - TARGET ${_TARGET_NAME} - COMMAND ${CMAKE_Java_COMPILER} - ${CMAKE_JAVA_COMPILE_FLAGS} - -classpath ${CMAKE_JAVA_INCLUDE_PATH_FINAL} - -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - ${_JAVA_SOURCE_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT "Building Java object ${_JAVA_CLASS_FILE}" - ) - endif() else (_JAVA_EXT MATCHES ".java") java_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/${_JAVA_SOURCE_FILE} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE}) @@ -104,7 +91,11 @@ function(ADD_JAR _TARGET_NAME) endif (_JAVA_EXT MATCHES ".java") endforeach(_JAVA_SOURCE_FILE) + # create an empty java_class_filelist + file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist "") + if (_JAVA_COMPILE_FILES) + # Compile the java files and create a list of class files add_custom_command( TARGET ${_TARGET_NAME} COMMAND ${CMAKE_Java_COMPILER} @@ -112,17 +103,21 @@ function(ADD_JAR _TARGET_NAME) -classpath ${CMAKE_JAVA_INCLUDE_PATH_FINAL} -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH} ${_JAVA_COMPILE_FILES} + COMMAND ${CMAKE_COMMAND} + -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH} + -P ${CMAKE_MODULE_PATH}/JavaClassFilelist.cmake WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Building Java objects for ${_TARGET_NAME}.jar" ) endif (_JAVA_COMPILE_FILES) + # create the jar file add_custom_command( TARGET ${_TARGET_NAME} COMMAND ${CMAKE_Java_ARCHIVE} - -cf ${_JAVA_OUTPUT_NAME} - -C ${CMAKE_JAVA_CLASS_OUTPUT_PATH} . - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + -cf ${CMAKE_CURRENT_BINARY_DIR}/${_JAVA_OUTPUT_NAME} + ${_JAVA_RESOURCE_FILES} @java_class_filelist + WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} COMMENT "Creating Java archive ${_JAVA_OUTPUT_NAME}" ) endfunction(ADD_JAR) |