summaryrefslogtreecommitdiffstats
path: root/pki/cmake/Modules/UseJava.cmake
diff options
context:
space:
mode:
authorasn <asn@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2010-10-19 17:45:47 +0000
committerasn <asn@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2010-10-19 17:45:47 +0000
commite1d01f8765ea2650d1f3789c89afb8dd6edc39c2 (patch)
tree8bade1ef1043194ce518e6a0f45692b366f26903 /pki/cmake/Modules/UseJava.cmake
parenta8cbde23926de486fcf194dd87a3c45009ea7b5f (diff)
cmake: Added version support to add_jar().
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@1416 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
Diffstat (limited to 'pki/cmake/Modules/UseJava.cmake')
-rw-r--r--pki/cmake/Modules/UseJava.cmake64
1 files changed, 55 insertions, 9 deletions
diff --git a/pki/cmake/Modules/UseJava.cmake b/pki/cmake/Modules/UseJava.cmake
index 87cccfdca..af803f118 100644
--- a/pki/cmake/Modules/UseJava.cmake
+++ b/pki/cmake/Modules/UseJava.cmake
@@ -20,6 +20,19 @@
#
# set(CMAKE_JAVA_INCLUDE_PATH /usr/share/java/shibboleet.jar)
#
+# To use a different output name for the target you can set it with:
+#
+# set(CMAKE_JAVA_TARGET_OUTPUT_NAME shibboleet.jar)
+# add_jar(foobar foobar.java)
+#
+# To add a VERSION to the target output name you can set it using
+# CMAKE_JAVA_TARGET_NAME. This will create a jar file with the name
+# shibboleet-1.0.0.jar and will create a symlink shibboleet.jar pointing
+# to the jar with the version information.
+#
+# set(CMAKE_JAVA_TARGET_VERSION 1.2.0)
+# add_jar(shibboleet shibbotleet.java)
+#
#=============================================================================
# Copyright 2010 Andreas schneider <asn@redhat.com>
#
@@ -83,10 +96,16 @@ function(ADD_JAR _TARGET_NAME)
add_custom_target(${_TARGET_NAME} ALL)
- get_target_property(_JAVA_OUTPUT_NAME ${_TARGET_NAME} OUTPUT_NAME)
- if (NOT _JAVA_OUTPUT_NAME)
- set(_JAVA_OUTPUT_NAME "${_TARGET_NAME}.jar")
- endif (NOT _JAVA_OUTPUT_NAME)
+ set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}.jar")
+ if (CMAKE_JAVA_TARGET_OUTPUT_NAME AND CMAKE_JAVA_TARGET_VERSION)
+ set(_JAVA_TARGET_OUTPUT_NAME "${CMAKE_JAVA_TARGET_OUTPUT_NAME}-${CMAKE_JAVA_TARGET_VERSION}.jar")
+ set(_JAVA_TARGET_OUTPUT_LINK "${CMAKE_JAVA_TARGET_OUTPUT_NAME}.jar")
+ elseif (CMAKE_JAVA_TARGET_VERSION)
+ set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}-${CMAKE_JAVA_TARGET_VERSION}.jar")
+ set(_JAVA_TARGET_OUTPUT_LINK "${_TARGET_NAME}.jar")
+ elseif (CMAKE_JAVA_TARGET_OUTPUT_NAME)
+ set(_JAVA_TARGET_OUTPUT_NAME "${CMAKE_JAVA_TARGET_OUTPUT_NAME}.jar")
+ endif (CMAKE_JAVA_TARGET_OUTPUT_NAME AND CMAKE_JAVA_TARGET_VERSION)
set(_JAVA_CLASS_FILES)
set(_JAVA_COMPILE_FILES)
@@ -110,14 +129,21 @@ function(ADD_JAR _TARGET_NAME)
# Check if we have a local UseJavaClassFilelist.cmake
if (EXISTS ${CMAKE_MODULE_PATH}/UseJavaClassFilelist.cmake)
- set(_JAVA_CLASS_FILELIST ${CMAKE_MODULE_PATH}/UseJavaClassFilelist.cmake)
+ set(_JAVA_CLASS_FILELIST_SCRIPT ${CMAKE_MODULE_PATH}/UseJavaClassFilelist.cmake)
elseif (EXISTS ${CMAKE_ROOT}/Modules/UseJavaClassFilelist.cmake)
- set(_JAVA_CLASS_FILELIST ${CMAKE_ROOT}/Modules/UseJavaClassFilelist.cmake)
+ set(_JAVA_CLASS_FILELIST_SCRIPT ${CMAKE_ROOT}/Modules/UseJavaClassFilelist.cmake)
endif (EXISTS ${CMAKE_MODULE_PATH}/UseJavaClassFilelist.cmake)
# create an empty java_class_filelist
file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist "")
+ # Check if we have a local UseJavaClassFilelist.cmake
+ if (EXISTS ${CMAKE_MODULE_PATH}/UseJavaSymlinks.cmake)
+ set(_JAVA_SYMLINK_SCRIPT ${CMAKE_MODULE_PATH}/UseJavaSymlinks.cmake)
+ elseif (EXISTS ${CMAKE_ROOT}/Modules/UseJavaSymlinks.cmake)
+ set(_JAVA_SYMLINK_SCRIPT ${CMAKE_ROOT}/Modules/UseJavaSymlinks.cmake)
+ endif (EXISTS ${CMAKE_MODULE_PATH}/UseJavaSymlinks.cmake)
+
if (_JAVA_COMPILE_FILES)
# Compile the java files and create a list of class files
add_custom_command(
@@ -129,7 +155,7 @@ function(ADD_JAR _TARGET_NAME)
${_JAVA_COMPILE_FILES}
COMMAND ${CMAKE_COMMAND}
-DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH}
- -P ${_JAVA_CLASS_FILELIST}
+ -P ${_JAVA_CLASS_FILELIST_SCRIPT}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building Java objects for ${_TARGET_NAME}.jar"
)
@@ -139,9 +165,29 @@ function(ADD_JAR _TARGET_NAME)
add_custom_command(
TARGET ${_TARGET_NAME}
COMMAND ${CMAKE_Java_ARCHIVE}
- -cf ${CMAKE_CURRENT_BINARY_DIR}/${_JAVA_OUTPUT_NAME}
+ -cf ${CMAKE_CURRENT_BINARY_DIR}/${_JAVA_TARGET_OUTPUT_NAME}
${_JAVA_RESOURCE_FILES} @java_class_filelist
+ COMMAND ${CMAKE_COMMAND}
+ -D_JAVA_TARGET_DIR=${CMAKE_CURRENT_BINARY_DIR}
+ -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME}
+ -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK}
+ -P ${_JAVA_SYMLINK_SCRIPT}
WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
- COMMENT "Creating Java archive ${_JAVA_OUTPUT_NAME}"
+ COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}"
)
+
+ set(${_TARGET_NAME}_INSTALL_FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/${_JAVA_TARGET_OUTPUT_NAME}
+ PARENT_SCOPE)
+ if (_JAVA_TARGET_OUTPUT_LINK)
+ set(${_TARGET_NAME}_INSTALL_FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/${_JAVA_TARGET_OUTPUT_NAME}
+ ${CMAKE_CURRENT_BINARY_DIR}/${_JAVA_TARGET_OUTPUT_LINK}
+ PARENT_SCOPE)
+ endif (_JAVA_TARGET_OUTPUT_LINK)
+ set(${_TARGET_NAME}_JAR_FILE
+ ${CMAKE_CURRENT_BINARY_DIR}/${_JAVA_TARGET_OUTPUT_NAME} PARENT_SCOPE)
+ set(${_TARGET_NAME}_CLASS_DIR
+ ${CMAKE_JAVA_CLASS_OUTPUT_PATH}
+ PARENT_SCOPE)
endfunction(ADD_JAR)