summaryrefslogtreecommitdiff
path: root/Modules/UseJava.cmake
diff options
context:
space:
mode:
authorMatthew Woehlke <matthew.woehlke@kitware.com>2017-04-20 14:44:25 -0400
committerMatthew Woehlke <matthew.woehlke@kitware.com>2017-04-21 10:51:09 -0400
commit789c8de3df0c18fe8b0912286e4c1810542a79e9 (patch)
tree5147d2257f4ab01ae7eb7c84d040ce6138553d49 /Modules/UseJava.cmake
parentb4d3cdc8c504ddc5d2618203a831c950f8d0102a (diff)
downloadcmake-789c8de3df0c18fe8b0912286e4c1810542a79e9.tar.gz
UseJava: Support namespaced exports
Add NAMESPACE option to export_jars and install_jar_exports. Import JAR's as imported static libraries rather than custom targets, as this is necessary to allow the imported targets to contain ':' in their names. (This also means they won't show up in VS projects, which is more consistent with other imported targets.) Also, improve the documentation to be more stylistically consistent with documentation elsewhere.
Diffstat (limited to 'Modules/UseJava.cmake')
-rw-r--r--Modules/UseJava.cmake36
1 files changed, 21 insertions, 15 deletions
diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake
index 93255ae43c..8ae372006a 100644
--- a/Modules/UseJava.cmake
+++ b/Modules/UseJava.cmake
@@ -244,21 +244,23 @@
#
# ::
#
-# install_jar_exports(TARGETS jar1 [jar2 ...]
-# FILE export_filename
-# DESTINATION destination [COMPONENT component])
+# install_jar_exports(TARGETS jars...
+# [NAMESPACE <namespace>]
+# FILE <filename>
+# DESTINATION <dir> [COMPONENT <component>])
#
-# This command installs a target export file export_filename for the named jar
-# targets to the given DESTINATION. Its function is similar to that of
-# install(EXPORTS).
+# This command installs a target export file ``<filename>`` for the named jar
+# targets to the given ``DESTINATION``. Its function is similar to that of
+# :command:`install(EXPORTS ...)`.
#
# ::
#
-# export_jars(TARGETS jar1 [jar2 ...]
-# FILE export_filename)
+# export_jars(TARGETS jars...
+# [NAMESPACE <namespace>]
+# FILE <filename>)
#
-# This command writes a target export file export_filename for the named jar
-# targets. Its function is similar to that of export().
+# This command writes a target export file ``<filename>`` for the named jar
+# targets. Its function is similar to that of :command:`export(...)`.
#
# ::
#
@@ -424,10 +426,12 @@ endfunction()
function(__java_export_jar VAR TARGET PATH)
get_target_property(_jarpath ${TARGET} JAR_FILE)
get_filename_component(_jarname ${_jarpath} NAME)
+ set(_target "${_jar_NAMESPACE}${TARGET}")
__java_lcat(${VAR}
- "# Create imported target ${TARGET}"
- "add_custom_target(${TARGET})"
- "set_target_properties(${TARGET} PROPERTIES"
+ "# Create imported target ${_target}"
+ "add_library(${_target} IMPORTED STATIC)"
+ "set_target_properties(${_target} PROPERTIES"
+ " IMPORTED_LOCATION \"${PATH}/${_jarname}\""
" JAR_FILE \"${PATH}/${_jarname}\")"
""
)
@@ -1341,7 +1345,7 @@ function(export_jars)
# Parse and validate arguments
cmake_parse_arguments(_export_jars
""
- "FILE"
+ "FILE;NAMESPACE"
"TARGETS"
${ARGN}
)
@@ -1351,6 +1355,7 @@ function(export_jars)
if (NOT _export_jars_TARGETS)
message(SEND_ERROR "export_jars: TARGETS must be specified.")
endif()
+ set(_jar_NAMESPACE "${_export_jars_NAMESPACE}")
# Set content of generated exports file
string(REPLACE ";" " " __targets__ "${_export_jars_TARGETS}")
@@ -1373,7 +1378,7 @@ function(install_jar_exports)
# Parse and validate arguments
cmake_parse_arguments(_install_jar_exports
""
- "FILE;DESTINATION;COMPONENT"
+ "FILE;DESTINATION;COMPONENT;NAMESPACE"
"TARGETS"
${ARGN}
)
@@ -1386,6 +1391,7 @@ function(install_jar_exports)
if (NOT _install_jar_exports_TARGETS)
message(SEND_ERROR "install_jar_exports: TARGETS must be specified.")
endif()
+ set(_jar_NAMESPACE "${_install_jar_exports_NAMESPACE}")
if (_install_jar_exports_COMPONENT)
set (_COMPONENT COMPONENT ${_install_jar_exports_COMPONENT})