summaryrefslogtreecommitdiffstats
path: root/pki/cmake
diff options
context:
space:
mode:
authorasn <asn@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2010-10-19 17:45:27 +0000
committerasn <asn@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2010-10-19 17:45:27 +0000
commit5d11bd9a06525640759aeb6cdd95c5dad54d7230 (patch)
tree184ef04336f51097cae7b2b2fa44943094be1631 /pki/cmake
parented4e7fbdce22d8ca5a25f6d95e5d0c841bef8a99 (diff)
downloadpki-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.cmake39
-rw-r--r--pki/cmake/Modules/UseJava.cmake27
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)