From cb28d9af1ff3f01c7b1e63f819cbe67723110fe2 Mon Sep 17 00:00:00 2001 From: Nikita Nemkin Date: Thu, 12 Nov 2020 14:07:32 +0500 Subject: UseJava: Move helper scripts to subdirectory Also, exclude them from the help module index. --- Help/manual/cmake-modules.7.rst | 2 -- Help/module/UseJavaClassFilelist.rst | 1 - Help/module/UseJavaSymlinks.rst | 1 - Modules/UseJava.cmake | 6 ++--- Modules/UseJava/ClassFilelist.cmake | 40 +++++++++++++++++++++++++++++ Modules/UseJava/Symlinks.cmake | 20 +++++++++++++++ Modules/UseJava/javaTargets.cmake.in | 39 ++++++++++++++++++++++++++++ Modules/UseJavaClassFilelist.cmake | 49 ------------------------------------ Modules/UseJavaSymlinks.cmake | 29 --------------------- Modules/javaTargets.cmake.in | 39 ---------------------------- 10 files changed, 102 insertions(+), 124 deletions(-) delete mode 100644 Help/module/UseJavaClassFilelist.rst delete mode 100644 Help/module/UseJavaSymlinks.rst create mode 100644 Modules/UseJava/ClassFilelist.cmake create mode 100644 Modules/UseJava/Symlinks.cmake create mode 100644 Modules/UseJava/javaTargets.cmake.in delete mode 100644 Modules/UseJavaClassFilelist.cmake delete mode 100644 Modules/UseJavaSymlinks.cmake delete mode 100644 Modules/javaTargets.cmake.in diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst index 14af149..e90c9ee 100644 --- a/Help/manual/cmake-modules.7.rst +++ b/Help/manual/cmake-modules.7.rst @@ -97,9 +97,7 @@ These modules are loaded using the :command:`include` command. /module/TestForSSTREAM /module/TestForSTDNamespace /module/UseEcos - /module/UseJavaClassFilelist /module/UseJava - /module/UseJavaSymlinks /module/UseSWIG /module/UsewxWidgets /module/WriteCompilerDetectionHeader diff --git a/Help/module/UseJavaClassFilelist.rst b/Help/module/UseJavaClassFilelist.rst deleted file mode 100644 index b9cd476..0000000 --- a/Help/module/UseJavaClassFilelist.rst +++ /dev/null @@ -1 +0,0 @@ -.. cmake-module:: ../../Modules/UseJavaClassFilelist.cmake diff --git a/Help/module/UseJavaSymlinks.rst b/Help/module/UseJavaSymlinks.rst deleted file mode 100644 index 2fab8e8..0000000 --- a/Help/module/UseJavaSymlinks.rst +++ /dev/null @@ -1 +0,0 @@ -.. cmake-module:: ../../Modules/UseJavaSymlinks.cmake diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake index db3fb95..bbd469e 100644 --- a/Modules/UseJava.cmake +++ b/Modules/UseJava.cmake @@ -406,8 +406,8 @@ function(__java_export_jar VAR TARGET PATH) endfunction() # define helper scripts -set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/javaTargets.cmake.in) -set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaSymlinks.cmake) +set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJava/javaTargets.cmake.in) +set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJava/Symlinks.cmake) if (CMAKE_HOST_WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") set(_UseJava_PATH_SEP "$") @@ -636,7 +636,7 @@ function(add_jar _TARGET_NAME) COMMAND ${CMAKE_COMMAND} -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH} -DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX} - -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJavaClassFilelist.cmake + -P ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/UseJava/ClassFilelist.cmake DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} VERBATIM 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 () diff --git a/Modules/UseJava/Symlinks.cmake b/Modules/UseJava/Symlinks.cmake new file mode 100644 index 0000000..2788195 --- /dev/null +++ b/Modules/UseJava/Symlinks.cmake @@ -0,0 +1,20 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +# Helper script for UseJava.cmake + +if (UNIX AND _JAVA_TARGET_OUTPUT_LINK) + if (_JAVA_TARGET_OUTPUT_NAME) + find_program(LN_EXECUTABLE + NAMES + ln + ) + + execute_process( + COMMAND ${LN_EXECUTABLE} -sf "${_JAVA_TARGET_OUTPUT_NAME}" "${_JAVA_TARGET_OUTPUT_LINK}" + WORKING_DIRECTORY ${_JAVA_TARGET_DIR} + ) + else () + message(SEND_ERROR "FATAL: Can't find _JAVA_TARGET_OUTPUT_NAME") + endif () +endif () diff --git a/Modules/UseJava/javaTargets.cmake.in b/Modules/UseJava/javaTargets.cmake.in new file mode 100644 index 0000000..c5f9c78 --- /dev/null +++ b/Modules/UseJava/javaTargets.cmake.in @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 2.8) +cmake_policy(PUSH) +cmake_policy(VERSION 2.8) + +#---------------------------------------------------------------- +# Generated CMake Java target import file. +#---------------------------------------------------------------- + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget @__targets__@) + list(APPEND _expectedTargets ${_expectedTarget}) + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + else() + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() +endforeach() +if("%${_targetsDefined}" STREQUAL "%${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR + "Some (but not all) targets in this export set were already defined.\n" + "Targets Defined: ${_targetsDefined}\n" + "Targets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + +@__targetdefs__@ +cmake_policy(POP) diff --git a/Modules/UseJavaClassFilelist.cmake b/Modules/UseJavaClassFilelist.cmake deleted file mode 100644 index 1c4baa9..0000000 --- a/Modules/UseJavaClassFilelist.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -UseJavaClassFilelist --------------------- - - - - - -This script create 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 () diff --git a/Modules/UseJavaSymlinks.cmake b/Modules/UseJavaSymlinks.cmake deleted file mode 100644 index 3969f54..0000000 --- a/Modules/UseJavaSymlinks.cmake +++ /dev/null @@ -1,29 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -# file Copyright.txt or https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -UseJavaSymlinks ---------------- - - - - - -Helper script for UseJava.cmake -#]=======================================================================] - -if (UNIX AND _JAVA_TARGET_OUTPUT_LINK) - if (_JAVA_TARGET_OUTPUT_NAME) - find_program(LN_EXECUTABLE - NAMES - ln - ) - - execute_process( - COMMAND ${LN_EXECUTABLE} -sf "${_JAVA_TARGET_OUTPUT_NAME}" "${_JAVA_TARGET_OUTPUT_LINK}" - WORKING_DIRECTORY ${_JAVA_TARGET_DIR} - ) - else () - message(SEND_ERROR "FATAL: Can't find _JAVA_TARGET_OUTPUT_NAME") - endif () -endif () diff --git a/Modules/javaTargets.cmake.in b/Modules/javaTargets.cmake.in deleted file mode 100644 index c5f9c78..0000000 --- a/Modules/javaTargets.cmake.in +++ /dev/null @@ -1,39 +0,0 @@ -cmake_minimum_required(VERSION 2.8) -cmake_policy(PUSH) -cmake_policy(VERSION 2.8) - -#---------------------------------------------------------------- -# Generated CMake Java target import file. -#---------------------------------------------------------------- - -# Protect against multiple inclusion, which would fail when already imported targets are added once more. -set(_targetsDefined) -set(_targetsNotDefined) -set(_expectedTargets) -foreach(_expectedTarget @__targets__@) - list(APPEND _expectedTargets ${_expectedTarget}) - if(TARGET ${_expectedTarget}) - list(APPEND _targetsDefined ${_expectedTarget}) - else() - list(APPEND _targetsNotDefined ${_expectedTarget}) - endif() -endforeach() -if("%${_targetsDefined}" STREQUAL "%${_expectedTargets}") - unset(_targetsDefined) - unset(_targetsNotDefined) - unset(_expectedTargets) - cmake_policy(POP) - return() -endif() -if(NOT "${_targetsDefined}" STREQUAL "") - message(FATAL_ERROR - "Some (but not all) targets in this export set were already defined.\n" - "Targets Defined: ${_targetsDefined}\n" - "Targets not yet defined: ${_targetsNotDefined}\n") -endif() -unset(_targetsDefined) -unset(_targetsNotDefined) -unset(_expectedTargets) - -@__targetdefs__@ -cmake_policy(POP) -- cgit v0.12