diff options
| author | Brad King <brad.king@kitware.com> | 2020-12-02 13:21:12 (GMT) |
|---|---|---|
| committer | Brad King <brad.king@kitware.com> | 2020-12-02 13:21:12 (GMT) |
| commit | bdfa5ac7f6cfc961665064f1b7a1395cfd0b2281 (patch) | |
| tree | 9f9c8f4ef0db863fb6adc0ae70891477d66d1cdb /Modules/UseJava/ClassFilelist.cmake | |
| parent | f7ff0d34f0750387f5c56483ab6ba3fb4825b62d (diff) | |
| parent | 628d7ef67258f67e0b4086905011d90727d8b9a1 (diff) | |
| download | CMake-bdfa5ac7f6cfc961665064f1b7a1395cfd0b2281.zip CMake-bdfa5ac7f6cfc961665064f1b7a1395cfd0b2281.tar.gz CMake-bdfa5ac7f6cfc961665064f1b7a1395cfd0b2281.tar.bz2 | |
Merge branch 'master' into llvm-rc-preprocess-as-c
Diffstat (limited to 'Modules/UseJava/ClassFilelist.cmake')
| -rw-r--r-- | Modules/UseJava/ClassFilelist.cmake | 40 |
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 () |
