summaryrefslogtreecommitdiffstats
path: root/Modules/UseJava/ClassFilelist.cmake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-12-11 15:39:14 (GMT)
committerBrad King <brad.king@kitware.com>2020-12-11 15:39:14 (GMT)
commit3765a415dfd4c521b4e656412503cbe1051a4c0b (patch)
treea29565d1f4efd97306d2f23684b04e9a659bb2fc /Modules/UseJava/ClassFilelist.cmake
parentff4d1d44f217bcbd90ba97f0fc41806cccb34e57 (diff)
parentadc6a4c5402658b8218a591639b652604893b919 (diff)
downloadCMake-3765a415dfd4c521b4e656412503cbe1051a4c0b.zip
CMake-3765a415dfd4c521b4e656412503cbe1051a4c0b.tar.gz
CMake-3765a415dfd4c521b4e656412503cbe1051a4c0b.tar.bz2
Merge branch 'master' into doc-3_19_release-fixes
Diffstat (limited to 'Modules/UseJava/ClassFilelist.cmake')
-rw-r--r--Modules/UseJava/ClassFilelist.cmake40
1 files changed, 40 insertions, 0 deletions
diff --git a/Modules/UseJava/ClassFilelist.cmake b/Modules/UseJava/ClassFilelist.cmake
new file mode 100644
index 0000000..aa9e35d
--- /dev/null
+++ b/Modules/UseJava/ClassFilelist.cmake
@@ -0,0 +1,40 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+# This script creates 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.
+
+if (CMAKE_JAVA_CLASS_OUTPUT_PATH)
+ if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}")
+
+ set(_JAVA_GLOBBED_FILES)
+ if (CMAKE_JAR_CLASSES_PREFIX)
+ foreach(JAR_CLASS_PREFIX ${CMAKE_JAR_CLASSES_PREFIX})
+ message(STATUS "JAR_CLASS_PREFIX: ${JAR_CLASS_PREFIX}")
+
+ file(GLOB_RECURSE _JAVA_GLOBBED_TMP_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${JAR_CLASS_PREFIX}/*.class")
+ if (_JAVA_GLOBBED_TMP_FILES)
+ list(APPEND _JAVA_GLOBBED_FILES ${_JAVA_GLOBBED_TMP_FILES})
+ endif ()
+ endforeach()
+ else()
+ file(GLOB_RECURSE _JAVA_GLOBBED_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/*.class")
+ endif ()
+
+ set(_JAVA_CLASS_FILES)
+ # file(GLOB_RECURSE foo RELATIVE) is broken so we need this.
+ 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()
+
+ # write to file
+ file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist ${_JAVA_CLASS_FILES})
+
+ else ()
+ message(SEND_ERROR "FATAL: Java class output path doesn't exist")
+ endif ()
+else ()
+ message(SEND_ERROR "FATAL: Can't find CMAKE_JAVA_CLASS_OUTPUT_PATH")
+endif ()