summaryrefslogtreecommitdiffstats
path: root/Modules/UseJava.cmake
diff options
context:
space:
mode:
authorMatthew Woehlke <matthew.woehlke@kitware.com>2017-04-20 18:44:25 (GMT)
committerMatthew Woehlke <matthew.woehlke@kitware.com>2017-04-21 14:51:09 (GMT)
commit789c8de3df0c18fe8b0912286e4c1810542a79e9 (patch)
tree5147d2257f4ab01ae7eb7c84d040ce6138553d49 /Modules/UseJava.cmake
parentb4d3cdc8c504ddc5d2618203a831c950f8d0102a (diff)
downloadCMake-789c8de3df0c18fe8b0912286e4c1810542a79e9.zip
CMake-789c8de3df0c18fe8b0912286e4c1810542a79e9.tar.gz
CMake-789c8de3df0c18fe8b0912286e4c1810542a79e9.tar.bz2
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 93255ae..8ae3720 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})