mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
UseJava: extract function to prepare the classpath arguments in add_jar
This commit is contained in:
+43
-19
@@ -568,6 +568,9 @@ Creating Java Documentation
|
||||
generated docs. Same behavior as option ``-version`` of ``javadoc`` tool.
|
||||
#]=======================================================================]
|
||||
|
||||
block(SCOPE_FOR POLICIES)
|
||||
cmake_policy(SET CMP0140 NEW) # For return(PROPAGATE ...)
|
||||
|
||||
function (__java_copy_file src dest comment)
|
||||
add_custom_command(
|
||||
OUTPUT ${dest}
|
||||
@@ -665,6 +668,37 @@ else ()
|
||||
set(_UseJava_PATH_SEP ":")
|
||||
endif()
|
||||
|
||||
function(__java_resolve_jar outvar_path path_or_tgt)
|
||||
if (TARGET "${path_or_tgt}")
|
||||
# Check if this is a target created by add_jar
|
||||
get_target_property(jarpath "${path_or_tgt}" JAR_FILE)
|
||||
set("${outvar_path}" "${jarpath}")
|
||||
if (NOT jarpath) # Some other target that we do not know how to use as a JAR
|
||||
message(SEND_ERROR "target ${path_or_tgt} is not a jar")
|
||||
endif ()
|
||||
else () # Interpreted as the path to an external JAR
|
||||
set("${outvar_path}" "${path_or_tgt}")
|
||||
endif ()
|
||||
return(PROPAGATE "${outvar_path}")
|
||||
endfunction()
|
||||
|
||||
# Helper that processes a list of add_jar-created targets or paths to external
|
||||
# JAR files and:
|
||||
# - appends each item (target name or JAR path) to the list in outvar_depsraw.
|
||||
# - appends the resolved JAR path to the list in outvar_depsresolved.
|
||||
# If any item cannot be resolved, because it is a target name that was not
|
||||
# created by add_jar, a SEND_ERROR message is raised.
|
||||
function(__java_build_deplists outvar_depsraw outvar_depsresolved jars_or_targets_lst)
|
||||
foreach(item IN LISTS "${jars_or_targets_lst}")
|
||||
__java_resolve_jar(res_path "${item}")
|
||||
if (res_path) # We would get a falsy value in the error case
|
||||
list(APPEND "${outvar_depsraw}" "${item}") # Keep the original name (possibly a target) here
|
||||
list(APPEND "${outvar_depsresolved}" "${res_path}")
|
||||
endif ()
|
||||
endforeach()
|
||||
return(PROPAGATE "${outvar_depsraw}" "${outvar_depsresolved}")
|
||||
endfunction()
|
||||
|
||||
function(add_jar _TARGET_NAME)
|
||||
|
||||
set(options) # currently there are no zero value args (aka: options)
|
||||
@@ -838,7 +872,8 @@ function(add_jar _TARGET_NAME)
|
||||
# Ignored for backward compatibility
|
||||
|
||||
elseif (_JAVA_EXT STREQUAL "")
|
||||
list(APPEND CMAKE_JAVA_INCLUDE_PATH ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}} ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}_CLASSPATH})
|
||||
# XXX: this was not being used after setting!
|
||||
# list(APPEND CMAKE_JAVA_INCLUDE_PATH ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}} ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}_CLASSPATH})
|
||||
list(APPEND _JAVA_DEPENDS ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}})
|
||||
|
||||
else ()
|
||||
@@ -857,24 +892,11 @@ function(add_jar _TARGET_NAME)
|
||||
_JAVA_RESOURCE_FILES_RELATIVE)
|
||||
endif()
|
||||
|
||||
foreach(_JAVA_INCLUDE_JAR IN LISTS _add_jar_INCLUDE_JARS)
|
||||
if (TARGET ${_JAVA_INCLUDE_JAR})
|
||||
get_target_property(_JAVA_JAR_PATH ${_JAVA_INCLUDE_JAR} JAR_FILE)
|
||||
if (_JAVA_JAR_PATH)
|
||||
string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${_JAVA_JAR_PATH}")
|
||||
list(APPEND CMAKE_JAVA_INCLUDE_PATH ${_JAVA_JAR_PATH})
|
||||
list(APPEND _JAVA_DEPENDS ${_JAVA_INCLUDE_JAR})
|
||||
list(APPEND _JAVA_COMPILE_DEPENDS ${_JAVA_JAR_PATH})
|
||||
else ()
|
||||
message(SEND_ERROR "add_jar: INCLUDE_JARS target ${_JAVA_INCLUDE_JAR} is not a jar")
|
||||
endif ()
|
||||
else ()
|
||||
string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${_JAVA_INCLUDE_JAR}")
|
||||
list(APPEND CMAKE_JAVA_INCLUDE_PATH "${_JAVA_INCLUDE_JAR}")
|
||||
list(APPEND _JAVA_DEPENDS "${_JAVA_INCLUDE_JAR}")
|
||||
list(APPEND _JAVA_COMPILE_DEPENDS "${_JAVA_INCLUDE_JAR}")
|
||||
endif ()
|
||||
endforeach()
|
||||
# Build dependency lists and arguments for JARs in the classpath
|
||||
__java_build_deplists(_JAVA_DEPENDS _JAVA_COMPILE_DEPENDS _add_jar_INCLUDE_JARS)
|
||||
foreach (resolved_cp_item IN LISTS _JAVA_COMPILE_DEPENDS)
|
||||
string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${resolved_cp_item}")
|
||||
endforeach ()
|
||||
|
||||
if (_JAVA_COMPILE_FILES OR _JAVA_COMPILE_FILELISTS)
|
||||
set (_JAVA_SOURCES_FILELISTS)
|
||||
@@ -1725,3 +1747,5 @@ function(install_jar_exports)
|
||||
DESTINATION ${_install_jar_exports_DESTINATION}
|
||||
${_COMPONENT})
|
||||
endfunction()
|
||||
|
||||
endblock()
|
||||
|
||||
Reference in New Issue
Block a user