1# Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2# file Copyright.txt or https://cmake.org/licensing for details. 3 4# This script creates a list of compiled Java class files to be added to 5# a jar file. This avoids including cmake files which get created in 6# the binary directory. 7 8if (CMAKE_JAVA_CLASS_OUTPUT_PATH) 9 if (EXISTS "${CMAKE_JAVA_CLASS_OUTPUT_PATH}") 10 11 set(_JAVA_GLOBBED_FILES) 12 if (CMAKE_JAR_CLASSES_PREFIX) 13 foreach(JAR_CLASS_PREFIX ${CMAKE_JAR_CLASSES_PREFIX}) 14 message(STATUS "JAR_CLASS_PREFIX: ${JAR_CLASS_PREFIX}") 15 16 file(GLOB_RECURSE _JAVA_GLOBBED_TMP_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${JAR_CLASS_PREFIX}/*.class") 17 if (_JAVA_GLOBBED_TMP_FILES) 18 list(APPEND _JAVA_GLOBBED_FILES ${_JAVA_GLOBBED_TMP_FILES}) 19 endif () 20 endforeach() 21 else() 22 file(GLOB_RECURSE _JAVA_GLOBBED_FILES "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/*.class") 23 endif () 24 25 set(_JAVA_CLASS_FILES) 26 # file(GLOB_RECURSE foo RELATIVE) is broken so we need this. 27 foreach(_JAVA_GLOBBED_FILE ${_JAVA_GLOBBED_FILES}) 28 file(RELATIVE_PATH _JAVA_CLASS_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH} ${_JAVA_GLOBBED_FILE}) 29 set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES}${_JAVA_CLASS_FILE}\n) 30 endforeach() 31 32 # write to file 33 file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist ${_JAVA_CLASS_FILES}) 34 35 else () 36 message(SEND_ERROR "FATAL: Java class output path doesn't exist") 37 endif () 38else () 39 message(SEND_ERROR "FATAL: Can't find CMAKE_JAVA_CLASS_OUTPUT_PATH") 40endif () 41