diff --git a/.github/workflows/cmake-ctest.yml b/.github/workflows/cmake-ctest.yml index 76abeb27a45..1c2c4ae7cc7 100644 --- a/.github/workflows/cmake-ctest.yml +++ b/.github/workflows/cmake-ctest.yml @@ -453,7 +453,7 @@ jobs: NOTARY_USER: ${{ vars.NOTARY_USER }} NOTARY_KEY: ${{ vars.NOTARY_KEY }} run: | - /usr/bin/codesign --force --timestamp --options runtime --entitlements ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/config/cmake/distribution.entitlements --verbose=4 --strict --sign ${{ env.SIGNER }} --deep ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-macos-Clang/*.dmg + /usr/bin/codesign --force --timestamp --options runtime --entitlements ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/config/install/distribution.entitlements --verbose=4 --strict --sign ${{ env.SIGNER }} --deep ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-macos-Clang/*.dmg if: ${{ needs.check-secret.outputs.sign-state == 'exists' }} shell: bash diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake index 5ec14aafe09..4bd7c2e1c92 100644 --- a/CMakeInstallation.cmake +++ b/CMakeInstallation.cmake @@ -63,7 +63,7 @@ set (INCLUDE_INSTALL_DIR ${HDF5_INSTALL_INCLUDE_DIR}) set (SHARE_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_INSTALL_CMAKE_DIR}" ) set (CURRENT_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) configure_package_config_file ( - ${HDF_RESOURCES_DIR}/hdf5-config.cmake.in + ${HDF_CONFIG_DIR}/install/hdf5-config.cmake.in "${HDF5_BINARY_DIR}/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config.cmake" INSTALL_DESTINATION "${HDF5_INSTALL_CMAKE_DIR}" PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR @@ -77,7 +77,7 @@ set (INCLUDE_INSTALL_DIR ${HDF5_INSTALL_INCLUDE_DIR}) set (SHARE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${HDF5_INSTALL_CMAKE_DIR}" ) set (CURRENT_BUILD_DIR "${CMAKE_INSTALL_PREFIX}" ) configure_package_config_file ( - ${HDF_RESOURCES_DIR}/hdf5-config.cmake.in + ${HDF_CONFIG_DIR}/install/hdf5-config.cmake.in "${HDF5_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config.cmake" INSTALL_DESTINATION "${HDF5_INSTALL_CMAKE_DIR}" PATH_VARS INCLUDE_INSTALL_DIR SHARE_INSTALL_DIR CURRENT_BUILD_DIR @@ -101,7 +101,7 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED) COMPATIBILITY SameMinorVersion ) #configure_file ( - # ${HDF_RESOURCES_DIR}/hdf5-config-version.cmake.in + # ${HDF_CONFIG_DIR}/install/hdf5-config-version.cmake.in # ${HDF5_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${HDF5_PACKAGE}${HDF_PACKAGE_EXT}-config-version.cmake @ONLY #) install ( @@ -139,7 +139,7 @@ if (HDF5_PACK_EXAMPLES) set(CTEST_TOOLCHAIN_FILE "\${CTEST_SOURCE_DIRECTORY}/config/toolchain/${TOOLCHAIN}") endif () configure_file ( - ${HDF_RESOURCES_DIR}/examples/HDF5_Examples.cmake.in + ${HDF_CONFIG_DIR}/examples/HDF5_Examples.cmake.in ${HDF5_BINARY_DIR}/HDF5_Examples.cmake @ONLY ) install ( @@ -162,13 +162,13 @@ if (HDF5_PACK_EXAMPLES) ) install ( FILES - ${HDF_RESOURCES_DIR}/examples/CTestScript.cmake + ${HDF_CONFIG_DIR}/examples/CTestScript.cmake DESTINATION ${HDF5_INSTALL_DATA_DIR} COMPONENT hdfdocuments ) install ( FILES - ${HDF_RESOURCES_DIR}/examples/HDF5_Examples_options.cmake + ${HDF_CONFIG_DIR}/examples/HDF5_Examples_options.cmake DESTINATION ${HDF5_INSTALL_DATA_DIR} COMPONENT hdfdocuments ) @@ -265,11 +265,11 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) else () set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}/${CPACK_PACKAGE_NAME}/${CPACK_PACKAGE_VERSION}") endif () - set (CPACK_PACKAGE_ICON "${HDF_RESOURCES_DIR}/hdf.bmp") + set (CPACK_PACKAGE_ICON "${HDF_CONFIG_DIR}/install/hdf.bmp") set (CPACK_ORIG_SOURCE_DIR ${CMAKE_SOURCE_DIR}) if ("$ENV{BINSIGN}" STREQUAL "exists") - set (CPACK_PRE_BUILD_SCRIPTS ${CMAKE_SOURCE_DIR}/config/cmake/SignPackageFiles.cmake) + set (CPACK_PRE_BUILD_SCRIPTS ${CMAKE_SOURCE_DIR}/config/install/SignPackageFiles.cmake) endif () set (CPACK_GENERATOR "TGZ") @@ -290,10 +290,10 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) endif () # set the install/uninstall icon used for the installer itself # There is a bug in NSI that does not handle full unix paths properly. - set (CPACK_NSIS_MUI_ICON "${HDF_RESOURCES_DIR}\\\\hdf.ico") - set (CPACK_NSIS_MUI_UNIICON "${HDF_RESOURCES_DIR}\\\\hdf.ico") + set (CPACK_NSIS_MUI_ICON "${HDF_CONFIG_DIR}\\\\install\\\\hdf.ico") + set (CPACK_NSIS_MUI_UNIICON "${HDF_CONFIG_DIR}\\\\install\\\\hdf.ico") # set the package header icon for MUI - set (CPACK_PACKAGE_ICON "${HDF_RESOURCES_DIR}\\\\hdf.bmp") + set (CPACK_PACKAGE_ICON "${HDF_CONFIG_DIR}\\\\install\\\\hdf.bmp") set (CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}") if (OVERRIDE_INSTALL_VERSION) set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_VENDOR}\\\\${CPACK_PACKAGE_NAME}\\\\${OVERRIDE_INSTALL_VERSION}") @@ -323,7 +323,7 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) set (CPACK_RESOURCE_FILE_LICENSE "${HDF5_BINARY_DIR}/LICENSE.txt") # .. variable:: CPACK_WIX_PRODUCT_ICON # The Icon shown next to the program name in Add/Remove programs. - set(CPACK_WIX_PRODUCT_ICON "${HDF_RESOURCES_DIR}\\\\hdf.ico") + set(CPACK_WIX_PRODUCT_ICON "${HDF_CONFIG_DIR}\\\\install\\\\hdf.ico") # # .. variable:: CPACK_WIX_UI_BANNER # @@ -352,7 +352,7 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) else () set (WIX_CMP_NAME "${HDF5_LIB_NAME}") endif () - configure_file (${HDF_RESOURCES_DIR}/patch.xml.in ${HDF5_BINARY_DIR}/patch.xml @ONLY) + configure_file (${HDF_CONFIG_DIR}/install/patch.xml.in ${HDF5_BINARY_DIR}/patch.xml @ONLY) set(CPACK_WIX_PATCH_FILE "${HDF5_BINARY_DIR}/patch.xml") endif () elseif (APPLE) @@ -363,29 +363,29 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES) endif () set (CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) set (CPACK_PACKAGING_INSTALL_PREFIX "/${CPACK_PACKAGE_INSTALL_DIRECTORY}") - set (CPACK_PACKAGE_ICON "${HDF_RESOURCES_DIR}/hdf.icns") + set (CPACK_PACKAGE_ICON "${HDF_CONFIG_DIR}/install/hdf.icns") option (HDF5_PACK_MACOSX_FRAMEWORK "Package the HDF5 Library in a Frameworks" OFF) if (HDF5_PACK_MACOSX_FRAMEWORK AND HDF5_BUILD_FRAMEWORKS) set (CPACK_BUNDLE_NAME "${HDF5_PACKAGE_STRING}") set (CPACK_BUNDLE_LOCATION "/") # make sure CMAKE_INSTALL_PREFIX ends in / set (CMAKE_INSTALL_PREFIX "/${CPACK_BUNDLE_NAME}.framework/Versions/${CPACK_PACKAGE_VERSION}/${CPACK_PACKAGE_NAME}/") - set (CPACK_BUNDLE_ICON "${HDF_RESOURCES_DIR}/hdf.icns") + set (CPACK_BUNDLE_ICON "${HDF_CONFIG_DIR/install}/hdf.icns") set (CPACK_BUNDLE_PLIST "${HDF5_BINARY_DIR}/CMakeFiles/Info.plist") set (CPACK_SHORT_VERSION_STRING "${CPACK_PACKAGE_VERSION}") #----------------------------------------------------------------------------- # Configure the Info.plist file for the install bundle #----------------------------------------------------------------------------- configure_file ( - ${HDF_RESOURCES_DIR}/CPack.Info.plist.in + ${HDF_CONFIG_DIR}/install/CPack.Info.plist.in ${HDF5_BINARY_DIR}/CMakeFiles/Info.plist @ONLY ) configure_file ( - ${HDF_RESOURCES_DIR}/PkgInfo.in + ${HDF_CONFIG_DIR}/install/PkgInfo.in ${HDF5_BINARY_DIR}/CMakeFiles/PkgInfo @ONLY ) configure_file ( - ${HDF_RESOURCES_DIR}/version.plist.in + ${HDF_CONFIG_DIR}/install/version.plist.in ${HDF5_BINARY_DIR}/CMakeFiles/version.plist @ONLY ) install ( @@ -440,7 +440,7 @@ The HDF5 data model, file format, API, library, and tools are open and distribut #----------------------------------------------------------------------------- # Configure the spec file for the install RPM #----------------------------------------------------------------------------- -# configure_file ("${HDF5_RESOURCES_DIR}/hdf5.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_PACKAGE_NAME}.spec" @ONLY IMMEDIATE) +# configure_file ("${HDF_CONFIG_DIR}/install/hdf5.spec.in" "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_PACKAGE_NAME}.spec" @ONLY IMMEDIATE) # set (CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_CURRENT_BINARY_DIR}/${HDF5_PACKAGE_NAME}.spec") endif () endif () diff --git a/CMakeLists.txt b/CMakeLists.txt index c83a28b0859..966e1e26d66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -304,7 +304,7 @@ message (TRACE "VERSION: ${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}-${ #----------------------------------------------------------------------------- # parse the full soversion number from config/lt_vers.am and include in H5_SOVERS_INFO #----------------------------------------------------------------------------- -file (READ ${HDF5_SOURCE_DIR}/config/lt_vers.am _lt_vers_am_contents) +file (READ ${HDF_CONFIG_DIR}/lt_vers.am _lt_vers_am_contents) string (REGEX REPLACE ".*LT_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" "\\1" H5_LIB_SOVERS_INTERFACE ${_lt_vers_am_contents}) string (REGEX REPLACE ".*LT_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$" @@ -473,13 +473,13 @@ set (H5_LIBVER_DIR ${H5_VERS_MAJOR}${H5_VERS_MINOR}) #----------------------------------------------------------------------------- # Include some macros for reusable code #----------------------------------------------------------------------------- -include (${HDF_RESOURCES_DIR}/HDFMacros.cmake) +include (${HDF_CONFIG_DIR}/HDFMacros.cmake) HDF_DIR_PATHS(${HDF5_PACKAGE_NAME}) include (${HDF_RESOURCES_DIR}/HDFLibMacros.cmake) include (${HDF_RESOURCES_DIR}/HDF5PluginMacros.cmake) -include (${HDF_RESOURCES_DIR}/HDF5Macros.cmake) +include (${HDF_CONFIG_DIR}/HDF5Macros.cmake) #----------------------------------------------------------------------------- # Targets built within this project are exported at Install time for use @@ -504,7 +504,7 @@ set (EXTERNAL_LIBRARYDLL_LIST "") #----------------------------------------------------------------------------- # Run all the CMake configuration tests for our build environment #----------------------------------------------------------------------------- -include (${HDF_RESOURCES_DIR}/ConfigureChecks.cmake) +include (${HDF_CONFIG_DIR}/ConfigureChecks.cmake) set (CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON) @@ -586,17 +586,17 @@ endif () option (HDF5_ENABLE_ANALYZER_TOOLS "enable the use of Clang tools" OFF) mark_as_advanced (HDF5_ENABLE_ANALYZER_TOOLS) if (HDF5_ENABLE_ANALYZER_TOOLS) - include (${HDF5_SOURCE_DIR}/config/sanitizer/tools.cmake) + include (${HDF_CONFIG_DIR}/sanitizer/tools.cmake) endif () option (HDF5_ENABLE_SANITIZERS "execute the Clang sanitizer" OFF) mark_as_advanced (HDF5_ENABLE_SANITIZERS) if (HDF5_ENABLE_SANITIZERS) - include (${HDF5_SOURCE_DIR}/config/sanitizer/sanitizers.cmake) + include (${HDF_CONFIG_DIR}/sanitizer/sanitizers.cmake) endif () option (HDF5_ENABLE_FORMATTERS "format source files" OFF) mark_as_advanced (HDF5_ENABLE_FORMATTERS) if (HDF5_ENABLE_FORMATTERS) - include (${HDF5_SOURCE_DIR}/config/sanitizer/formatting.cmake) + include (${HDF_CONFIG_DIR}/sanitizer/formatting.cmake) endif () #----------------------------------------------------------------------------- @@ -604,7 +604,7 @@ endif () #----------------------------------------------------------------------------- option (HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF) if (HDF5_ENABLE_COVERAGE) - include (${HDF5_SOURCE_DIR}/config/sanitizer/code-coverage.cmake) + include (${HDF_CONFIG_DIR}/sanitizer/code-coverage.cmake) if(CODE_COVERAGE AND CODE_COVERAGE_ADDED) message(VERBOSE "Add instrumentation to all targets") add_code_coverage () # Adds instrumentation to all targets @@ -711,8 +711,8 @@ else () endif () endif () -include (${HDF_RESOURCES_DIR}/HDFCompilerFlags.cmake) -set (CMAKE_MODULE_PATH ${HDF_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) +include (${HDF_CONFIG_DIR}/flags/HDFCompilerFlags.cmake) +set (CMAKE_MODULE_PATH ${HDF_CONFIG_DIR} ${HDF_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) #----------------------------------------------------------------------------- # Option to Enable HDFS @@ -1195,8 +1195,8 @@ if (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/for option (HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF) if (HDF5_BUILD_FORTRAN) message (VERBOSE "Fortran compiler ID is ${CMAKE_Fortran_COMPILER_ID}") - include (${HDF_RESOURCES_DIR}/HDFCompilerFortranFlags.cmake) - include (${HDF_RESOURCES_DIR}/HDF5UseFortran.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFCompilerFortranFlags.cmake) + include (${HDF_CONFIG_DIR}/HDF5UseFortran.cmake) set (LINK_Fortran_LIBS ${LINK_LIBS}) if (NOT H5_FORTRAN_HAVE_ISO_C_BINDING) @@ -1255,7 +1255,7 @@ if (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++") endif () endif () - include (${HDF_RESOURCES_DIR}/HDFCompilerCXXFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFCompilerCXXFlags.cmake) add_subdirectory (c++) if (HDF5_BUILD_HL_LIB) @@ -1284,7 +1284,7 @@ endif () #----------------------------------------------------------------------------- # Generate the H5pubconf.h file containing user settings needed by compilation #----------------------------------------------------------------------------- -configure_file (${HDF_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_SRC_BINARY_DIR}/H5pubconf.h @ONLY) +configure_file (${HDF_CONFIG_DIR}/H5pubconf.h.in ${HDF5_SRC_BINARY_DIR}/H5pubconf.h @ONLY) #----------------------------------------------------------------------------- # Option to build examples diff --git a/CMakeTests.cmake b/CMakeTests.cmake index 2bd2ea19944..f2bce65cdfa 100644 --- a/CMakeTests.cmake +++ b/CMakeTests.cmake @@ -74,7 +74,7 @@ include (CTest) include (${HDF5_SOURCE_DIR}/CTestConfig.cmake) - configure_file (${HDF_RESOURCES_DIR}/CTestCustom.cmake ${HDF5_BINARY_DIR}/CTestCustom.ctest @ONLY) + configure_file (${HDF_CONFIG_DIR}/CTestCustom.cmake ${HDF5_BINARY_DIR}/CTestCustom.ctest @ONLY) option (HDF5_TEST_SERIAL "Execute non-parallel tests" ON) mark_as_advanced (HDF5_TEST_SERIAL) diff --git a/HDF5Examples/CMakeLists.txt b/HDF5Examples/CMakeLists.txt index 6efd8afebad..ca987df5cc2 100644 --- a/HDF5Examples/CMakeLists.txt +++ b/HDF5Examples/CMakeLists.txt @@ -12,9 +12,10 @@ set (H5EX_JAVA_DIR ${H5EXAMPLES_SOURCE_DIR}/JAVA) # Basic HDF5Examples stuff here #----------------------------------------------------------------------------- if (NOT EXAMPLES_EXTERNALLY_CONFIGURED) + set (H5EX_CONFIG_DIR ${H5EXAMPLES_SOURCE_DIR}/config) set (H5EX_RESOURCES_DIR ${H5EXAMPLES_SOURCE_DIR}/config/cmake) - include (${H5EX_RESOURCES_DIR}/HDFMacros.cmake) + include (${H5EX_CONFIG_DIR}/HDFMacros.cmake) include (${H5EX_RESOURCES_DIR}/HDFExampleMacros.cmake) set (CMAKE_JAVA_INCLUDE_PATH "") @@ -43,7 +44,7 @@ option (H5EX_BUILD_JAVA "Build JAVA support" OFF) if (H5EX_BUILD_JAVA) find_package (Java) - include (${H5EX_RESOURCES_DIR}/UseJava.cmake) + include (UseJava) endif () #----------------------------------------------------------------------------- @@ -72,7 +73,7 @@ endif () #----------------------------------------------------------------------------- # Option to Enable MPI Parallel #----------------------------------------------------------------------------- -set (CMAKE_MODULE_PATH ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) +set (CMAKE_MODULE_PATH ${H5EX_CONFIG_DIR} ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) option (H5EX_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF) if (H5EX_ENABLE_PARALLEL) find_package(MPI REQUIRED) @@ -114,7 +115,7 @@ if (H5EX_BUILD_TESTING) enable_testing () include (CTest) include (${PROJECT_SOURCE_DIR}/CTestConfig.cmake) - configure_file (${H5EX_RESOURCES_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY) + configure_file (${H5EX_CONFIG_DIR}/CTestCustom.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY) endif () if (${H5_LIBVER_DIR} GREATER 16) diff --git a/HDF5Examples/config/cmake/CTestCustom.cmake b/HDF5Examples/config/CTestCustom.cmake similarity index 100% rename from HDF5Examples/config/cmake/CTestCustom.cmake rename to HDF5Examples/config/CTestCustom.cmake diff --git a/HDF5Examples/config/cmake/HDFMacros.cmake b/HDF5Examples/config/HDFMacros.cmake similarity index 100% rename from HDF5Examples/config/cmake/HDFMacros.cmake rename to HDF5Examples/config/HDFMacros.cmake diff --git a/HDF5Examples/config/cmake/CMakeFindJavaCommon.cmake b/HDF5Examples/config/cmake/CMakeFindJavaCommon.cmake deleted file mode 100644 index 528791d273c..00000000000 --- a/HDF5Examples/config/cmake/CMakeFindJavaCommon.cmake +++ /dev/null @@ -1,30 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. - - -# Do not include this module directly from code outside CMake! -set(_JAVA_HOME "") -if(JAVA_HOME AND IS_DIRECTORY "${JAVA_HOME}") - set(_JAVA_HOME "${JAVA_HOME}") - set(_JAVA_HOME_EXPLICIT 1) -else() - set(_ENV_JAVA_HOME "") - if(DEFINED ENV{JAVA_HOME}) - file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _ENV_JAVA_HOME) - endif() - if(_ENV_JAVA_HOME AND IS_DIRECTORY "${_ENV_JAVA_HOME}") - set(_JAVA_HOME "${_ENV_JAVA_HOME}") - set(_JAVA_HOME_EXPLICIT 1) - else() - set(_CMD_JAVA_HOME "") - if(APPLE AND EXISTS "/usr/libexec/java_home") - execute_process(COMMAND /usr/libexec/java_home - OUTPUT_VARIABLE _CMD_JAVA_HOME OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - if(_CMD_JAVA_HOME AND IS_DIRECTORY "${_CMD_JAVA_HOME}") - set(_JAVA_HOME "${_CMD_JAVA_HOME}") - set(_JAVA_HOME_EXPLICIT 0) - endif() - unset(_CMD_JAVA_HOME) - endif() - unset(_ENV_JAVA_HOME) -endif() diff --git a/HDF5Examples/config/cmake/HDFExampleMacros.cmake b/HDF5Examples/config/cmake/HDFExampleMacros.cmake index a2c3426003d..17ae8573440 100644 --- a/HDF5Examples/config/cmake/HDFExampleMacros.cmake +++ b/HDF5Examples/config/cmake/HDFExampleMacros.cmake @@ -129,7 +129,7 @@ macro (PYTHON_SUPPORT) endmacro () macro (HDF5_SUPPORT) - set (CMAKE_MODULE_PATH ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) + set (CMAKE_MODULE_PATH ${H5EX_CONFIG_DIR} ${H5EX_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) option (USE_SHARED_LIBS "Use Shared Libraries" ON) if (NOT H5EX_HDF5_HEADER) diff --git a/HDF5Examples/config/cmake/UseJava.cmake b/HDF5Examples/config/cmake/UseJava.cmake deleted file mode 100644 index 12e324ca599..00000000000 --- a/HDF5Examples/config/cmake/UseJava.cmake +++ /dev/null @@ -1,1747 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -UseJava -------- - -This file provides support for ``Java``. It is assumed that -:module:`FindJava` has already been loaded. See :module:`FindJava` for -information on how to load Java into your CMake project. - -Synopsis -^^^^^^^^ - -.. parsed-literal:: - - `Creating and Installing JARS`_ - `add_jar`_ ( [SOURCES] [...] ...) - `install_jar`_ ( DESTINATION [COMPONENT ]) - `install_jni_symlink`_ ( DESTINATION [COMPONENT ]) - - `Header Generation`_ - `create_javah`_ ((TARGET | GENERATED_FILES ) CLASSES ... ...) - - `Exporting JAR Targets`_ - `install_jar_exports`_ (TARGETS ... FILE DESTINATION ...) - `export_jars`_ (TARGETS ... [NAMESPACE ] FILE ) - - `Finding JARs`_ - `find_jar`_ ( NAMES [...] [PATHS [... ENV ]] ...) - - `Creating Java Documentation`_ - `create_javadoc`_ ( (PACKAGES [...] | FILES [...]) ...) - -Creating And Installing JARs -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. _add_jar: - -.. command:: add_jar - - Creates a jar file containing java objects and, optionally, resources:: - - add_jar( - [SOURCES] [...] [...] - [RESOURCES NAMESPACE ... [NAMESPACE ...]... ] - [INCLUDE_JARS [...]] - [ENTRY_POINT ] - [VERSION ] - [MANIFEST ] - [OUTPUT_NAME ] - [OUTPUT_DIR ] - [GENERATE_NATIVE_HEADERS - [DESTINATION (|INSTALL [BUILD ])]] - ) - - This command creates a ``.jar``. It compiles the given - ```` files and adds the given ```` files to - the jar file. Source files can be java files or listing files - (prefixed by ``@``). If only resource files are given then just a jar file - is created. - - ``SOURCES`` - Compiles the specified source files and adds the result in the jar file. - - .. versionadded:: 3.4 - Support for response files, prefixed by ``@``. - - ``RESOURCES`` - .. versionadded:: 3.21 - - Adds the named ```` files to the jar by stripping the source file - path and placing the file beneath ```` within the jar. - - For example:: - - RESOURCES NAMESPACE "/com/my/namespace" "a/path/to/resource.txt" - - results in a resource accessible via ``/com/my/namespace/resource.txt`` - within the jar. - - Resources may be added without adjusting the namespace by adding them to - the list of ``SOURCES`` (original behavior), in this case, resource - paths must be relative to ``CMAKE_CURRENT_SOURCE_DIR``. Adding resources - without using the ``RESOURCES`` parameter in out of source builds will - almost certainly result in confusion. - - .. note:: - - Adding resources via the ``SOURCES`` parameter relies upon a hard-coded - list of file extensions which are tested to determine whether they - compile (e.g. File.java). ``SOURCES`` files which match the extensions - are compiled. Files which do not match are treated as resources. To - include uncompiled resources matching those file extensions use - the ``RESOURCES`` parameter. - - ``INCLUDE_JARS`` - The list of jars are added to the classpath when compiling the java sources - and also to the dependencies of the target. ``INCLUDE_JARS`` also accepts - other target names created by ``add_jar()``. For backwards compatibility, - jar files listed as sources are ignored (as they have been since the first - version of this module). - - ``ENTRY_POINT`` - Defines an entry point in the jar file. - - ``VERSION`` - Adds a version to the target output name. - - The following example will create a jar file with the name - ``shibboleet-1.2.0.jar`` and will create a symlink ``shibboleet.jar`` - pointing to the jar with the version information. - - .. code-block:: cmake - - add_jar(shibboleet shibbotleet.java VERSION 1.2.0) - - ``MANIFEST`` - Defines a custom manifest for the jar. - - ``OUTPUT_NAME`` - Specify a different output name for the target. - - ``OUTPUT_DIR`` - Sets the directory where the jar file will be generated. If not specified, - :variable:`CMAKE_CURRENT_BINARY_DIR` is used as the output directory. - - ``GENERATE_NATIVE_HEADERS`` - .. versionadded:: 3.11 - - Generates native header files for methods declared as native. These files - provide the connective glue that allow your Java and C code to interact. - An INTERFACE target will be created for an easy usage of generated files. - Sub-option ``DESTINATION`` can be used to specify the output directory for - generated header files. - - This option requires, at least, version 1.8 of the JDK. - - For an optimum usage of this option, it is recommended to include module - JNI before any call to ``add_jar()``. The produced target for native - headers can then be used to compile C/C++ sources with the - :command:`target_link_libraries` command. - - .. code-block:: cmake - - find_package(JNI) - add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native) - add_library(bar bar.cpp) - target_link_libraries(bar PRIVATE foo-native) - - .. versionadded:: 3.20 - ``DESTINATION`` sub-option now supports the possibility to specify - different output directories for ``BUILD`` and ``INSTALL`` steps. If - ``BUILD`` directory is not specified, a default directory will be used. - - To export the interface target generated by ``GENERATE_NATIVE_HEADERS`` - option, sub-option ``INSTALL`` of ``DESTINATION`` is required: - - .. code-block:: cmake - - add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native - DESTINATION INSTALL include) - install(TARGETS foo-native EXPORT native) - install(DIRECTORY "$/" - DESTINATION include) - install(EXPORT native DESTINATION /to/export NAMESPACE foo) - - Some variables can be set to customize the behavior of ``add_jar()`` as well - as the java compiler: - - ``CMAKE_JAVA_COMPILE_FLAGS`` - Specify additional flags to java compiler. - - ``CMAKE_JAVA_INCLUDE_PATH`` - Specify additional paths to the class path. - - ``CMAKE_JNI_TARGET`` - If the target is a JNI library, sets this boolean variable to ``TRUE`` to - enable creation of a JNI symbolic link (see also - :ref:`install_jni_symlink() `). - - ``CMAKE_JAR_CLASSES_PREFIX`` - If multiple jars should be produced from the same java source filetree, - to prevent the accumulation of duplicate class files in subsequent jars, - set/reset ``CMAKE_JAR_CLASSES_PREFIX`` prior to calling the ``add_jar()``: - - .. code-block:: cmake - - set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo) - add_jar(foo foo.java) - - set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar) - add_jar(bar bar.java) - - The ``add_jar()`` function sets the following target properties on - ````: - - ``INSTALL_FILES`` - The files which should be installed. This is used by - :ref:`install_jar() `. - ``JNI_SYMLINK`` - The JNI symlink which should be installed. This is used by - :ref:`install_jni_symlink() `. - ``JAR_FILE`` - The location of the jar file so that you can include it. - ``CLASSDIR`` - The directory where the class files can be found. For example to use them - with ``javah``. - ``NATIVE_HEADERS_DIRECTORY`` - .. versionadded:: 3.20 - - The directory where native headers are generated. Defined when option - ``GENERATE_NATIVE_HEADERS`` is specified. - -.. _install_jar: - -.. command:: install_jar - - This command installs the jar file to the given destination:: - - install_jar( ) - install_jar( DESTINATION [COMPONENT ]) - - This command installs the ```` file to the given - ````. It should be called in the same scope as - :ref:`add_jar() ` or it will fail. - - .. versionadded:: 3.4 - The second signature with ``DESTINATION`` and ``COMPONENT`` options. - - ``DESTINATION`` - Specify the directory on disk to which a file will be installed. - - ``COMPONENT`` - Specify an installation component name with which the install rule is - associated, such as "runtime" or "development". - - The ``install_jar()`` command sets the following target properties - on ````: - - ``INSTALL_DESTINATION`` - Holds the ```` as described above, and is used by - :ref:`install_jar_exports() `. - -.. _install_jni_symlink: - -.. command:: install_jni_symlink - - Installs JNI symlinks for target generated by :ref:`add_jar() `:: - - install_jni_symlink( ) - install_jni_symlink( DESTINATION [COMPONENT ]) - - This command installs the ```` JNI symlinks to the given - ````. It should be called in the same scope as - :ref:`add_jar() ` or it will fail. - - .. versionadded:: 3.4 - The second signature with ``DESTINATION`` and ``COMPONENT`` options. - - ``DESTINATION`` - Specify the directory on disk to which a file will be installed. - - ``COMPONENT`` - Specify an installation component name with which the install rule is - associated, such as "runtime" or "development". - - Utilize the following commands to create a JNI symbolic link: - - .. code-block:: cmake - - set(CMAKE_JNI_TARGET TRUE) - add_jar(shibboleet shibbotleet.java VERSION 1.2.0) - install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet) - install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR}) - -Header Generation -^^^^^^^^^^^^^^^^^ - -.. _create_javah: - -.. command:: create_javah - - .. versionadded:: 3.4 - - Generates C header files for java classes:: - - create_javah(TARGET | GENERATED_FILES - CLASSES ... - [CLASSPATH ...] - [DEPENDS ...] - [OUTPUT_NAME |OUTPUT_DIR ] - ) - - .. deprecated:: 3.11 - This command will no longer be supported starting with version 10 of the JDK - due to the `suppression of javah tool `_. - The :ref:`add_jar(GENERATE_NATIVE_HEADERS) ` command should be - used instead. - - Create C header files from java classes. These files provide the connective - glue that allow your Java and C code to interact. - - There are two main signatures for ``create_javah()``. The first signature - returns generated files through variable specified by the ``GENERATED_FILES`` - option. For example: - - .. code-block:: cmake - - create_javah(GENERATED_FILES files_headers - CLASSES org.cmake.HelloWorld - CLASSPATH hello.jar - ) - - The second signature for ``create_javah()`` creates a target which - encapsulates header files generation. E.g. - - .. code-block:: cmake - - create_javah(TARGET target_headers - CLASSES org.cmake.HelloWorld - CLASSPATH hello.jar - ) - - Both signatures share same options. - - ``CLASSES`` - Specifies Java classes used to generate headers. - - ``CLASSPATH`` - Specifies various paths to look up classes. Here ``.class`` files, jar - files or targets created by command add_jar can be used. - - ``DEPENDS`` - Targets on which the javah target depends. - - ``OUTPUT_NAME`` - Concatenates the resulting header files for all the classes listed by - option ``CLASSES`` into ````. Same behavior as option ``-o`` of - ``javah`` tool. - - ``OUTPUT_DIR`` - Sets the directory where the header files will be generated. Same behavior - as option ``-d`` of ``javah`` tool. If not specified, - :variable:`CMAKE_CURRENT_BINARY_DIR` is used as the output directory. - -Exporting JAR Targets -^^^^^^^^^^^^^^^^^^^^^ - -.. _install_jar_exports: - -.. command:: install_jar_exports - - .. versionadded:: 3.7 - - Installs a target export file:: - - install_jar_exports(TARGETS ... - [NAMESPACE ] - FILE - DESTINATION [COMPONENT ]) - - This command installs a target export file ```` for the named jar - targets to the given ```` directory. Its function is similar to - that of :command:`install(EXPORT)`. - - ``TARGETS`` - List of targets created by :ref:`add_jar() ` command. - - ``NAMESPACE`` - .. versionadded:: 3.9 - - The ```` value will be prepend to the target names as they are - written to the import file. - - ``FILE`` - Specify name of the export file. - - - ``DESTINATION`` - Specify the directory on disk to which a file will be installed. - - ``COMPONENT`` - Specify an installation component name with which the install rule is - associated, such as "runtime" or "development". - -.. _export_jars: - -.. command:: export_jars - - .. versionadded:: 3.7 - - Writes a target export file:: - - export_jars(TARGETS ... - [NAMESPACE ] - FILE ) - - This command writes a target export file ```` for the named ```` - targets. Its function is similar to that of :command:`export`. - - ``TARGETS`` - List of targets created by :ref:`add_jar() ` command. - - ``NAMESPACE`` - .. versionadded:: 3.9 - - The ```` value will be prepend to the target names as they are - written to the import file. - - ``FILE`` - Specify name of the export file. - -Finding JARs -^^^^^^^^^^^^ - -.. _find_jar: - -.. command:: find_jar - - Finds the specified jar file:: - - find_jar( - | NAMES [...] - [PATHS [... ENV ]] - [VERSIONS []] - [DOC "cache documentation string"] - ) - - This command is used to find a full path to the named jar. A cache - entry named by ```` is created to store the result of this command. - If the full path to a jar is found the result is stored in the - variable and the search will not repeated unless the variable is - cleared. If nothing is found, the result will be ``-NOTFOUND``, and - the search will be attempted again next time ``find_jar()`` is invoked with - the same variable. - - ``NAMES`` - Specify one or more possible names for the jar file. - - ``PATHS`` - Specify directories to search in addition to the default locations. - The ``ENV`` var sub-option reads paths from a system environment variable. - - ``VERSIONS`` - Specify jar versions. - - ``DOC`` - Specify the documentation string for the ```` cache entry. - -Creating Java Documentation -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. _create_javadoc: - -.. command:: create_javadoc - - Creates java documentation based on files and packages:: - - create_javadoc( - (PACKAGES [...] | FILES [...]) - [SOURCEPATH ] - [CLASSPATH ] - [INSTALLPATH ] - [DOCTITLE ] - [WINDOWTITLE ] - [AUTHOR (TRUE|FALSE)] - [USE (TRUE|FALSE)] - [VERSION (TRUE|FALSE)] - ) - - The ``create_javadoc()`` command can be used to create java documentation. - There are two main signatures for ``create_javadoc()``. - - The first signature works with package names on a path with source files: - - .. code-block:: cmake - - create_javadoc(my_example_doc - PACKAGES com.example.foo com.example.bar - SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}" - CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} - WINDOWTITLE "My example" - DOCTITLE "

My example

" - AUTHOR TRUE - USE TRUE - VERSION TRUE - ) - - The second signature for ``create_javadoc()`` works on a given list of files: - - .. code-block:: cmake - - create_javadoc(my_example_doc - FILES java/A.java java/B.java - CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} - WINDOWTITLE "My example" - DOCTITLE "

My example

" - AUTHOR TRUE - USE TRUE - VERSION TRUE - ) - - Both signatures share most of the options. For more details please read the - javadoc manpage. - - ``PACKAGES`` - Specify java packages. - - ``FILES`` - Specify java source files. If relative paths are specified, they are - relative to :variable:`CMAKE_CURRENT_SOURCE_DIR`. - - ``SOURCEPATH`` - Specify the directory where to look for packages. By default, - :variable:`CMAKE_CURRENT_SOURCE_DIR` directory is used. - - ``CLASSPATH`` - Specify where to find user class files. Same behavior as option - ``-classpath`` of ``javadoc`` tool. - - ``INSTALLPATH`` - Specify where to install the java documentation. If you specified, the - documentation will be installed to - ``${CMAKE_INSTALL_PREFIX}/share/javadoc/``. - - ``DOCTITLE`` - Specify the title to place near the top of the overview summary file. - Same behavior as option ``-doctitle`` of ``javadoc`` tool. - - ``WINDOWTITLE`` - Specify the title to be placed in the HTML ```` tag. Same behavior - as option ``-windowtitle`` of ``javadoc`` tool. - - ``AUTHOR`` - When value ``TRUE`` is specified, includes the ``@author`` text in the - generated docs. Same behavior as option ``-author`` of ``javadoc`` tool. - - ``USE`` - When value ``TRUE`` is specified, creates class and package usage pages. - Includes one Use page for each documented class and package. Same behavior - as option ``-use`` of ``javadoc`` tool. - - ``VERSION`` - When value ``TRUE`` is specified, includes the version text in the - generated docs. Same behavior as option ``-version`` of ``javadoc`` tool. -#]=======================================================================] - -include(CMakeParseArguments) - -function (__java_copy_file src dest comment) - add_custom_command( - OUTPUT ${dest} - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ARGS ${src} - ${dest} - DEPENDS ${src} - COMMENT ${comment} - VERBATIM - ) -endfunction () - -function(__java_lcat VAR) - foreach(_line IN LISTS ARGN) - string(APPEND ${VAR} "${_line}\n") - endforeach() - - set(${VAR} "${${VAR}}" PARENT_SCOPE) -endfunction() - -function(__java_export_jar VAR TARGET PATH) - get_target_property(_jarpath ${TARGET} JAR_FILE) - get_filename_component(_jarname ${_jarpath} NAME) - set(_target "${_jar_NAMESPACE}${TARGET}") - __java_lcat(${VAR} - "# Create imported target ${_target}" - "add_library(${_target} IMPORTED STATIC)" - "set_target_properties(${_target} PROPERTIES" - " IMPORTED_LOCATION \"${PATH}/${_jarname}\"" - " JAR_FILE \"${PATH}/${_jarname}\")" - "" - ) - set(${VAR} "${${VAR}}" PARENT_SCOPE) -endfunction() - -function(__java_copy_resource_namespaces VAR DEST JAVA_RESOURCE_FILES JAVA_RESOURCE_FILES_RELATIVE) - - set(_ns_ID "") - set(_ns_VAL "") - - foreach(_item IN LISTS VAR) - if(NOT _ns_ID) - if(NOT _item STREQUAL "NAMESPACE") - message(FATAL_ERROR "UseJava: Expecting \"NAMESPACE\", got\t\"${_item}\"") - return() - endif() - endif() - - if(_item STREQUAL "NAMESPACE") - set(_ns_VAL "") # Prepare for next namespace - set(_ns_ID "${_item}") - continue() - endif() - - if( NOT _ns_VAL) - # we're expecting the next token to be a namespace value - # whatever it is, we're treating it like a namespace - set(_ns_VAL "${_item}") - continue() - endif() - - if(_ns_ID AND _ns_VAL) - # We're expecting a file name, check to see if we got one - cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _test_file_name) - if (NOT EXISTS "${_test_file_name}") - message(FATAL_ERROR "UseJava: File does not exist:\t${_item}") - return() - endif() - endif() - - cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _abs_file_name) - cmake_path(GET _item FILENAME _resource_file_name) - set(_dest_resource_file_name "${_ns_VAL}/${_resource_file_name}" ) - - __java_copy_file( ${_abs_file_name} - ${DEST}/${_dest_resource_file_name} - "Copying ${_item} to the build directory") - - list(APPEND RESOURCE_FILES_LIST ${DEST}/${_dest_resource_file_name}) - list(APPEND RELATIVE_RESOURCE_FILES_LIST ${_dest_resource_file_name}) - - endforeach() - - set(${JAVA_RESOURCE_FILES} "${RESOURCE_FILES_LIST}" PARENT_SCOPE) - set(${JAVA_RESOURCE_FILES_RELATIVE} "${RELATIVE_RESOURCE_FILES_LIST}" PARENT_SCOPE) -endfunction() - -# define helper scripts -set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/javaTargets.cmake.in) -set(_JAVA_CLASS_FILELIST_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaClassFilelist.cmake) -set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaSymlinks.cmake) - -if (CMAKE_HOST_WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") - set(_UseJava_PATH_SEP "$<SEMICOLON>") -else () - set(_UseJava_PATH_SEP ":") -endif() - -function(add_jar _TARGET_NAME) - - cmake_parse_arguments(_add_jar - "" - "VERSION;OUTPUT_DIR;OUTPUT_NAME;ENTRY_POINT;MANIFEST" - "SOURCES;INCLUDE_JARS;GENERATE_NATIVE_HEADERS" - ${ARGN} - ) - - # In CMake < 2.8.12, add_jar used variables which were set prior to calling - # add_jar for customizing the behavior of add_jar. In order to be backwards - # compatible, check if any of those variables are set, and use them to - # initialize values of the named arguments. (Giving the corresponding named - # argument will override the value set here.) - # - # New features should use named arguments only. - if(NOT DEFINED _add_jar_VERSION AND DEFINED CMAKE_JAVA_TARGET_VERSION) - set(_add_jar_VERSION "${CMAKE_JAVA_TARGET_VERSION}") - endif() - if(NOT DEFINED _add_jar_OUTPUT_DIR AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_DIR) - set(_add_jar_OUTPUT_DIR "${CMAKE_JAVA_TARGET_OUTPUT_DIR}") - endif() - if(NOT DEFINED _add_jar_OUTPUT_NAME AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_NAME) - set(_add_jar_OUTPUT_NAME "${CMAKE_JAVA_TARGET_OUTPUT_NAME}") - # reset - set(CMAKE_JAVA_TARGET_OUTPUT_NAME) - endif() - if(NOT DEFINED _add_jar_ENTRY_POINT AND DEFINED CMAKE_JAVA_JAR_ENTRY_POINT) - set(_add_jar_ENTRY_POINT "${CMAKE_JAVA_JAR_ENTRY_POINT}") - endif() - - # This *should* still work if <resources1>... are included without a - # named RESOURCES argument. In that case, the old behavior of potentially - # misplacing the within the Jar will behave as previously (incorrectly) - set(_JAVA_SOURCE_FILES ${_add_jar_SOURCES} ${_add_jar_UNPARSED_ARGUMENTS}) - - if (NOT DEFINED _add_jar_OUTPUT_DIR) - set(_add_jar_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) - else() - get_filename_component(_add_jar_OUTPUT_DIR ${_add_jar_OUTPUT_DIR} ABSOLUTE) - endif() - # ensure output directory exists - file (MAKE_DIRECTORY "${_add_jar_OUTPUT_DIR}") - - if (_add_jar_ENTRY_POINT) - set(_ENTRY_POINT_OPTION e) - set(_ENTRY_POINT_VALUE ${_add_jar_ENTRY_POINT}) - endif () - - if (_add_jar_MANIFEST) - set(_MANIFEST_OPTION m) - get_filename_component (_MANIFEST_VALUE "${_add_jar_MANIFEST}" ABSOLUTE) - endif () - - unset (_GENERATE_NATIVE_HEADERS) - if (_add_jar_GENERATE_NATIVE_HEADERS) - # Raise an error if JDK version is less than 1.8 because javac -h is not supported - # by earlier versions. - if (Java_VERSION VERSION_LESS 1.8) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS is not supported with this version of Java.") - endif() - - unset (_GENERATE_NATIVE_HEADERS_OUTPUT_DESC) - - cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS "" "" "DESTINATION" ${_add_jar_GENERATE_NATIVE_HEADERS}) - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: missing required argument.") - endif() - list (LENGTH _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS length) - if (length GREATER 1) - list (REMOVE_AT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS 0) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS}: unexpected argument(s).") - endif() - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION) - set (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir/native_headers") - else() - list (LENGTH _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION length) - if (NOT length EQUAL 1) - cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "" "BUILD;INSTALL" "" "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION}") - if (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_UNPARSED_ARGUMENTS) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: DESTINATION: ${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_UNPARSED_ARGUMENTS}: unexpected argument(s).") - endif() - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_INSTALL) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: DESTINATION: INSTALL sub-option is required.") - endif() - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD) - set(_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir/native_headers") - endif() - set(_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD}") - set(_GENERATE_NATIVE_HEADERS_OUTPUT_DESC "$<BUILD_INTERFACE:${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD}>" "$<INSTALL_INTERFACE:${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_INSTALL}>") - endif() - endif() - - set (_GENERATE_NATIVE_HEADERS_TARGET ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS}) - set (_GENERATE_NATIVE_HEADERS_OUTPUT_DIR "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION}") - set (_GENERATE_NATIVE_HEADERS -h "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - if(NOT _GENERATE_NATIVE_HEADERS_OUTPUT_DESC) - set(_GENERATE_NATIVE_HEADERS_OUTPUT_DESC "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - endif() - endif() - - if (LIBRARY_OUTPUT_PATH) - set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH}) - else () - set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${_add_jar_OUTPUT_DIR}) - endif () - - set(CMAKE_JAVA_INCLUDE_PATH - ${CMAKE_JAVA_INCLUDE_PATH} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_JAVA_OBJECT_OUTPUT_PATH} - ${CMAKE_JAVA_LIBRARY_OUTPUT_PATH} - ) - - foreach (JAVA_INCLUDE_DIR IN LISTS CMAKE_JAVA_INCLUDE_PATH) - string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${JAVA_INCLUDE_DIR}") - endforeach() - - set(CMAKE_JAVA_CLASS_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir") - - set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}.jar") - if (_add_jar_OUTPUT_NAME AND _add_jar_VERSION) - set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}-${_add_jar_VERSION}.jar") - set(_JAVA_TARGET_OUTPUT_LINK "${_add_jar_OUTPUT_NAME}.jar") - elseif (_add_jar_VERSION) - set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}-${_add_jar_VERSION}.jar") - set(_JAVA_TARGET_OUTPUT_LINK "${_TARGET_NAME}.jar") - elseif (_add_jar_OUTPUT_NAME) - set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}.jar") - endif () - - set(_JAVA_CLASS_FILES) - set(_JAVA_COMPILE_FILES) - set(_JAVA_COMPILE_FILELISTS) - set(_JAVA_DEPENDS) - set(_JAVA_COMPILE_DEPENDS) - set(_JAVA_RESOURCE_FILES) - set(_JAVA_RESOURCE_FILES_RELATIVE) - foreach(_JAVA_SOURCE_FILE IN LISTS _JAVA_SOURCE_FILES) - get_filename_component(_JAVA_EXT ${_JAVA_SOURCE_FILE} EXT) - get_filename_component(_JAVA_FILE ${_JAVA_SOURCE_FILE} NAME_WE) - get_filename_component(_JAVA_PATH ${_JAVA_SOURCE_FILE} PATH) - get_filename_component(_JAVA_FULL ${_JAVA_SOURCE_FILE} ABSOLUTE) - - if (_JAVA_SOURCE_FILE MATCHES "^@(.+)$") - get_filename_component(_JAVA_FULL ${CMAKE_MATCH_1} ABSOLUTE) - list(APPEND _JAVA_COMPILE_FILELISTS ${_JAVA_FULL}) - - elseif (_JAVA_EXT MATCHES ".java") - file(RELATIVE_PATH _JAVA_REL_BINARY_PATH ${CMAKE_CURRENT_BINARY_DIR} ${_JAVA_FULL}) - file(RELATIVE_PATH _JAVA_REL_SOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${_JAVA_FULL}) - string(LENGTH ${_JAVA_REL_BINARY_PATH} _BIN_LEN) - string(LENGTH ${_JAVA_REL_SOURCE_PATH} _SRC_LEN) - if (_BIN_LEN LESS _SRC_LEN) - set(_JAVA_REL_PATH ${_JAVA_REL_BINARY_PATH}) - else () - set(_JAVA_REL_PATH ${_JAVA_REL_SOURCE_PATH}) - endif () - get_filename_component(_JAVA_REL_PATH ${_JAVA_REL_PATH} PATH) - - list(APPEND _JAVA_COMPILE_FILES ${_JAVA_SOURCE_FILE}) - set(_JAVA_CLASS_FILE "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_REL_PATH}/${_JAVA_FILE}.class") - set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES} ${_JAVA_CLASS_FILE}) - - elseif (_JAVA_EXT MATCHES ".jar" - OR _JAVA_EXT MATCHES ".war" - OR _JAVA_EXT MATCHES ".ear" - OR _JAVA_EXT MATCHES ".sar") - # 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}) - list(APPEND _JAVA_DEPENDS ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}}) - - else () - __java_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/${_JAVA_SOURCE_FILE} - ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE} - "Copying ${_JAVA_SOURCE_FILE} to the build directory") - list(APPEND _JAVA_RESOURCE_FILES ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE}) - list(APPEND _JAVA_RESOURCE_FILES_RELATIVE ${_JAVA_SOURCE_FILE}) - endif () - endforeach() - - if(_add_jar_RESOURCES) # Process RESOURCES if it exists - __java_copy_resource_namespaces("${_add_jar_RESOURCES}" - ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - _JAVA_RESOURCE_FILES - _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() - - if (_JAVA_COMPILE_FILES OR _JAVA_COMPILE_FILELISTS) - set (_JAVA_SOURCES_FILELISTS) - - if (_JAVA_COMPILE_FILES) - # Create the list of files to compile. - set(_JAVA_SOURCES_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_sources) - string(REPLACE ";" "\"\n\"" _JAVA_COMPILE_STRING "\"${_JAVA_COMPILE_FILES}\"") - file(WRITE ${_JAVA_SOURCES_FILE} ${_JAVA_COMPILE_STRING}) - list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_SOURCES_FILE}") - endif() - if (_JAVA_COMPILE_FILELISTS) - foreach (_JAVA_FILELIST IN LISTS _JAVA_COMPILE_FILELISTS) - list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_FILELIST}") - endforeach() - endif() - - # Compile the java files and create a list of class files - add_custom_command( - # NOTE: this command generates an artificial dependency file - OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - COMMAND ${Java_JAVAC_EXECUTABLE} - ${CMAKE_JAVA_COMPILE_FLAGS} - -classpath "${CMAKE_JAVA_INCLUDE_PATH_FINAL}" - -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - ${_GENERATE_NATIVE_HEADERS} - ${_JAVA_SOURCES_FILELISTS} - COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} ${_JAVA_SOURCES_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT "Building Java objects for ${_TARGET_NAME}.jar" - VERBATIM - ) - add_custom_command( - OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist - COMMAND ${CMAKE_COMMAND} - -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH} - -DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX} - -P ${_JAVA_CLASS_FILELIST_SCRIPT} - DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - VERBATIM - ) - else () - # create an empty java_class_filelist - if (NOT EXISTS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist) - file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist "") - endif() - endif () - - # create the jar file - set(_JAVA_JAR_OUTPUT_PATH - "${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_NAME}") - if (CMAKE_JNI_TARGET) - add_custom_command( - OUTPUT ${_JAVA_JAR_OUTPUT_PATH} - COMMAND ${Java_JAR_EXECUTABLE} - -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE} - ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist - COMMAND ${CMAKE_COMMAND} - -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR} - -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME} - -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK} - -P ${_JAVA_SYMLINK_SCRIPT} - COMMAND ${CMAKE_COMMAND} - -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR} - -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_JAR_OUTPUT_PATH} - -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK} - -P ${_JAVA_SYMLINK_SCRIPT} - DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist - WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" - VERBATIM - ) - else () - add_custom_command( - OUTPUT ${_JAVA_JAR_OUTPUT_PATH} - COMMAND ${Java_JAR_EXECUTABLE} - -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE} - ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist - COMMAND ${CMAKE_COMMAND} - -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR} - -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME} - -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK} - -P ${_JAVA_SYMLINK_SCRIPT} - WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist - COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" - VERBATIM - ) - endif () - - # Add the target and make sure we have the latest resource files. - add_custom_target(${_TARGET_NAME} ALL DEPENDS ${_JAVA_JAR_OUTPUT_PATH}) - - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_FILES - ${_JAVA_JAR_OUTPUT_PATH} - ) - - if (_JAVA_TARGET_OUTPUT_LINK) - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_FILES - ${_JAVA_JAR_OUTPUT_PATH} - ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK} - ) - - if (CMAKE_JNI_TARGET) - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - JNI_SYMLINK - ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK} - ) - endif () - endif () - - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - JAR_FILE - ${_JAVA_JAR_OUTPUT_PATH} - ) - - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - CLASSDIR - ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - ) - - if (_GENERATE_NATIVE_HEADERS) - # create an INTERFACE library encapsulating include directory for generated headers - add_library (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE) - target_include_directories (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE - "${_GENERATE_NATIVE_HEADERS_OUTPUT_DESC}" - ${JNI_INCLUDE_DIRS}) - set_property(TARGET ${_GENERATE_NATIVE_HEADERS_TARGET} PROPERTY NATIVE_HEADERS_DIRECTORY "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - # this INTERFACE library depends on jar generation - add_dependencies (${_GENERATE_NATIVE_HEADERS_TARGET} ${_TARGET_NAME}) - - set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES - "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - endif() -endfunction() - -function(INSTALL_JAR _TARGET_NAME) - if (ARGC EQUAL 2) - set (_DESTINATION ${ARGV1}) - else() - cmake_parse_arguments(_install_jar - "" - "DESTINATION;COMPONENT" - "" - ${ARGN}) - if (_install_jar_DESTINATION) - set (_DESTINATION ${_install_jar_DESTINATION}) - else() - message(SEND_ERROR "install_jar: ${_TARGET_NAME}: DESTINATION must be specified.") - endif() - - if (_install_jar_COMPONENT) - set (_COMPONENT COMPONENT ${_install_jar_COMPONENT}) - endif() - endif() - - get_property(__FILES - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_FILES - ) - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_DESTINATION - ${_DESTINATION} - ) - - if (__FILES) - install( - FILES - ${__FILES} - DESTINATION - ${_DESTINATION} - ${_COMPONENT} - ) - else () - message(SEND_ERROR "install_jar: The target ${_TARGET_NAME} is not known in this scope.") - endif () -endfunction() - -function(INSTALL_JNI_SYMLINK _TARGET_NAME) - if (ARGC EQUAL 2) - set (_DESTINATION ${ARGV1}) - else() - cmake_parse_arguments(_install_jni_symlink - "" - "DESTINATION;COMPONENT" - "" - ${ARGN}) - if (_install_jni_symlink_DESTINATION) - set (_DESTINATION ${_install_jni_symlink_DESTINATION}) - else() - message(SEND_ERROR "install_jni_symlink: ${_TARGET_NAME}: DESTINATION must be specified.") - endif() - - if (_install_jni_symlink_COMPONENT) - set (_COMPONENT COMPONENT ${_install_jni_symlink_COMPONENT}) - endif() - endif() - - get_property(__SYMLINK - TARGET - ${_TARGET_NAME} - PROPERTY - JNI_SYMLINK - ) - - if (__SYMLINK) - install( - FILES - ${__SYMLINK} - DESTINATION - ${_DESTINATION} - ${_COMPONENT} - ) - else () - message(SEND_ERROR "install_jni_symlink: The target ${_TARGET_NAME} is not known in this scope.") - endif () -endfunction() - -function (find_jar VARIABLE) - set(_jar_names) - set(_jar_files) - set(_jar_versions) - set(_jar_paths - /usr/share/java/ - /usr/local/share/java/ - ${Java_JAR_PATHS}) - set(_jar_doc "NOTSET") - - set(_state "name") - - foreach (arg IN LISTS ARGN) - if (_state STREQUAL "name") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_names ${arg}) - if (_jar_doc STREQUAL "NOTSET") - set(_jar_doc "Finding ${arg} jar") - endif () - endif () - elseif (_state STREQUAL "versions") - if (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_versions ${_jar_versions} ${arg}) - endif () - elseif (_state STREQUAL "names") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_names ${_jar_names} ${arg}) - if (_jar_doc STREQUAL "NOTSET") - set(_jar_doc "Finding ${arg} jar") - endif () - endif () - elseif (_state STREQUAL "paths") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_paths ${_jar_paths} ${arg}) - endif () - elseif (_state STREQUAL "doc") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - else () - set(_jar_doc ${arg}) - endif () - endif () - endforeach () - - if (NOT _jar_names) - message(FATAL_ERROR "find_jar: No name to search for given") - endif () - - foreach (jar_name IN LISTS _jar_names) - foreach (version IN LISTS _jar_versions) - set(_jar_files ${_jar_files} ${jar_name}-${version}.jar) - endforeach () - set(_jar_files ${_jar_files} ${jar_name}.jar) - endforeach () - - find_file(${VARIABLE} - NAMES ${_jar_files} - PATHS ${_jar_paths} - DOC ${_jar_doc} - NO_DEFAULT_PATH) -endfunction () - -function(create_javadoc _target) - set(_javadoc_packages) - set(_javadoc_files) - set(_javadoc_overview) - set(_javadoc_sourcepath) - set(_javadoc_classpath) - set(_javadoc_installpath "${CMAKE_INSTALL_PREFIX}/share/javadoc") - set(_javadoc_doctitle) - set(_javadoc_windowtitle) - set(_javadoc_author FALSE) - set(_javadoc_version FALSE) - set(_javadoc_use FALSE) - - set(_state "package") - - foreach (arg IN LISTS ARGN) - if (_state STREQUAL "package") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_packages ${arg}) - set(_state "packages") - endif () - elseif (_state STREQUAL "packages") - if (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_packages ${arg}) - endif () - elseif (_state STREQUAL "files") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_files ${arg}) - endif () - elseif (_state STREQUAL "sourcepath") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_sourcepath ${arg}) - endif () - elseif (_state STREQUAL "classpath") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_classpath ${arg}) - endif () - elseif (_state STREQUAL "installpath") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_installpath ${arg}) - endif () - elseif (_state STREQUAL "doctitle") - if (${arg} STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_doctitle ${arg}) - endif () - elseif (_state STREQUAL "windowtitle") - if (${arg} STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_windowtitle ${arg}) - endif () - elseif (_state STREQUAL "author") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_author ${arg}) - endif () - elseif (_state STREQUAL "use") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_use ${arg}) - endif () - elseif (_state STREQUAL "version") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_version ${arg}) - endif () - elseif (_state STREQUAL "overview") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_overview ${arg}) - endif () - endif () - endforeach () - - set(_javadoc_builddir ${CMAKE_CURRENT_BINARY_DIR}/javadoc/${_target}) - set(_javadoc_options -d ${_javadoc_builddir}) - - if (_javadoc_sourcepath) - list(JOIN _javadoc_sourcepath "${_UseJava_PATH_SEP}" _javadoc_sourcepath) - list(APPEND _javadoc_options -sourcepath "\"${_javadoc_sourcepath}\"") - endif () - - if (_javadoc_overview) - list(JOIN _javadoc_overview "${_UseJava_PATH_SEP}" _javadoc_overview) - list(APPEND _javadoc_options -overview "\"${_javadoc_overview}\"") - endif () - - if (_javadoc_classpath) - list(JOIN _javadoc_classpath "${_UseJava_PATH_SEP}" _javadoc_classpath) - list(APPEND _javadoc_options -classpath "\"${_javadoc_classpath}\"") - endif () - - if (_javadoc_doctitle) - list(APPEND _javadoc_options -doctitle '${_javadoc_doctitle}') - endif () - - if (_javadoc_windowtitle) - list(APPEND _javadoc_options -windowtitle '${_javadoc_windowtitle}') - endif () - - if (_javadoc_author) - list(APPEND _javadoc_options -author) - endif () - - if (_javadoc_use) - list(APPEND _javadoc_options -use) - endif () - - if (_javadoc_version) - list(APPEND _javadoc_options -version) - endif () - - add_custom_target(${_target}_javadoc ALL - COMMAND ${Java_JAVADOC_EXECUTABLE} - -Xdoclint:none - ${_javadoc_options} - ${_javadoc_files} - ${_javadoc_packages} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - - install( - DIRECTORY ${_javadoc_builddir} - DESTINATION ${_javadoc_installpath} - ) -endfunction() - -function (create_javah) - if (Java_VERSION VERSION_GREATER_EQUAL 10) - message (FATAL_ERROR "create_javah: not supported with this Java version. Use add_jar(GENERATE_NATIVE_HEADERS) instead.") - elseif (Java_VERSION VERSION_GREATER_EQUAL 1.8) - message (DEPRECATION "create_javah: this command will no longer be supported starting with version 10 of JDK. Update your project by using command add_jar(GENERATE_NATIVE_HEADERS) instead.") - endif() - - cmake_parse_arguments(_create_javah - "" - "TARGET;GENERATED_FILES;OUTPUT_NAME;OUTPUT_DIR" - "CLASSES;CLASSPATH;DEPENDS" - ${ARGN}) - - # check parameters - if (NOT _create_javah_TARGET AND NOT _create_javah_GENERATED_FILES) - message (FATAL_ERROR "create_javah: TARGET or GENERATED_FILES must be specified.") - endif() - if (_create_javah_OUTPUT_NAME AND _create_javah_OUTPUT_DIR) - message (FATAL_ERROR "create_javah: OUTPUT_NAME and OUTPUT_DIR are mutually exclusive.") - endif() - - if (NOT _create_javah_CLASSES) - message (FATAL_ERROR "create_javah: CLASSES is a required parameter.") - endif() - - set (_output_files) - - # handle javah options - set (_javah_options) - - if (_create_javah_CLASSPATH) - # CLASSPATH can specify directories, jar files or targets created with add_jar command - set (_classpath) - foreach (_path IN LISTS _create_javah_CLASSPATH) - if (TARGET ${_path}) - get_target_property (_jar_path ${_path} JAR_FILE) - if (_jar_path) - list (APPEND _classpath "${_jar_path}") - list (APPEND _create_javah_DEPENDS "${_path}") - else() - message(SEND_ERROR "create_javah: CLASSPATH target ${_path} is not a jar.") - endif() - elseif (EXISTS "${_path}") - list (APPEND _classpath "${_path}") - if (NOT IS_DIRECTORY "${_path}") - list (APPEND _create_javah_DEPENDS "${_path}") - endif() - else() - message(SEND_ERROR "create_javah: CLASSPATH entry ${_path} does not exist.") - endif() - endforeach() - string (REPLACE ";" "${_UseJava_PATH_SEP}" _classpath "${_classpath}") - list (APPEND _javah_options -classpath "${_classpath}") - endif() - - if (_create_javah_OUTPUT_DIR) - list (APPEND _javah_options -d "${_create_javah_OUTPUT_DIR}") - endif() - - if (_create_javah_OUTPUT_NAME) - list (APPEND _javah_options -o "${_create_javah_OUTPUT_NAME}") - set (_output_files "${_create_javah_OUTPUT_NAME}") - - get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_NAME}" DIRECTORY) - get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_DIR}" ABSOLUTE) - endif() - - if (NOT _create_javah_OUTPUT_DIR) - set (_create_javah_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") - endif() - - if (NOT _create_javah_OUTPUT_NAME) - # compute output names - foreach (_class IN LISTS _create_javah_CLASSES) - string (REPLACE "." "_" _c_header "${_class}") - set (_c_header "${_create_javah_OUTPUT_DIR}/${_c_header}.h") - list (APPEND _output_files "${_c_header}") - endforeach() - endif() - - # finalize custom command arguments - if (_create_javah_DEPENDS) - list (INSERT _create_javah_DEPENDS 0 DEPENDS) - endif() - - add_custom_command (OUTPUT ${_output_files} - COMMAND "${Java_JAVAH_EXECUTABLE}" ${_javah_options} -jni ${_create_javah_CLASSES} - ${_create_javah_DEPENDS} - WORKING_DIRECTORY ${_create_javah_OUTPUT_DIR} - COMMENT "Building C header files from classes...") - - if (_create_javah_TARGET) - add_custom_target (${_create_javah_TARGET} ALL DEPENDS ${_output_files}) - endif() - if (_create_javah_GENERATED_FILES) - set (${_create_javah_GENERATED_FILES} ${_output_files} PARENT_SCOPE) - endif() -endfunction() - -function(export_jars) - # Parse and validate arguments - cmake_parse_arguments(_export_jars - "" - "FILE;NAMESPACE" - "TARGETS" - ${ARGN} - ) - if (NOT _export_jars_FILE) - message(SEND_ERROR "export_jars: FILE must be specified.") - endif() - if (NOT _export_jars_TARGETS) - message(SEND_ERROR "export_jars: TARGETS must be specified.") - endif() - set(_jar_NAMESPACE "${_export_jars_NAMESPACE}") - - # Set content of generated exports file - string(REPLACE ";" " " __targets__ "${_export_jars_TARGETS}") - set(__targetdefs__ "") - foreach(_target IN LISTS _export_jars_TARGETS) - get_target_property(_jarpath ${_target} JAR_FILE) - get_filename_component(_jarpath ${_jarpath} PATH) - __java_export_jar(__targetdefs__ ${_target} "${_jarpath}") - endforeach() - - # Generate exports file - configure_file( - ${_JAVA_EXPORT_TARGETS_SCRIPT} - ${_export_jars_FILE} - @ONLY - ) -endfunction() - -function(install_jar_exports) - # Parse and validate arguments - cmake_parse_arguments(_install_jar_exports - "" - "FILE;DESTINATION;COMPONENT;NAMESPACE" - "TARGETS" - ${ARGN} - ) - if (NOT _install_jar_exports_FILE) - message(SEND_ERROR "install_jar_exports: FILE must be specified.") - endif() - if (NOT _install_jar_exports_DESTINATION) - message(SEND_ERROR "install_jar_exports: DESTINATION must be specified.") - endif() - if (NOT _install_jar_exports_TARGETS) - message(SEND_ERROR "install_jar_exports: TARGETS must be specified.") - endif() - set(_jar_NAMESPACE "${_install_jar_exports_NAMESPACE}") - - if (_install_jar_exports_COMPONENT) - set (_COMPONENT COMPONENT ${_install_jar_exports_COMPONENT}) - endif() - - # Determine relative path from installed export file to install prefix - if(IS_ABSOLUTE "${_install_jar_exports_DESTINATION}") - file(RELATIVE_PATH _relpath - ${_install_jar_exports_DESTINATION} - ${CMAKE_INSTALL_PREFIX} - ) - else() - file(RELATIVE_PATH _relpath - ${CMAKE_INSTALL_PREFIX}/${_install_jar_exports_DESTINATION} - ${CMAKE_INSTALL_PREFIX} - ) - endif() - - # Set up unique location for generated exports file - string(SHA256 _hash "${_install_jar_exports_DESTINATION}") - set(_tmpdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/JavaExports/${_hash}) - - # Set content of generated exports file - string(REPLACE ";" " " __targets__ "${_install_jar_exports_TARGETS}") - set(__targetdefs__ "set(_prefix \${CMAKE_CURRENT_LIST_DIR}/${_relpath})\n\n") - foreach(_target IN LISTS _install_jar_exports_TARGETS) - get_target_property(_dir ${_target} INSTALL_DESTINATION) - __java_export_jar(__targetdefs__ ${_target} "\${_prefix}/${_dir}") - endforeach() - __java_lcat(__targetdefs__ "\nunset(_prefix)") - - # Generate and install exports file - configure_file( - ${_JAVA_EXPORT_TARGETS_SCRIPT} - ${_tmpdir}/${_install_jar_exports_FILE} - @ONLY - ) - install(FILES ${_tmpdir}/${_install_jar_exports_FILE} - DESTINATION ${_install_jar_exports_DESTINATION} - ${_COMPONENT}) -endfunction() diff --git a/HDF5Examples/config/cmake/UseJavaClassFilelist.cmake b/HDF5Examples/config/cmake/UseJavaClassFilelist.cmake deleted file mode 100644 index d90ca489fc9..00000000000 --- a/HDF5Examples/config/cmake/UseJavaClassFilelist.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See 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/HDF5Examples/config/cmake/UseJavaSymlinks.cmake b/HDF5Examples/config/cmake/UseJavaSymlinks.cmake deleted file mode 100644 index 183a7448855..00000000000 --- a/HDF5Examples/config/cmake/UseJavaSymlinks.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See 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/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt index 9f2768dd69e..10e02862463 100644 --- a/c++/src/CMakeLists.txt +++ b/c++/src/CMakeLists.txt @@ -208,7 +208,7 @@ install ( if (NOT WIN32 AND NOT MINGW) set (_PKG_CONFIG_COMPILER ${HDF5_H5CC_CXX_COMPILER}) configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5c++ @ONLY ) diff --git a/config/cmake/CTestCustom.cmake b/config/CTestCustom.cmake similarity index 100% rename from config/cmake/CTestCustom.cmake rename to config/CTestCustom.cmake diff --git a/config/cmake/ConfigureChecks.cmake b/config/ConfigureChecks.cmake similarity index 99% rename from config/cmake/ConfigureChecks.cmake rename to config/ConfigureChecks.cmake index 32599cba3fb..e0a22831424 100644 --- a/config/cmake/ConfigureChecks.cmake +++ b/config/ConfigureChecks.cmake @@ -192,7 +192,7 @@ macro (HDF_FUNCTION_TEST OTHER_TEST) message (TRACE "Performing ${OTHER_TEST}") try_compile (${OTHER_TEST} ${CMAKE_BINARY_DIR} - ${HDF_RESOURCES_DIR}/HDFTests.c + ${HDF_CONFIG_DIR}/HDFTests.c COMPILE_DEFINITIONS "${MACRO_CHECK_FUNCTION_DEFINITIONS}" LINK_LIBRARIES "${HDF5_REQUIRED_LIBRARIES}" OUTPUT_VARIABLE OUTPUT @@ -790,7 +790,7 @@ macro (H5ConversionTests TEST def msg) # Build and run the test code if not cross-compiling TRY_RUN (${TEST}_RUN ${TEST}_COMPILE ${CMAKE_BINARY_DIR} - ${HDF_RESOURCES_DIR}/ConversionTests.c + ${HDF_CONFIG_DIR}/ConversionTests.c CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-D${TEST}_TEST COMPILE_OUTPUT_VARIABLE ${TEST}_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE ${TEST}_RUN_OUTPUT diff --git a/config/cmake/ConversionTests.c b/config/ConversionTests.c similarity index 100% rename from config/cmake/ConversionTests.c rename to config/ConversionTests.c diff --git a/config/cmake/H5pubconf.h.in b/config/H5pubconf.h.in similarity index 100% rename from config/cmake/H5pubconf.h.in rename to config/H5pubconf.h.in diff --git a/config/cmake/HDF5Macros.cmake b/config/HDF5Macros.cmake similarity index 80% rename from config/cmake/HDF5Macros.cmake rename to config/HDF5Macros.cmake index 2a58fda0487..e1bb13315f5 100644 --- a/config/cmake/HDF5Macros.cmake +++ b/config/HDF5Macros.cmake @@ -118,36 +118,3 @@ macro (H5_CREATE_VFD_DIR) file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/${vfdtest}") endforeach () endmacro () - -# Apply mask replacements to FILENAME and write the results to FILENAME_masked -# Uses TEST_MASKS and TEST_MASKS_REPLACE from its execution environment -macro(H5_MASK_FILE FILENAME) - file (READ ${FILENAME} MASK_STREAM) - - list(LENGTH TEST_MASK num_masks) - MATH(EXPR last_index "${num_masks} - 1") - - if (TEST_MASK_REPLACE) - list(LENGTH TEST_MASK_REPLACE num_masks_replace) - if (NOT num_masks_replace EQUAL num_masks) - message(FATAL_ERROR "TEST_MASK_REPLACE length does not match TEST_MASK length") - endif () - endif() - - # Apply each mask - foreach (index RANGE 0 "${last_index}") - list(GET TEST_MASK ${index} curr_mask) - # Default to replacing with empty string (e.g. removing the found mask string) - if (TEST_MASK_REPLACE) - list(GET TEST_MASK_REPLACE ${index} curr_mask_replace) - else() - set(curr_mask_replace "") - endif() - - message(TRACE "mask #${index}:'${curr_mask}' -> '${curr_mask_replace}'") - - string (REGEX REPLACE "${curr_mask}" "${curr_mask_replace}" MASK_STREAM "${MASK_STREAM}") - endforeach () - - file (WRITE ${FILENAME}_masked "${MASK_STREAM}") -endmacro() \ No newline at end of file diff --git a/config/cmake/HDF5UseFortran.cmake b/config/HDF5UseFortran.cmake similarity index 99% rename from config/cmake/HDF5UseFortran.cmake rename to config/HDF5UseFortran.cmake index 9a5d8c76709..d0cf2ac5e66 100644 --- a/config/cmake/HDF5UseFortran.cmake +++ b/config/HDF5UseFortran.cmake @@ -14,7 +14,7 @@ # This file provides functions for HDF5 specific Fortran support. # #------------------------------------------------------------------------------- -include (${HDF_RESOURCES_DIR}/HDFUseFortran.cmake) +include (${HDF_CONFIG_DIR}/HDFUseFortran.cmake) include (CheckFortranFunctionExists) diff --git a/config/cmake/HDFMacros.cmake b/config/HDFMacros.cmake similarity index 98% rename from config/cmake/HDFMacros.cmake rename to config/HDFMacros.cmake index 54d6230f5f8..b36902d8c64 100644 --- a/config/cmake/HDFMacros.cmake +++ b/config/HDFMacros.cmake @@ -363,7 +363,7 @@ macro (HDF_README_PROPERTIES target_fortran) endif () configure_file ( - ${HDF_RESOURCES_DIR}/README.md.cmake.in + ${HDF_CONFIG_DIR}/README.md.cmake.in ${CMAKE_BINARY_DIR}/README.md @ONLY ) endmacro () @@ -456,16 +456,16 @@ macro (HDF_DIR_PATHS package_prefix) if (NOT ${package_prefix}_INSTALL_DOC_DIR) set (${package_prefix}_INSTALL_DOC_DIR ${${package_prefix}_INSTALL_DATA_DIR}) endif () - message(STATUS "Final: ${${package_prefix}_INSTALL_DOC_DIR}") + message (STATUS "Final: ${${package_prefix}_INSTALL_DOC_DIR}") # Append the needed INSTALL_RPATH for HDF Standard binary packages if (APPLE) - list(APPEND CMAKE_INSTALL_RPATH + list (APPEND CMAKE_INSTALL_RPATH "@loader_path/../${${package_prefix}_INSTALL_LIB_DIR}" "@loader_path/" ) else () - list(APPEND CMAKE_INSTALL_RPATH "\$ORIGIN/../${${package_prefix}_INSTALL_LIB_DIR}:\$ORIGIN/") + list (APPEND CMAKE_INSTALL_RPATH "\$ORIGIN/../${${package_prefix}_INSTALL_LIB_DIR}:\$ORIGIN/") endif () if (DEFINED ADDITIONAL_CMAKE_PREFIX_PATH AND EXISTS "${ADDITIONAL_CMAKE_PREFIX_PATH}") diff --git a/config/cmake/HDFTests.c b/config/HDFTests.c similarity index 100% rename from config/cmake/HDFTests.c rename to config/HDFTests.c diff --git a/config/cmake/HDFUseFortran.cmake b/config/HDFUseFortran.cmake similarity index 94% rename from config/cmake/HDFUseFortran.cmake rename to config/HDFUseFortran.cmake index 36c5d75be1b..80f802b39c0 100644 --- a/config/cmake/HDFUseFortran.cmake +++ b/config/HDFUseFortran.cmake @@ -45,12 +45,12 @@ set (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) ${CMAKE_MATCH_1}") # Read source line beginning at the line matching Input:"START" and ending at the line matching Input:"END" macro (READ_SOURCE SOURCE_START SOURCE_END RETURN_VAR) - if (EXISTS "${HDF5_SOURCE_DIR}/m4/aclocal_fc.f90") - file (READ "${HDF5_SOURCE_DIR}/m4/aclocal_fc.f90" SOURCE_MASTER) + if (EXISTS "${HDF_CONFIG_DIR}/aclocal_fc.f90") + file (READ "${HDF_CONFIG_DIR}/aclocal_fc.f90" SOURCE_MASTER) string (REGEX MATCH "${SOURCE_START}[\\\t\\\n\\\r[].+]*${SOURCE_END}" SOURCE_CODE ${SOURCE_MASTER}) set (RETURN_VAR "${SOURCE_CODE}") else () - message (FATAL_ERROR "${HDF5_SOURCE_DIR}/m4/aclocal_fc.f90 does not exist.\n") + message (FATAL_ERROR "${HDF_CONFIG_DIR}/aclocal_fc.f90 does not exist.\n") endif () endmacro () diff --git a/config/cmake/README.md.cmake.in b/config/README.md.cmake.in similarity index 100% rename from config/cmake/README.md.cmake.in rename to config/README.md.cmake.in diff --git a/m4/aclocal_fc.f90 b/config/aclocal_fc.f90 similarity index 100% rename from m4/aclocal_fc.f90 rename to config/aclocal_fc.f90 diff --git a/config/cmake/CMakeFindJavaCommon.cmake b/config/cmake/CMakeFindJavaCommon.cmake deleted file mode 100644 index 528791d273c..00000000000 --- a/config/cmake/CMakeFindJavaCommon.cmake +++ /dev/null @@ -1,30 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. - - -# Do not include this module directly from code outside CMake! -set(_JAVA_HOME "") -if(JAVA_HOME AND IS_DIRECTORY "${JAVA_HOME}") - set(_JAVA_HOME "${JAVA_HOME}") - set(_JAVA_HOME_EXPLICIT 1) -else() - set(_ENV_JAVA_HOME "") - if(DEFINED ENV{JAVA_HOME}) - file(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _ENV_JAVA_HOME) - endif() - if(_ENV_JAVA_HOME AND IS_DIRECTORY "${_ENV_JAVA_HOME}") - set(_JAVA_HOME "${_ENV_JAVA_HOME}") - set(_JAVA_HOME_EXPLICIT 1) - else() - set(_CMD_JAVA_HOME "") - if(APPLE AND EXISTS "/usr/libexec/java_home") - execute_process(COMMAND /usr/libexec/java_home - OUTPUT_VARIABLE _CMD_JAVA_HOME OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - if(_CMD_JAVA_HOME AND IS_DIRECTORY "${_CMD_JAVA_HOME}") - set(_JAVA_HOME "${_CMD_JAVA_HOME}") - set(_JAVA_HOME_EXPLICIT 0) - endif() - unset(_CMD_JAVA_HOME) - endif() - unset(_ENV_JAVA_HOME) -endif() diff --git a/config/cmake/HDF5ExampleCache.cmake b/config/cmake/HDF5ExampleCache.cmake index 1ec8d408546..e16d1c2894d 100644 --- a/config/cmake/HDF5ExampleCache.cmake +++ b/config/cmake/HDF5ExampleCache.cmake @@ -24,6 +24,7 @@ set (H5EX_HDF5_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE STRING "HDF5 build folder" set (EXAMPLES_EXTERNALLY_CONFIGURED ON CACHE BOOL "Examples build is used in another project" FORCE) set (EXAMPLE_VARNAME "H5") +set (H5EX_CONFIG_DIR ${HDF_CONFIG_DIR}) set (H5EX_RESOURCES_DIR ${HDF_RESOURCES_DIR}) message (STATUS "HDF5 Example H5EX_RESOURCES_DIR: ${H5EX_RESOURCES_DIR}") if (HDF5_DEFAULT_API_VERSION MATCHES "v16") diff --git a/config/cmake/UseJava.cmake b/config/cmake/UseJava.cmake deleted file mode 100644 index 12e324ca599..00000000000 --- a/config/cmake/UseJava.cmake +++ /dev/null @@ -1,1747 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See https://cmake.org/licensing for details. - -#[=======================================================================[.rst: -UseJava -------- - -This file provides support for ``Java``. It is assumed that -:module:`FindJava` has already been loaded. See :module:`FindJava` for -information on how to load Java into your CMake project. - -Synopsis -^^^^^^^^ - -.. parsed-literal:: - - `Creating and Installing JARS`_ - `add_jar`_ (<target_name> [SOURCES] <source1> [<source2>...] ...) - `install_jar`_ (<target_name> DESTINATION <destination> [COMPONENT <component>]) - `install_jni_symlink`_ (<target_name> DESTINATION <destination> [COMPONENT <component>]) - - `Header Generation`_ - `create_javah`_ ((TARGET <target> | GENERATED_FILES <VAR>) CLASSES <class>... ...) - - `Exporting JAR Targets`_ - `install_jar_exports`_ (TARGETS <jars>... FILE <filename> DESTINATION <destination> ...) - `export_jars`_ (TARGETS <jars>... [NAMESPACE <namespace>] FILE <filename>) - - `Finding JARs`_ - `find_jar`_ (<VAR> NAMES <name1> [<name2>...] [PATHS <path1> [<path2>... ENV <var>]] ...) - - `Creating Java Documentation`_ - `create_javadoc`_ (<VAR> (PACKAGES <pkg1> [<pkg2>...] | FILES <file1> [<file2>...]) ...) - -Creating And Installing JARs -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. _add_jar: - -.. command:: add_jar - - Creates a jar file containing java objects and, optionally, resources:: - - add_jar(<target_name> - [SOURCES] <source1> [<source2>...] [<resource1>...] - [RESOURCES NAMESPACE <ns1> <resource1>... [NAMESPACE <nsX> <resourceX>...]... ] - [INCLUDE_JARS <jar1> [<jar2>...]] - [ENTRY_POINT <entry>] - [VERSION <version>] - [MANIFEST <manifest>] - [OUTPUT_NAME <name>] - [OUTPUT_DIR <dir>] - [GENERATE_NATIVE_HEADERS <target> - [DESTINATION (<dir>|INSTALL <dir> [BUILD <dir>])]] - ) - - This command creates a ``<target_name>.jar``. It compiles the given - ``<source>`` files and adds the given ``<resource>`` files to - the jar file. Source files can be java files or listing files - (prefixed by ``@``). If only resource files are given then just a jar file - is created. - - ``SOURCES`` - Compiles the specified source files and adds the result in the jar file. - - .. versionadded:: 3.4 - Support for response files, prefixed by ``@``. - - ``RESOURCES`` - .. versionadded:: 3.21 - - Adds the named ``<resource>`` files to the jar by stripping the source file - path and placing the file beneath ``<ns>`` within the jar. - - For example:: - - RESOURCES NAMESPACE "/com/my/namespace" "a/path/to/resource.txt" - - results in a resource accessible via ``/com/my/namespace/resource.txt`` - within the jar. - - Resources may be added without adjusting the namespace by adding them to - the list of ``SOURCES`` (original behavior), in this case, resource - paths must be relative to ``CMAKE_CURRENT_SOURCE_DIR``. Adding resources - without using the ``RESOURCES`` parameter in out of source builds will - almost certainly result in confusion. - - .. note:: - - Adding resources via the ``SOURCES`` parameter relies upon a hard-coded - list of file extensions which are tested to determine whether they - compile (e.g. File.java). ``SOURCES`` files which match the extensions - are compiled. Files which do not match are treated as resources. To - include uncompiled resources matching those file extensions use - the ``RESOURCES`` parameter. - - ``INCLUDE_JARS`` - The list of jars are added to the classpath when compiling the java sources - and also to the dependencies of the target. ``INCLUDE_JARS`` also accepts - other target names created by ``add_jar()``. For backwards compatibility, - jar files listed as sources are ignored (as they have been since the first - version of this module). - - ``ENTRY_POINT`` - Defines an entry point in the jar file. - - ``VERSION`` - Adds a version to the target output name. - - The following example will create a jar file with the name - ``shibboleet-1.2.0.jar`` and will create a symlink ``shibboleet.jar`` - pointing to the jar with the version information. - - .. code-block:: cmake - - add_jar(shibboleet shibbotleet.java VERSION 1.2.0) - - ``MANIFEST`` - Defines a custom manifest for the jar. - - ``OUTPUT_NAME`` - Specify a different output name for the target. - - ``OUTPUT_DIR`` - Sets the directory where the jar file will be generated. If not specified, - :variable:`CMAKE_CURRENT_BINARY_DIR` is used as the output directory. - - ``GENERATE_NATIVE_HEADERS`` - .. versionadded:: 3.11 - - Generates native header files for methods declared as native. These files - provide the connective glue that allow your Java and C code to interact. - An INTERFACE target will be created for an easy usage of generated files. - Sub-option ``DESTINATION`` can be used to specify the output directory for - generated header files. - - This option requires, at least, version 1.8 of the JDK. - - For an optimum usage of this option, it is recommended to include module - JNI before any call to ``add_jar()``. The produced target for native - headers can then be used to compile C/C++ sources with the - :command:`target_link_libraries` command. - - .. code-block:: cmake - - find_package(JNI) - add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native) - add_library(bar bar.cpp) - target_link_libraries(bar PRIVATE foo-native) - - .. versionadded:: 3.20 - ``DESTINATION`` sub-option now supports the possibility to specify - different output directories for ``BUILD`` and ``INSTALL`` steps. If - ``BUILD`` directory is not specified, a default directory will be used. - - To export the interface target generated by ``GENERATE_NATIVE_HEADERS`` - option, sub-option ``INSTALL`` of ``DESTINATION`` is required: - - .. code-block:: cmake - - add_jar(foo foo.java GENERATE_NATIVE_HEADERS foo-native - DESTINATION INSTALL include) - install(TARGETS foo-native EXPORT native) - install(DIRECTORY "$<TARGET_PROPERTY:foo-native,NATIVE_HEADERS_DIRECTORY>/" - DESTINATION include) - install(EXPORT native DESTINATION /to/export NAMESPACE foo) - - Some variables can be set to customize the behavior of ``add_jar()`` as well - as the java compiler: - - ``CMAKE_JAVA_COMPILE_FLAGS`` - Specify additional flags to java compiler. - - ``CMAKE_JAVA_INCLUDE_PATH`` - Specify additional paths to the class path. - - ``CMAKE_JNI_TARGET`` - If the target is a JNI library, sets this boolean variable to ``TRUE`` to - enable creation of a JNI symbolic link (see also - :ref:`install_jni_symlink() <install_jni_symlink>`). - - ``CMAKE_JAR_CLASSES_PREFIX`` - If multiple jars should be produced from the same java source filetree, - to prevent the accumulation of duplicate class files in subsequent jars, - set/reset ``CMAKE_JAR_CLASSES_PREFIX`` prior to calling the ``add_jar()``: - - .. code-block:: cmake - - set(CMAKE_JAR_CLASSES_PREFIX com/redhat/foo) - add_jar(foo foo.java) - - set(CMAKE_JAR_CLASSES_PREFIX com/redhat/bar) - add_jar(bar bar.java) - - The ``add_jar()`` function sets the following target properties on - ``<target_name>``: - - ``INSTALL_FILES`` - The files which should be installed. This is used by - :ref:`install_jar() <install_jar>`. - ``JNI_SYMLINK`` - The JNI symlink which should be installed. This is used by - :ref:`install_jni_symlink() <install_jni_symlink>`. - ``JAR_FILE`` - The location of the jar file so that you can include it. - ``CLASSDIR`` - The directory where the class files can be found. For example to use them - with ``javah``. - ``NATIVE_HEADERS_DIRECTORY`` - .. versionadded:: 3.20 - - The directory where native headers are generated. Defined when option - ``GENERATE_NATIVE_HEADERS`` is specified. - -.. _install_jar: - -.. command:: install_jar - - This command installs the jar file to the given destination:: - - install_jar(<target_name> <destination>) - install_jar(<target_name> DESTINATION <destination> [COMPONENT <component>]) - - This command installs the ``<target_name>`` file to the given - ``<destination>``. It should be called in the same scope as - :ref:`add_jar() <add_jar>` or it will fail. - - .. versionadded:: 3.4 - The second signature with ``DESTINATION`` and ``COMPONENT`` options. - - ``DESTINATION`` - Specify the directory on disk to which a file will be installed. - - ``COMPONENT`` - Specify an installation component name with which the install rule is - associated, such as "runtime" or "development". - - The ``install_jar()`` command sets the following target properties - on ``<target_name>``: - - ``INSTALL_DESTINATION`` - Holds the ``<destination>`` as described above, and is used by - :ref:`install_jar_exports() <install_jar_exports>`. - -.. _install_jni_symlink: - -.. command:: install_jni_symlink - - Installs JNI symlinks for target generated by :ref:`add_jar() <add_jar>`:: - - install_jni_symlink(<target_name> <destination>) - install_jni_symlink(<target_name> DESTINATION <destination> [COMPONENT <component>]) - - This command installs the ``<target_name>`` JNI symlinks to the given - ``<destination>``. It should be called in the same scope as - :ref:`add_jar() <add_jar>` or it will fail. - - .. versionadded:: 3.4 - The second signature with ``DESTINATION`` and ``COMPONENT`` options. - - ``DESTINATION`` - Specify the directory on disk to which a file will be installed. - - ``COMPONENT`` - Specify an installation component name with which the install rule is - associated, such as "runtime" or "development". - - Utilize the following commands to create a JNI symbolic link: - - .. code-block:: cmake - - set(CMAKE_JNI_TARGET TRUE) - add_jar(shibboleet shibbotleet.java VERSION 1.2.0) - install_jar(shibboleet ${LIB_INSTALL_DIR}/shibboleet) - install_jni_symlink(shibboleet ${JAVA_LIB_INSTALL_DIR}) - -Header Generation -^^^^^^^^^^^^^^^^^ - -.. _create_javah: - -.. command:: create_javah - - .. versionadded:: 3.4 - - Generates C header files for java classes:: - - create_javah(TARGET <target> | GENERATED_FILES <VAR> - CLASSES <class>... - [CLASSPATH <classpath>...] - [DEPENDS <depend>...] - [OUTPUT_NAME <path>|OUTPUT_DIR <path>] - ) - - .. deprecated:: 3.11 - This command will no longer be supported starting with version 10 of the JDK - due to the `suppression of javah tool <https://openjdk.org/jeps/313>`_. - The :ref:`add_jar(GENERATE_NATIVE_HEADERS) <add_jar>` command should be - used instead. - - Create C header files from java classes. These files provide the connective - glue that allow your Java and C code to interact. - - There are two main signatures for ``create_javah()``. The first signature - returns generated files through variable specified by the ``GENERATED_FILES`` - option. For example: - - .. code-block:: cmake - - create_javah(GENERATED_FILES files_headers - CLASSES org.cmake.HelloWorld - CLASSPATH hello.jar - ) - - The second signature for ``create_javah()`` creates a target which - encapsulates header files generation. E.g. - - .. code-block:: cmake - - create_javah(TARGET target_headers - CLASSES org.cmake.HelloWorld - CLASSPATH hello.jar - ) - - Both signatures share same options. - - ``CLASSES`` - Specifies Java classes used to generate headers. - - ``CLASSPATH`` - Specifies various paths to look up classes. Here ``.class`` files, jar - files or targets created by command add_jar can be used. - - ``DEPENDS`` - Targets on which the javah target depends. - - ``OUTPUT_NAME`` - Concatenates the resulting header files for all the classes listed by - option ``CLASSES`` into ``<path>``. Same behavior as option ``-o`` of - ``javah`` tool. - - ``OUTPUT_DIR`` - Sets the directory where the header files will be generated. Same behavior - as option ``-d`` of ``javah`` tool. If not specified, - :variable:`CMAKE_CURRENT_BINARY_DIR` is used as the output directory. - -Exporting JAR Targets -^^^^^^^^^^^^^^^^^^^^^ - -.. _install_jar_exports: - -.. command:: install_jar_exports - - .. versionadded:: 3.7 - - Installs a target export file:: - - install_jar_exports(TARGETS <jars>... - [NAMESPACE <namespace>] - FILE <filename> - DESTINATION <destination> [COMPONENT <component>]) - - This command installs a target export file ``<filename>`` for the named jar - targets to the given ``<destination>`` directory. Its function is similar to - that of :command:`install(EXPORT)`. - - ``TARGETS`` - List of targets created by :ref:`add_jar() <add_jar>` command. - - ``NAMESPACE`` - .. versionadded:: 3.9 - - The ``<namespace>`` value will be prepend to the target names as they are - written to the import file. - - ``FILE`` - Specify name of the export file. - - - ``DESTINATION`` - Specify the directory on disk to which a file will be installed. - - ``COMPONENT`` - Specify an installation component name with which the install rule is - associated, such as "runtime" or "development". - -.. _export_jars: - -.. command:: export_jars - - .. versionadded:: 3.7 - - Writes a target export file:: - - export_jars(TARGETS <jars>... - [NAMESPACE <namespace>] - FILE <filename>) - - This command writes a target export file ``<filename>`` for the named ``<jars>`` - targets. Its function is similar to that of :command:`export`. - - ``TARGETS`` - List of targets created by :ref:`add_jar() <add_jar>` command. - - ``NAMESPACE`` - .. versionadded:: 3.9 - - The ``<namespace>`` value will be prepend to the target names as they are - written to the import file. - - ``FILE`` - Specify name of the export file. - -Finding JARs -^^^^^^^^^^^^ - -.. _find_jar: - -.. command:: find_jar - - Finds the specified jar file:: - - find_jar(<VAR> - <name> | NAMES <name1> [<name2>...] - [PATHS <path1> [<path2>... ENV <var>]] - [VERSIONS <version1> [<version2>]] - [DOC "cache documentation string"] - ) - - This command is used to find a full path to the named jar. A cache - entry named by ``<VAR>`` is created to store the result of this command. - If the full path to a jar is found the result is stored in the - variable and the search will not repeated unless the variable is - cleared. If nothing is found, the result will be ``<VAR>-NOTFOUND``, and - the search will be attempted again next time ``find_jar()`` is invoked with - the same variable. - - ``NAMES`` - Specify one or more possible names for the jar file. - - ``PATHS`` - Specify directories to search in addition to the default locations. - The ``ENV`` var sub-option reads paths from a system environment variable. - - ``VERSIONS`` - Specify jar versions. - - ``DOC`` - Specify the documentation string for the ``<VAR>`` cache entry. - -Creating Java Documentation -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. _create_javadoc: - -.. command:: create_javadoc - - Creates java documentation based on files and packages:: - - create_javadoc(<VAR> - (PACKAGES <pkg1> [<pkg2>...] | FILES <file1> [<file2>...]) - [SOURCEPATH <sourcepath>] - [CLASSPATH <classpath>] - [INSTALLPATH <install path>] - [DOCTITLE <the documentation title>] - [WINDOWTITLE <the title of the document>] - [AUTHOR (TRUE|FALSE)] - [USE (TRUE|FALSE)] - [VERSION (TRUE|FALSE)] - ) - - The ``create_javadoc()`` command can be used to create java documentation. - There are two main signatures for ``create_javadoc()``. - - The first signature works with package names on a path with source files: - - .. code-block:: cmake - - create_javadoc(my_example_doc - PACKAGES com.example.foo com.example.bar - SOURCEPATH "${CMAKE_CURRENT_SOURCE_DIR}" - CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} - WINDOWTITLE "My example" - DOCTITLE "<h1>My example</h1>" - AUTHOR TRUE - USE TRUE - VERSION TRUE - ) - - The second signature for ``create_javadoc()`` works on a given list of files: - - .. code-block:: cmake - - create_javadoc(my_example_doc - FILES java/A.java java/B.java - CLASSPATH ${CMAKE_JAVA_INCLUDE_PATH} - WINDOWTITLE "My example" - DOCTITLE "<h1>My example</h1>" - AUTHOR TRUE - USE TRUE - VERSION TRUE - ) - - Both signatures share most of the options. For more details please read the - javadoc manpage. - - ``PACKAGES`` - Specify java packages. - - ``FILES`` - Specify java source files. If relative paths are specified, they are - relative to :variable:`CMAKE_CURRENT_SOURCE_DIR`. - - ``SOURCEPATH`` - Specify the directory where to look for packages. By default, - :variable:`CMAKE_CURRENT_SOURCE_DIR` directory is used. - - ``CLASSPATH`` - Specify where to find user class files. Same behavior as option - ``-classpath`` of ``javadoc`` tool. - - ``INSTALLPATH`` - Specify where to install the java documentation. If you specified, the - documentation will be installed to - ``${CMAKE_INSTALL_PREFIX}/share/javadoc/<VAR>``. - - ``DOCTITLE`` - Specify the title to place near the top of the overview summary file. - Same behavior as option ``-doctitle`` of ``javadoc`` tool. - - ``WINDOWTITLE`` - Specify the title to be placed in the HTML ``<title>`` tag. Same behavior - as option ``-windowtitle`` of ``javadoc`` tool. - - ``AUTHOR`` - When value ``TRUE`` is specified, includes the ``@author`` text in the - generated docs. Same behavior as option ``-author`` of ``javadoc`` tool. - - ``USE`` - When value ``TRUE`` is specified, creates class and package usage pages. - Includes one Use page for each documented class and package. Same behavior - as option ``-use`` of ``javadoc`` tool. - - ``VERSION`` - When value ``TRUE`` is specified, includes the version text in the - generated docs. Same behavior as option ``-version`` of ``javadoc`` tool. -#]=======================================================================] - -include(CMakeParseArguments) - -function (__java_copy_file src dest comment) - add_custom_command( - OUTPUT ${dest} - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ARGS ${src} - ${dest} - DEPENDS ${src} - COMMENT ${comment} - VERBATIM - ) -endfunction () - -function(__java_lcat VAR) - foreach(_line IN LISTS ARGN) - string(APPEND ${VAR} "${_line}\n") - endforeach() - - set(${VAR} "${${VAR}}" PARENT_SCOPE) -endfunction() - -function(__java_export_jar VAR TARGET PATH) - get_target_property(_jarpath ${TARGET} JAR_FILE) - get_filename_component(_jarname ${_jarpath} NAME) - set(_target "${_jar_NAMESPACE}${TARGET}") - __java_lcat(${VAR} - "# Create imported target ${_target}" - "add_library(${_target} IMPORTED STATIC)" - "set_target_properties(${_target} PROPERTIES" - " IMPORTED_LOCATION \"${PATH}/${_jarname}\"" - " JAR_FILE \"${PATH}/${_jarname}\")" - "" - ) - set(${VAR} "${${VAR}}" PARENT_SCOPE) -endfunction() - -function(__java_copy_resource_namespaces VAR DEST JAVA_RESOURCE_FILES JAVA_RESOURCE_FILES_RELATIVE) - - set(_ns_ID "") - set(_ns_VAL "") - - foreach(_item IN LISTS VAR) - if(NOT _ns_ID) - if(NOT _item STREQUAL "NAMESPACE") - message(FATAL_ERROR "UseJava: Expecting \"NAMESPACE\", got\t\"${_item}\"") - return() - endif() - endif() - - if(_item STREQUAL "NAMESPACE") - set(_ns_VAL "") # Prepare for next namespace - set(_ns_ID "${_item}") - continue() - endif() - - if( NOT _ns_VAL) - # we're expecting the next token to be a namespace value - # whatever it is, we're treating it like a namespace - set(_ns_VAL "${_item}") - continue() - endif() - - if(_ns_ID AND _ns_VAL) - # We're expecting a file name, check to see if we got one - cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _test_file_name) - if (NOT EXISTS "${_test_file_name}") - message(FATAL_ERROR "UseJava: File does not exist:\t${_item}") - return() - endif() - endif() - - cmake_path(ABSOLUTE_PATH _item OUTPUT_VARIABLE _abs_file_name) - cmake_path(GET _item FILENAME _resource_file_name) - set(_dest_resource_file_name "${_ns_VAL}/${_resource_file_name}" ) - - __java_copy_file( ${_abs_file_name} - ${DEST}/${_dest_resource_file_name} - "Copying ${_item} to the build directory") - - list(APPEND RESOURCE_FILES_LIST ${DEST}/${_dest_resource_file_name}) - list(APPEND RELATIVE_RESOURCE_FILES_LIST ${_dest_resource_file_name}) - - endforeach() - - set(${JAVA_RESOURCE_FILES} "${RESOURCE_FILES_LIST}" PARENT_SCOPE) - set(${JAVA_RESOURCE_FILES_RELATIVE} "${RELATIVE_RESOURCE_FILES_LIST}" PARENT_SCOPE) -endfunction() - -# define helper scripts -set(_JAVA_EXPORT_TARGETS_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/javaTargets.cmake.in) -set(_JAVA_CLASS_FILELIST_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaClassFilelist.cmake) -set(_JAVA_SYMLINK_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/UseJavaSymlinks.cmake) - -if (CMAKE_HOST_WIN32 AND NOT CYGWIN AND CMAKE_HOST_SYSTEM_NAME MATCHES "Windows") - set(_UseJava_PATH_SEP "$<SEMICOLON>") -else () - set(_UseJava_PATH_SEP ":") -endif() - -function(add_jar _TARGET_NAME) - - cmake_parse_arguments(_add_jar - "" - "VERSION;OUTPUT_DIR;OUTPUT_NAME;ENTRY_POINT;MANIFEST" - "SOURCES;INCLUDE_JARS;GENERATE_NATIVE_HEADERS" - ${ARGN} - ) - - # In CMake < 2.8.12, add_jar used variables which were set prior to calling - # add_jar for customizing the behavior of add_jar. In order to be backwards - # compatible, check if any of those variables are set, and use them to - # initialize values of the named arguments. (Giving the corresponding named - # argument will override the value set here.) - # - # New features should use named arguments only. - if(NOT DEFINED _add_jar_VERSION AND DEFINED CMAKE_JAVA_TARGET_VERSION) - set(_add_jar_VERSION "${CMAKE_JAVA_TARGET_VERSION}") - endif() - if(NOT DEFINED _add_jar_OUTPUT_DIR AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_DIR) - set(_add_jar_OUTPUT_DIR "${CMAKE_JAVA_TARGET_OUTPUT_DIR}") - endif() - if(NOT DEFINED _add_jar_OUTPUT_NAME AND DEFINED CMAKE_JAVA_TARGET_OUTPUT_NAME) - set(_add_jar_OUTPUT_NAME "${CMAKE_JAVA_TARGET_OUTPUT_NAME}") - # reset - set(CMAKE_JAVA_TARGET_OUTPUT_NAME) - endif() - if(NOT DEFINED _add_jar_ENTRY_POINT AND DEFINED CMAKE_JAVA_JAR_ENTRY_POINT) - set(_add_jar_ENTRY_POINT "${CMAKE_JAVA_JAR_ENTRY_POINT}") - endif() - - # This *should* still work if <resources1>... are included without a - # named RESOURCES argument. In that case, the old behavior of potentially - # misplacing the within the Jar will behave as previously (incorrectly) - set(_JAVA_SOURCE_FILES ${_add_jar_SOURCES} ${_add_jar_UNPARSED_ARGUMENTS}) - - if (NOT DEFINED _add_jar_OUTPUT_DIR) - set(_add_jar_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) - else() - get_filename_component(_add_jar_OUTPUT_DIR ${_add_jar_OUTPUT_DIR} ABSOLUTE) - endif() - # ensure output directory exists - file (MAKE_DIRECTORY "${_add_jar_OUTPUT_DIR}") - - if (_add_jar_ENTRY_POINT) - set(_ENTRY_POINT_OPTION e) - set(_ENTRY_POINT_VALUE ${_add_jar_ENTRY_POINT}) - endif () - - if (_add_jar_MANIFEST) - set(_MANIFEST_OPTION m) - get_filename_component (_MANIFEST_VALUE "${_add_jar_MANIFEST}" ABSOLUTE) - endif () - - unset (_GENERATE_NATIVE_HEADERS) - if (_add_jar_GENERATE_NATIVE_HEADERS) - # Raise an error if JDK version is less than 1.8 because javac -h is not supported - # by earlier versions. - if (Java_VERSION VERSION_LESS 1.8) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS is not supported with this version of Java.") - endif() - - unset (_GENERATE_NATIVE_HEADERS_OUTPUT_DESC) - - cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS "" "" "DESTINATION" ${_add_jar_GENERATE_NATIVE_HEADERS}) - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: missing required argument.") - endif() - list (LENGTH _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS length) - if (length GREATER 1) - list (REMOVE_AT _add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS 0) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS}: unexpected argument(s).") - endif() - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION) - set (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir/native_headers") - else() - list (LENGTH _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION length) - if (NOT length EQUAL 1) - cmake_parse_arguments (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "" "BUILD;INSTALL" "" "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION}") - if (_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_UNPARSED_ARGUMENTS) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: DESTINATION: ${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_UNPARSED_ARGUMENTS}: unexpected argument(s).") - endif() - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_INSTALL) - message (FATAL_ERROR "ADD_JAR: GENERATE_NATIVE_HEADERS: DESTINATION: INSTALL sub-option is required.") - endif() - if (NOT _add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD) - set(_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir/native_headers") - endif() - set(_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD}") - set(_GENERATE_NATIVE_HEADERS_OUTPUT_DESC "$<BUILD_INTERFACE:${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_BUILD}>" "$<INSTALL_INTERFACE:${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION_INSTALL}>") - endif() - endif() - - set (_GENERATE_NATIVE_HEADERS_TARGET ${_add_jar_GENERATE_NATIVE_HEADERS_UNPARSED_ARGUMENTS}) - set (_GENERATE_NATIVE_HEADERS_OUTPUT_DIR "${_add_jar_GENERATE_NATIVE_HEADERS_DESTINATION}") - set (_GENERATE_NATIVE_HEADERS -h "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - if(NOT _GENERATE_NATIVE_HEADERS_OUTPUT_DESC) - set(_GENERATE_NATIVE_HEADERS_OUTPUT_DESC "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - endif() - endif() - - if (LIBRARY_OUTPUT_PATH) - set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH}) - else () - set(CMAKE_JAVA_LIBRARY_OUTPUT_PATH ${_add_jar_OUTPUT_DIR}) - endif () - - set(CMAKE_JAVA_INCLUDE_PATH - ${CMAKE_JAVA_INCLUDE_PATH} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_JAVA_OBJECT_OUTPUT_PATH} - ${CMAKE_JAVA_LIBRARY_OUTPUT_PATH} - ) - - foreach (JAVA_INCLUDE_DIR IN LISTS CMAKE_JAVA_INCLUDE_PATH) - string(APPEND CMAKE_JAVA_INCLUDE_PATH_FINAL "${_UseJava_PATH_SEP}${JAVA_INCLUDE_DIR}") - endforeach() - - set(CMAKE_JAVA_CLASS_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_TARGET_NAME}.dir") - - set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}.jar") - if (_add_jar_OUTPUT_NAME AND _add_jar_VERSION) - set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}-${_add_jar_VERSION}.jar") - set(_JAVA_TARGET_OUTPUT_LINK "${_add_jar_OUTPUT_NAME}.jar") - elseif (_add_jar_VERSION) - set(_JAVA_TARGET_OUTPUT_NAME "${_TARGET_NAME}-${_add_jar_VERSION}.jar") - set(_JAVA_TARGET_OUTPUT_LINK "${_TARGET_NAME}.jar") - elseif (_add_jar_OUTPUT_NAME) - set(_JAVA_TARGET_OUTPUT_NAME "${_add_jar_OUTPUT_NAME}.jar") - endif () - - set(_JAVA_CLASS_FILES) - set(_JAVA_COMPILE_FILES) - set(_JAVA_COMPILE_FILELISTS) - set(_JAVA_DEPENDS) - set(_JAVA_COMPILE_DEPENDS) - set(_JAVA_RESOURCE_FILES) - set(_JAVA_RESOURCE_FILES_RELATIVE) - foreach(_JAVA_SOURCE_FILE IN LISTS _JAVA_SOURCE_FILES) - get_filename_component(_JAVA_EXT ${_JAVA_SOURCE_FILE} EXT) - get_filename_component(_JAVA_FILE ${_JAVA_SOURCE_FILE} NAME_WE) - get_filename_component(_JAVA_PATH ${_JAVA_SOURCE_FILE} PATH) - get_filename_component(_JAVA_FULL ${_JAVA_SOURCE_FILE} ABSOLUTE) - - if (_JAVA_SOURCE_FILE MATCHES "^@(.+)$") - get_filename_component(_JAVA_FULL ${CMAKE_MATCH_1} ABSOLUTE) - list(APPEND _JAVA_COMPILE_FILELISTS ${_JAVA_FULL}) - - elseif (_JAVA_EXT MATCHES ".java") - file(RELATIVE_PATH _JAVA_REL_BINARY_PATH ${CMAKE_CURRENT_BINARY_DIR} ${_JAVA_FULL}) - file(RELATIVE_PATH _JAVA_REL_SOURCE_PATH ${CMAKE_CURRENT_SOURCE_DIR} ${_JAVA_FULL}) - string(LENGTH ${_JAVA_REL_BINARY_PATH} _BIN_LEN) - string(LENGTH ${_JAVA_REL_SOURCE_PATH} _SRC_LEN) - if (_BIN_LEN LESS _SRC_LEN) - set(_JAVA_REL_PATH ${_JAVA_REL_BINARY_PATH}) - else () - set(_JAVA_REL_PATH ${_JAVA_REL_SOURCE_PATH}) - endif () - get_filename_component(_JAVA_REL_PATH ${_JAVA_REL_PATH} PATH) - - list(APPEND _JAVA_COMPILE_FILES ${_JAVA_SOURCE_FILE}) - set(_JAVA_CLASS_FILE "${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_REL_PATH}/${_JAVA_FILE}.class") - set(_JAVA_CLASS_FILES ${_JAVA_CLASS_FILES} ${_JAVA_CLASS_FILE}) - - elseif (_JAVA_EXT MATCHES ".jar" - OR _JAVA_EXT MATCHES ".war" - OR _JAVA_EXT MATCHES ".ear" - OR _JAVA_EXT MATCHES ".sar") - # 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}) - list(APPEND _JAVA_DEPENDS ${JAVA_JAR_TARGET_${_JAVA_SOURCE_FILE}}) - - else () - __java_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/${_JAVA_SOURCE_FILE} - ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE} - "Copying ${_JAVA_SOURCE_FILE} to the build directory") - list(APPEND _JAVA_RESOURCE_FILES ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/${_JAVA_SOURCE_FILE}) - list(APPEND _JAVA_RESOURCE_FILES_RELATIVE ${_JAVA_SOURCE_FILE}) - endif () - endforeach() - - if(_add_jar_RESOURCES) # Process RESOURCES if it exists - __java_copy_resource_namespaces("${_add_jar_RESOURCES}" - ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - _JAVA_RESOURCE_FILES - _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() - - if (_JAVA_COMPILE_FILES OR _JAVA_COMPILE_FILELISTS) - set (_JAVA_SOURCES_FILELISTS) - - if (_JAVA_COMPILE_FILES) - # Create the list of files to compile. - set(_JAVA_SOURCES_FILE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_sources) - string(REPLACE ";" "\"\n\"" _JAVA_COMPILE_STRING "\"${_JAVA_COMPILE_FILES}\"") - file(WRITE ${_JAVA_SOURCES_FILE} ${_JAVA_COMPILE_STRING}) - list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_SOURCES_FILE}") - endif() - if (_JAVA_COMPILE_FILELISTS) - foreach (_JAVA_FILELIST IN LISTS _JAVA_COMPILE_FILELISTS) - list (APPEND _JAVA_SOURCES_FILELISTS "@${_JAVA_FILELIST}") - endforeach() - endif() - - # Compile the java files and create a list of class files - add_custom_command( - # NOTE: this command generates an artificial dependency file - OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - COMMAND ${Java_JAVAC_EXECUTABLE} - ${CMAKE_JAVA_COMPILE_FLAGS} - -classpath "${CMAKE_JAVA_INCLUDE_PATH_FINAL}" - -d ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - ${_GENERATE_NATIVE_HEADERS} - ${_JAVA_SOURCES_FILELISTS} - COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - DEPENDS ${_JAVA_COMPILE_FILES} ${_JAVA_COMPILE_FILELISTS} ${_JAVA_COMPILE_DEPENDS} ${_JAVA_SOURCES_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT "Building Java objects for ${_TARGET_NAME}.jar" - VERBATIM - ) - add_custom_command( - OUTPUT ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist - COMMAND ${CMAKE_COMMAND} - -DCMAKE_JAVA_CLASS_OUTPUT_PATH=${CMAKE_JAVA_CLASS_OUTPUT_PATH} - -DCMAKE_JAR_CLASSES_PREFIX=${CMAKE_JAR_CLASSES_PREFIX} - -P ${_JAVA_CLASS_FILELIST_SCRIPT} - DEPENDS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_compiled_${_TARGET_NAME} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - VERBATIM - ) - else () - # create an empty java_class_filelist - if (NOT EXISTS ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist) - file(WRITE ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist "") - endif() - endif () - - # create the jar file - set(_JAVA_JAR_OUTPUT_PATH - "${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_NAME}") - if (CMAKE_JNI_TARGET) - add_custom_command( - OUTPUT ${_JAVA_JAR_OUTPUT_PATH} - COMMAND ${Java_JAR_EXECUTABLE} - -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE} - ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist - COMMAND ${CMAKE_COMMAND} - -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR} - -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME} - -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK} - -P ${_JAVA_SYMLINK_SCRIPT} - COMMAND ${CMAKE_COMMAND} - -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR} - -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_JAR_OUTPUT_PATH} - -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK} - -P ${_JAVA_SYMLINK_SCRIPT} - DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist - WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" - VERBATIM - ) - else () - add_custom_command( - OUTPUT ${_JAVA_JAR_OUTPUT_PATH} - COMMAND ${Java_JAR_EXECUTABLE} - -cf${_ENTRY_POINT_OPTION}${_MANIFEST_OPTION} ${_JAVA_JAR_OUTPUT_PATH} ${_ENTRY_POINT_VALUE} ${_MANIFEST_VALUE} - ${_JAVA_RESOURCE_FILES_RELATIVE} @java_class_filelist - COMMAND ${CMAKE_COMMAND} - -D_JAVA_TARGET_DIR=${_add_jar_OUTPUT_DIR} - -D_JAVA_TARGET_OUTPUT_NAME=${_JAVA_TARGET_OUTPUT_NAME} - -D_JAVA_TARGET_OUTPUT_LINK=${_JAVA_TARGET_OUTPUT_LINK} - -P ${_JAVA_SYMLINK_SCRIPT} - WORKING_DIRECTORY ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - DEPENDS ${_JAVA_RESOURCE_FILES} ${_JAVA_DEPENDS} ${CMAKE_JAVA_CLASS_OUTPUT_PATH}/java_class_filelist - COMMENT "Creating Java archive ${_JAVA_TARGET_OUTPUT_NAME}" - VERBATIM - ) - endif () - - # Add the target and make sure we have the latest resource files. - add_custom_target(${_TARGET_NAME} ALL DEPENDS ${_JAVA_JAR_OUTPUT_PATH}) - - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_FILES - ${_JAVA_JAR_OUTPUT_PATH} - ) - - if (_JAVA_TARGET_OUTPUT_LINK) - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_FILES - ${_JAVA_JAR_OUTPUT_PATH} - ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK} - ) - - if (CMAKE_JNI_TARGET) - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - JNI_SYMLINK - ${_add_jar_OUTPUT_DIR}/${_JAVA_TARGET_OUTPUT_LINK} - ) - endif () - endif () - - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - JAR_FILE - ${_JAVA_JAR_OUTPUT_PATH} - ) - - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - CLASSDIR - ${CMAKE_JAVA_CLASS_OUTPUT_PATH} - ) - - if (_GENERATE_NATIVE_HEADERS) - # create an INTERFACE library encapsulating include directory for generated headers - add_library (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE) - target_include_directories (${_GENERATE_NATIVE_HEADERS_TARGET} INTERFACE - "${_GENERATE_NATIVE_HEADERS_OUTPUT_DESC}" - ${JNI_INCLUDE_DIRS}) - set_property(TARGET ${_GENERATE_NATIVE_HEADERS_TARGET} PROPERTY NATIVE_HEADERS_DIRECTORY "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - # this INTERFACE library depends on jar generation - add_dependencies (${_GENERATE_NATIVE_HEADERS_TARGET} ${_TARGET_NAME}) - - set_property (DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES - "${_GENERATE_NATIVE_HEADERS_OUTPUT_DIR}") - endif() -endfunction() - -function(INSTALL_JAR _TARGET_NAME) - if (ARGC EQUAL 2) - set (_DESTINATION ${ARGV1}) - else() - cmake_parse_arguments(_install_jar - "" - "DESTINATION;COMPONENT" - "" - ${ARGN}) - if (_install_jar_DESTINATION) - set (_DESTINATION ${_install_jar_DESTINATION}) - else() - message(SEND_ERROR "install_jar: ${_TARGET_NAME}: DESTINATION must be specified.") - endif() - - if (_install_jar_COMPONENT) - set (_COMPONENT COMPONENT ${_install_jar_COMPONENT}) - endif() - endif() - - get_property(__FILES - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_FILES - ) - set_property( - TARGET - ${_TARGET_NAME} - PROPERTY - INSTALL_DESTINATION - ${_DESTINATION} - ) - - if (__FILES) - install( - FILES - ${__FILES} - DESTINATION - ${_DESTINATION} - ${_COMPONENT} - ) - else () - message(SEND_ERROR "install_jar: The target ${_TARGET_NAME} is not known in this scope.") - endif () -endfunction() - -function(INSTALL_JNI_SYMLINK _TARGET_NAME) - if (ARGC EQUAL 2) - set (_DESTINATION ${ARGV1}) - else() - cmake_parse_arguments(_install_jni_symlink - "" - "DESTINATION;COMPONENT" - "" - ${ARGN}) - if (_install_jni_symlink_DESTINATION) - set (_DESTINATION ${_install_jni_symlink_DESTINATION}) - else() - message(SEND_ERROR "install_jni_symlink: ${_TARGET_NAME}: DESTINATION must be specified.") - endif() - - if (_install_jni_symlink_COMPONENT) - set (_COMPONENT COMPONENT ${_install_jni_symlink_COMPONENT}) - endif() - endif() - - get_property(__SYMLINK - TARGET - ${_TARGET_NAME} - PROPERTY - JNI_SYMLINK - ) - - if (__SYMLINK) - install( - FILES - ${__SYMLINK} - DESTINATION - ${_DESTINATION} - ${_COMPONENT} - ) - else () - message(SEND_ERROR "install_jni_symlink: The target ${_TARGET_NAME} is not known in this scope.") - endif () -endfunction() - -function (find_jar VARIABLE) - set(_jar_names) - set(_jar_files) - set(_jar_versions) - set(_jar_paths - /usr/share/java/ - /usr/local/share/java/ - ${Java_JAR_PATHS}) - set(_jar_doc "NOTSET") - - set(_state "name") - - foreach (arg IN LISTS ARGN) - if (_state STREQUAL "name") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_names ${arg}) - if (_jar_doc STREQUAL "NOTSET") - set(_jar_doc "Finding ${arg} jar") - endif () - endif () - elseif (_state STREQUAL "versions") - if (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_versions ${_jar_versions} ${arg}) - endif () - elseif (_state STREQUAL "names") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_names ${_jar_names} ${arg}) - if (_jar_doc STREQUAL "NOTSET") - set(_jar_doc "Finding ${arg} jar") - endif () - endif () - elseif (_state STREQUAL "paths") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "DOC") - set(_state "doc") - else () - set(_jar_paths ${_jar_paths} ${arg}) - endif () - elseif (_state STREQUAL "doc") - if (arg STREQUAL "VERSIONS") - set(_state "versions") - elseif (arg STREQUAL "NAMES") - set(_state "names") - elseif (arg STREQUAL "PATHS") - set(_state "paths") - else () - set(_jar_doc ${arg}) - endif () - endif () - endforeach () - - if (NOT _jar_names) - message(FATAL_ERROR "find_jar: No name to search for given") - endif () - - foreach (jar_name IN LISTS _jar_names) - foreach (version IN LISTS _jar_versions) - set(_jar_files ${_jar_files} ${jar_name}-${version}.jar) - endforeach () - set(_jar_files ${_jar_files} ${jar_name}.jar) - endforeach () - - find_file(${VARIABLE} - NAMES ${_jar_files} - PATHS ${_jar_paths} - DOC ${_jar_doc} - NO_DEFAULT_PATH) -endfunction () - -function(create_javadoc _target) - set(_javadoc_packages) - set(_javadoc_files) - set(_javadoc_overview) - set(_javadoc_sourcepath) - set(_javadoc_classpath) - set(_javadoc_installpath "${CMAKE_INSTALL_PREFIX}/share/javadoc") - set(_javadoc_doctitle) - set(_javadoc_windowtitle) - set(_javadoc_author FALSE) - set(_javadoc_version FALSE) - set(_javadoc_use FALSE) - - set(_state "package") - - foreach (arg IN LISTS ARGN) - if (_state STREQUAL "package") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_packages ${arg}) - set(_state "packages") - endif () - elseif (_state STREQUAL "packages") - if (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_packages ${arg}) - endif () - elseif (_state STREQUAL "files") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_files ${arg}) - endif () - elseif (_state STREQUAL "sourcepath") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_sourcepath ${arg}) - endif () - elseif (_state STREQUAL "classpath") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - list(APPEND _javadoc_classpath ${arg}) - endif () - elseif (_state STREQUAL "installpath") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_installpath ${arg}) - endif () - elseif (_state STREQUAL "doctitle") - if (${arg} STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_doctitle ${arg}) - endif () - elseif (_state STREQUAL "windowtitle") - if (${arg} STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_windowtitle ${arg}) - endif () - elseif (_state STREQUAL "author") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_author ${arg}) - endif () - elseif (_state STREQUAL "use") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_use ${arg}) - endif () - elseif (_state STREQUAL "version") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "OVERVIEW") - set(_state "overview") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_version ${arg}) - endif () - elseif (_state STREQUAL "overview") - if (arg STREQUAL "PACKAGES") - set(_state "packages") - elseif (arg STREQUAL "FILES") - set(_state "files") - elseif (arg STREQUAL "SOURCEPATH") - set(_state "sourcepath") - elseif (arg STREQUAL "CLASSPATH") - set(_state "classpath") - elseif (arg STREQUAL "INSTALLPATH") - set(_state "installpath") - elseif (arg STREQUAL "DOCTITLE") - set(_state "doctitle") - elseif (arg STREQUAL "WINDOWTITLE") - set(_state "windowtitle") - elseif (arg STREQUAL "AUTHOR") - set(_state "author") - elseif (arg STREQUAL "USE") - set(_state "use") - elseif (arg STREQUAL "VERSION") - set(_state "version") - else () - set(_javadoc_overview ${arg}) - endif () - endif () - endforeach () - - set(_javadoc_builddir ${CMAKE_CURRENT_BINARY_DIR}/javadoc/${_target}) - set(_javadoc_options -d ${_javadoc_builddir}) - - if (_javadoc_sourcepath) - list(JOIN _javadoc_sourcepath "${_UseJava_PATH_SEP}" _javadoc_sourcepath) - list(APPEND _javadoc_options -sourcepath "\"${_javadoc_sourcepath}\"") - endif () - - if (_javadoc_overview) - list(JOIN _javadoc_overview "${_UseJava_PATH_SEP}" _javadoc_overview) - list(APPEND _javadoc_options -overview "\"${_javadoc_overview}\"") - endif () - - if (_javadoc_classpath) - list(JOIN _javadoc_classpath "${_UseJava_PATH_SEP}" _javadoc_classpath) - list(APPEND _javadoc_options -classpath "\"${_javadoc_classpath}\"") - endif () - - if (_javadoc_doctitle) - list(APPEND _javadoc_options -doctitle '${_javadoc_doctitle}') - endif () - - if (_javadoc_windowtitle) - list(APPEND _javadoc_options -windowtitle '${_javadoc_windowtitle}') - endif () - - if (_javadoc_author) - list(APPEND _javadoc_options -author) - endif () - - if (_javadoc_use) - list(APPEND _javadoc_options -use) - endif () - - if (_javadoc_version) - list(APPEND _javadoc_options -version) - endif () - - add_custom_target(${_target}_javadoc ALL - COMMAND ${Java_JAVADOC_EXECUTABLE} - -Xdoclint:none - ${_javadoc_options} - ${_javadoc_files} - ${_javadoc_packages} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - - install( - DIRECTORY ${_javadoc_builddir} - DESTINATION ${_javadoc_installpath} - ) -endfunction() - -function (create_javah) - if (Java_VERSION VERSION_GREATER_EQUAL 10) - message (FATAL_ERROR "create_javah: not supported with this Java version. Use add_jar(GENERATE_NATIVE_HEADERS) instead.") - elseif (Java_VERSION VERSION_GREATER_EQUAL 1.8) - message (DEPRECATION "create_javah: this command will no longer be supported starting with version 10 of JDK. Update your project by using command add_jar(GENERATE_NATIVE_HEADERS) instead.") - endif() - - cmake_parse_arguments(_create_javah - "" - "TARGET;GENERATED_FILES;OUTPUT_NAME;OUTPUT_DIR" - "CLASSES;CLASSPATH;DEPENDS" - ${ARGN}) - - # check parameters - if (NOT _create_javah_TARGET AND NOT _create_javah_GENERATED_FILES) - message (FATAL_ERROR "create_javah: TARGET or GENERATED_FILES must be specified.") - endif() - if (_create_javah_OUTPUT_NAME AND _create_javah_OUTPUT_DIR) - message (FATAL_ERROR "create_javah: OUTPUT_NAME and OUTPUT_DIR are mutually exclusive.") - endif() - - if (NOT _create_javah_CLASSES) - message (FATAL_ERROR "create_javah: CLASSES is a required parameter.") - endif() - - set (_output_files) - - # handle javah options - set (_javah_options) - - if (_create_javah_CLASSPATH) - # CLASSPATH can specify directories, jar files or targets created with add_jar command - set (_classpath) - foreach (_path IN LISTS _create_javah_CLASSPATH) - if (TARGET ${_path}) - get_target_property (_jar_path ${_path} JAR_FILE) - if (_jar_path) - list (APPEND _classpath "${_jar_path}") - list (APPEND _create_javah_DEPENDS "${_path}") - else() - message(SEND_ERROR "create_javah: CLASSPATH target ${_path} is not a jar.") - endif() - elseif (EXISTS "${_path}") - list (APPEND _classpath "${_path}") - if (NOT IS_DIRECTORY "${_path}") - list (APPEND _create_javah_DEPENDS "${_path}") - endif() - else() - message(SEND_ERROR "create_javah: CLASSPATH entry ${_path} does not exist.") - endif() - endforeach() - string (REPLACE ";" "${_UseJava_PATH_SEP}" _classpath "${_classpath}") - list (APPEND _javah_options -classpath "${_classpath}") - endif() - - if (_create_javah_OUTPUT_DIR) - list (APPEND _javah_options -d "${_create_javah_OUTPUT_DIR}") - endif() - - if (_create_javah_OUTPUT_NAME) - list (APPEND _javah_options -o "${_create_javah_OUTPUT_NAME}") - set (_output_files "${_create_javah_OUTPUT_NAME}") - - get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_NAME}" DIRECTORY) - get_filename_component (_create_javah_OUTPUT_DIR "${_create_javah_OUTPUT_DIR}" ABSOLUTE) - endif() - - if (NOT _create_javah_OUTPUT_DIR) - set (_create_javah_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") - endif() - - if (NOT _create_javah_OUTPUT_NAME) - # compute output names - foreach (_class IN LISTS _create_javah_CLASSES) - string (REPLACE "." "_" _c_header "${_class}") - set (_c_header "${_create_javah_OUTPUT_DIR}/${_c_header}.h") - list (APPEND _output_files "${_c_header}") - endforeach() - endif() - - # finalize custom command arguments - if (_create_javah_DEPENDS) - list (INSERT _create_javah_DEPENDS 0 DEPENDS) - endif() - - add_custom_command (OUTPUT ${_output_files} - COMMAND "${Java_JAVAH_EXECUTABLE}" ${_javah_options} -jni ${_create_javah_CLASSES} - ${_create_javah_DEPENDS} - WORKING_DIRECTORY ${_create_javah_OUTPUT_DIR} - COMMENT "Building C header files from classes...") - - if (_create_javah_TARGET) - add_custom_target (${_create_javah_TARGET} ALL DEPENDS ${_output_files}) - endif() - if (_create_javah_GENERATED_FILES) - set (${_create_javah_GENERATED_FILES} ${_output_files} PARENT_SCOPE) - endif() -endfunction() - -function(export_jars) - # Parse and validate arguments - cmake_parse_arguments(_export_jars - "" - "FILE;NAMESPACE" - "TARGETS" - ${ARGN} - ) - if (NOT _export_jars_FILE) - message(SEND_ERROR "export_jars: FILE must be specified.") - endif() - if (NOT _export_jars_TARGETS) - message(SEND_ERROR "export_jars: TARGETS must be specified.") - endif() - set(_jar_NAMESPACE "${_export_jars_NAMESPACE}") - - # Set content of generated exports file - string(REPLACE ";" " " __targets__ "${_export_jars_TARGETS}") - set(__targetdefs__ "") - foreach(_target IN LISTS _export_jars_TARGETS) - get_target_property(_jarpath ${_target} JAR_FILE) - get_filename_component(_jarpath ${_jarpath} PATH) - __java_export_jar(__targetdefs__ ${_target} "${_jarpath}") - endforeach() - - # Generate exports file - configure_file( - ${_JAVA_EXPORT_TARGETS_SCRIPT} - ${_export_jars_FILE} - @ONLY - ) -endfunction() - -function(install_jar_exports) - # Parse and validate arguments - cmake_parse_arguments(_install_jar_exports - "" - "FILE;DESTINATION;COMPONENT;NAMESPACE" - "TARGETS" - ${ARGN} - ) - if (NOT _install_jar_exports_FILE) - message(SEND_ERROR "install_jar_exports: FILE must be specified.") - endif() - if (NOT _install_jar_exports_DESTINATION) - message(SEND_ERROR "install_jar_exports: DESTINATION must be specified.") - endif() - if (NOT _install_jar_exports_TARGETS) - message(SEND_ERROR "install_jar_exports: TARGETS must be specified.") - endif() - set(_jar_NAMESPACE "${_install_jar_exports_NAMESPACE}") - - if (_install_jar_exports_COMPONENT) - set (_COMPONENT COMPONENT ${_install_jar_exports_COMPONENT}) - endif() - - # Determine relative path from installed export file to install prefix - if(IS_ABSOLUTE "${_install_jar_exports_DESTINATION}") - file(RELATIVE_PATH _relpath - ${_install_jar_exports_DESTINATION} - ${CMAKE_INSTALL_PREFIX} - ) - else() - file(RELATIVE_PATH _relpath - ${CMAKE_INSTALL_PREFIX}/${_install_jar_exports_DESTINATION} - ${CMAKE_INSTALL_PREFIX} - ) - endif() - - # Set up unique location for generated exports file - string(SHA256 _hash "${_install_jar_exports_DESTINATION}") - set(_tmpdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/JavaExports/${_hash}) - - # Set content of generated exports file - string(REPLACE ";" " " __targets__ "${_install_jar_exports_TARGETS}") - set(__targetdefs__ "set(_prefix \${CMAKE_CURRENT_LIST_DIR}/${_relpath})\n\n") - foreach(_target IN LISTS _install_jar_exports_TARGETS) - get_target_property(_dir ${_target} INSTALL_DESTINATION) - __java_export_jar(__targetdefs__ ${_target} "\${_prefix}/${_dir}") - endforeach() - __java_lcat(__targetdefs__ "\nunset(_prefix)") - - # Generate and install exports file - configure_file( - ${_JAVA_EXPORT_TARGETS_SCRIPT} - ${_tmpdir}/${_install_jar_exports_FILE} - @ONLY - ) - install(FILES ${_tmpdir}/${_install_jar_exports_FILE} - DESTINATION ${_install_jar_exports_DESTINATION} - ${_COMPONENT}) -endfunction() diff --git a/config/cmake/UseJavaClassFilelist.cmake b/config/cmake/UseJavaClassFilelist.cmake deleted file mode 100644 index d90ca489fc9..00000000000 --- a/config/cmake/UseJavaClassFilelist.cmake +++ /dev/null @@ -1,39 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See 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/config/cmake/UseJavaSymlinks.cmake b/config/cmake/UseJavaSymlinks.cmake deleted file mode 100644 index 183a7448855..00000000000 --- a/config/cmake/UseJavaSymlinks.cmake +++ /dev/null @@ -1,16 +0,0 @@ -# Distributed under the OSI-approved BSD 3-Clause License. See 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/config/cmake/grepTest.cmake b/config/cmake/grepTest.cmake index 124c0f08100..5c335a8ec0e 100644 --- a/config/cmake/grepTest.cmake +++ b/config/cmake/grepTest.cmake @@ -14,7 +14,38 @@ cmake_policy(SET CMP0007 NEW) cmake_policy(SET CMP0053 NEW) -include(${CMAKE_CURRENT_LIST_DIR}/HDF5Macros.cmake) +# Apply mask replacements to FILENAME and write the results to FILENAME_masked +# Uses TEST_MASKS and TEST_MASKS_REPLACE from its execution environment +macro(H5_MASK_FILE FILENAME) + file (READ ${FILENAME} MASK_STREAM) + + list(LENGTH TEST_MASK num_masks) + MATH(EXPR last_index "${num_masks} - 1") + + if (TEST_MASK_REPLACE) + list(LENGTH TEST_MASK_REPLACE num_masks_replace) + if (NOT num_masks_replace EQUAL num_masks) + message(FATAL_ERROR "TEST_MASK_REPLACE length does not match TEST_MASK length") + endif () + endif() + + # Apply each mask + foreach (index RANGE 0 "${last_index}") + list(GET TEST_MASK ${index} curr_mask) + # Default to replacing with empty string (e.g. removing the found mask string) + if (TEST_MASK_REPLACE) + list(GET TEST_MASK_REPLACE ${index} curr_mask_replace) + else() + set(curr_mask_replace "") + endif() + + message(TRACE "mask #${index}:'${curr_mask}' -> '${curr_mask_replace}'") + + string (REGEX REPLACE "${curr_mask}" "${curr_mask_replace}" MASK_STREAM "${MASK_STREAM}") + endforeach () + + file (WRITE ${FILENAME}_masked "${MASK_STREAM}") +endmacro() # arguments checking if (NOT TEST_PROGRAM) diff --git a/config/cmake/javaTargets.cmake.in b/config/cmake/javaTargets.cmake.in deleted file mode 100644 index f3670c24c36..00000000000 --- a/config/cmake/javaTargets.cmake.in +++ /dev/null @@ -1,38 +0,0 @@ -cmake_policy(PUSH) -cmake_policy(VERSION 2.8.12...3.27) - -#---------------------------------------------------------------- -# 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/config/cmake/runTest.cmake b/config/cmake/runTest.cmake index 0f487f61cb8..40301b0a987 100644 --- a/config/cmake/runTest.cmake +++ b/config/cmake/runTest.cmake @@ -14,7 +14,38 @@ cmake_policy(SET CMP0007 NEW) cmake_policy(SET CMP0053 NEW) -include(${CMAKE_CURRENT_LIST_DIR}/HDF5Macros.cmake) +# Apply mask replacements to FILENAME and write the results to FILENAME_masked +# Uses TEST_MASKS and TEST_MASKS_REPLACE from its execution environment +macro(H5_MASK_FILE FILENAME) + file (READ ${FILENAME} MASK_STREAM) + + list(LENGTH TEST_MASK num_masks) + MATH(EXPR last_index "${num_masks} - 1") + + if (TEST_MASK_REPLACE) + list(LENGTH TEST_MASK_REPLACE num_masks_replace) + if (NOT num_masks_replace EQUAL num_masks) + message(FATAL_ERROR "TEST_MASK_REPLACE length does not match TEST_MASK length") + endif () + endif() + + # Apply each mask + foreach (index RANGE 0 "${last_index}") + list(GET TEST_MASK ${index} curr_mask) + # Default to replacing with empty string (e.g. removing the found mask string) + if (TEST_MASK_REPLACE) + list(GET TEST_MASK_REPLACE ${index} curr_mask_replace) + else() + set(curr_mask_replace "") + endif() + + message(TRACE "mask #${index}:'${curr_mask}' -> '${curr_mask_replace}'") + + string (REGEX REPLACE "${curr_mask}" "${curr_mask_replace}" MASK_STREAM "${MASK_STREAM}") + endforeach () + + file (WRITE ${FILENAME}_masked "${MASK_STREAM}") +endmacro() # arguments checking if (NOT TEST_PROGRAM) diff --git a/config/cmake/scripts/CTestScript.cmake b/config/cmake/scripts/CTestScript.cmake index f87b3357c52..20ca404e9e4 100644 --- a/config/cmake/scripts/CTestScript.cmake +++ b/config/cmake/scripts/CTestScript.cmake @@ -252,7 +252,7 @@ set (ENV{CI_MODEL} ${MODEL}) if (LOCAL_UPDATE) ctest_update (SOURCE "${CTEST_SOURCE_DIRECTORY}") endif () - configure_file (${CTEST_SOURCE_DIRECTORY}/config/cmake/CTestCustom.cmake ${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake) + configure_file (${CTEST_SOURCE_DIRECTORY}/config/CTestCustom.cmake ${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake) ctest_read_custom_files ("${CTEST_BINARY_DIRECTORY}") ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res) if (LOCAL_SUBMIT) diff --git a/config/cmake/examples/CTestScript.cmake b/config/examples/CTestScript.cmake similarity index 98% rename from config/cmake/examples/CTestScript.cmake rename to config/examples/CTestScript.cmake index 0b318d1147d..5801f775c2b 100644 --- a/config/cmake/examples/CTestScript.cmake +++ b/config/examples/CTestScript.cmake @@ -144,7 +144,7 @@ set (CTEST_CONFIGURE_COMMAND set (ENV{LC_MESSAGES} "en_EN") #----------------------------------------------------------------------------- - configure_file(${CTEST_SOURCE_DIRECTORY}/config/cmake/CTestCustom.cmake ${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake) + configure_file(${CTEST_SOURCE_DIRECTORY}/config/CTestCustom.cmake ${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake) ctest_read_custom_files ("${CTEST_BINARY_DIRECTORY}") #----------------------------------------------------------------------------- ## NORMAL process diff --git a/config/cmake/examples/HDF5AsSubdirMacros.cmake b/config/examples/HDF5AsSubdirMacros.cmake similarity index 98% rename from config/cmake/examples/HDF5AsSubdirMacros.cmake rename to config/examples/HDF5AsSubdirMacros.cmake index 419fa12087a..8738a9d2ea3 100644 --- a/config/cmake/examples/HDF5AsSubdirMacros.cmake +++ b/config/examples/HDF5AsSubdirMacros.cmake @@ -76,8 +76,8 @@ endmacro () # to build HDF5 as a subdirectory using FetchContent or to find HDF5 using # the find_package command. The macro should be called in the parent project macro (HDF5_SUPPORT EXTNAME) #EXTNAME is the extension name used in the parent project - # H5_RESOURCES_DIR is set in the top level CMakeLists.txt - set (CMAKE_MODULE_PATH ${H5${EXTNAME}_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) + # H5_CONFIG_DIR and H5_RESOURCES_DIR are set in the top level CMakeLists.txt + set (CMAKE_MODULE_PATH ${H5${EXTNAME}_CONFIG_DIR} ${H5${EXTNAME}_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) option (USE_SHARED_LIBS "Use Shared Libraries" ON) if (HDF_FETCH_HDF5) diff --git a/config/cmake/examples/HDF5_Examples.cmake.in b/config/examples/HDF5_Examples.cmake.in similarity index 100% rename from config/cmake/examples/HDF5_Examples.cmake.in rename to config/examples/HDF5_Examples.cmake.in diff --git a/config/cmake/examples/HDF5_Examples_options.cmake b/config/examples/HDF5_Examples_options.cmake similarity index 100% rename from config/cmake/examples/HDF5_Examples_options.cmake rename to config/examples/HDF5_Examples_options.cmake diff --git a/config/cmake/HDFClangCXXFlags.cmake b/config/flags/HDFClangCXXFlags.cmake similarity index 89% rename from config/cmake/HDFClangCXXFlags.cmake rename to config/flags/HDFClangCXXFlags.cmake index ed57f124838..996d26d842b 100644 --- a/config/cmake/HDFClangCXXFlags.cmake +++ b/config/flags/HDFClangCXXFlags.cmake @@ -40,7 +40,7 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") # # NOTE: Don't add -Wpadded here since we can't/won't fix the (many) # warnings that are emitted. If you need it, add it at configure time. - ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/general") + ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF_CONFIG_DIR}/clang-warnings/general") message (VERBOSE "CMAKE_CXX_FLAGS_GENERAL=${HDF5_CMAKE_CXX_FLAGS}") endif () @@ -50,7 +50,7 @@ endif () #----------------------------------------------------------------------------- if (HDF5_ENABLE_DEV_WARNINGS) message (STATUS "....HDF5 CXX developer group warnings are enabled") - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/clang-warnings/developer-general") else () - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/no-developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/clang-warnings/no-developer-general") endif () diff --git a/config/cmake/HDFClangFlags.cmake b/config/flags/HDFClangFlags.cmake similarity index 89% rename from config/cmake/HDFClangFlags.cmake rename to config/flags/HDFClangFlags.cmake index 4120711fc32..b1342cecb07 100644 --- a/config/cmake/HDFClangFlags.cmake +++ b/config/flags/HDFClangFlags.cmake @@ -51,8 +51,8 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") # # NOTE: Don't add -Wpadded here since we can't/won't fix the (many) # warnings that are emitted. If you need it, add it at configure time. - ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/general") - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/error-general") + ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF_CONFIG_DIR}/clang-warnings/general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/clang-warnings/error-general") message (VERBOSE "CMAKE_C_FLAGS_GENERAL=${HDF5_CMAKE_C_FLAGS}") endif () @@ -62,7 +62,7 @@ endif () #----------------------------------------------------------------------------- if (HDF5_ENABLE_DEV_WARNINGS) message (STATUS "....HDF5 developer group warnings are enabled") - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/clang-warnings/developer-general") # Turn on -Winline warnings now only for non-Debug and # non-Developer builds. For at least GNU compilers this @@ -73,5 +73,5 @@ if (HDF5_ENABLE_DEV_WARNINGS) list (APPEND H5_CFLAGS "-Winline") endif () else () - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/clang-warnings/no-developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/clang-warnings/no-developer-general") endif () diff --git a/config/cmake/HDFCompilerCXXFlags.cmake b/config/flags/HDFCompilerCXXFlags.cmake similarity index 95% rename from config/cmake/HDFCompilerCXXFlags.cmake rename to config/flags/HDFCompilerCXXFlags.cmake index fb42039488b..b2efffe27d9 100644 --- a/config/cmake/HDFCompilerCXXFlags.cmake +++ b/config/flags/HDFCompilerCXXFlags.cmake @@ -65,24 +65,24 @@ if (CMAKE_CXX_COMPILER_LOADED) endif () if (CMAKE_CXX_COMPILER_ID MATCHES "NVHPC" ) - include (${HDF_RESOURCES_DIR}/HDFNvhpcCXXFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFNvhpcCXXFlags.cmake) endif () if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") - include (${HDF_RESOURCES_DIR}/HDFGnuCXXFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFGnuCXXFlags.cmake) endif () if (CMAKE_CXX_COMPILER_ID MATCHES "Intel") - include (${HDF_RESOURCES_DIR}/HDFIntelCXXFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFIntelCXXFlags.cmake) endif () if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - include (${HDF_RESOURCES_DIR}/HDFMsvcCXXFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFMsvcCXXFlags.cmake) endif () #because this will match other compilers with clang in the name this should be checked last if (CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang") - include (${HDF_RESOURCES_DIR}/HDFClangCXXFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFClangCXXFlags.cmake) endif () #----------------------------------------------------------------------------- diff --git a/config/cmake/HDFCompilerFlags.cmake b/config/flags/HDFCompilerFlags.cmake similarity index 97% rename from config/cmake/HDFCompilerFlags.cmake rename to config/flags/HDFCompilerFlags.cmake index d00fd8209de..2d410c3e59f 100644 --- a/config/cmake/HDFCompilerFlags.cmake +++ b/config/flags/HDFCompilerFlags.cmake @@ -57,24 +57,24 @@ if (HDF5_DISABLE_COMPILER_WARNINGS) endif () if (CMAKE_C_COMPILER_ID MATCHES "NVHPC" ) - include (${HDF_RESOURCES_DIR}/HDFNvhpcFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFNvhpcFlags.cmake) endif () if (CMAKE_C_COMPILER_ID MATCHES "GNU") - include (${HDF_RESOURCES_DIR}/HDFGnuFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFGnuFlags.cmake) endif () if (CMAKE_C_COMPILER_ID MATCHES "Intel") - include (${HDF_RESOURCES_DIR}/HDFIntelFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFIntelFlags.cmake) endif () if (CMAKE_C_COMPILER_ID MATCHES "MSVC") - include (${HDF_RESOURCES_DIR}/HDFMsvcFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFMsvcFlags.cmake) endif () #because this will match other compilers with clang in the name this should be checked last if (CMAKE_C_COMPILER_ID MATCHES "[Cc]lang") - include (${HDF_RESOURCES_DIR}/HDFClangFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFClangFlags.cmake) endif () #----------------------------------------------------------------------------- diff --git a/config/cmake/HDFCompilerFortranFlags.cmake b/config/flags/HDFCompilerFortranFlags.cmake similarity index 95% rename from config/cmake/HDFCompilerFortranFlags.cmake rename to config/flags/HDFCompilerFortranFlags.cmake index 76cc15a438f..f5fbfe07b64 100644 --- a/config/cmake/HDFCompilerFortranFlags.cmake +++ b/config/flags/HDFCompilerFortranFlags.cmake @@ -38,15 +38,15 @@ if (HDF5_DISABLE_COMPILER_WARNINGS) endif () if (CMAKE_Fortran_COMPILER_ID MATCHES "NVHPC" ) - include (${HDF_RESOURCES_DIR}/HDFNvhpcFortranFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFNvhpcFortranFlags.cmake) endif () if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU") - include (${HDF_RESOURCES_DIR}/HDFGnuFortranFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFGnuFortranFlags.cmake) endif () if (CMAKE_Fortran_COMPILER_ID MATCHES "Intel") - include (${HDF_RESOURCES_DIR}/HDFIntelFortranFlags.cmake) + include (${HDF_CONFIG_DIR}/flags/HDFIntelFortranFlags.cmake) endif () #----------------------------------------------------------------------------- diff --git a/config/cmake/HDFGnuCXXFlags.cmake b/config/flags/HDFGnuCXXFlags.cmake similarity index 78% rename from config/cmake/HDFGnuCXXFlags.cmake rename to config/flags/HDFGnuCXXFlags.cmake index afd5b410eff..3bf1d574131 100644 --- a/config/cmake/HDFGnuCXXFlags.cmake +++ b/config/flags/HDFGnuCXXFlags.cmake @@ -53,8 +53,8 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") # warnings that are emitted. If you need it, add it at configure time. if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) # add the general CXX flags for g++ compiler versions 4.8 and above. - ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-general") - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-error-general") + ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-error-general") endif () message (VERBOSE "CMAKE_CXX_FLAGS_GENERAL=${HDF5_CMAKE_CXX_FLAGS}") endif () @@ -66,92 +66,92 @@ endif () if (HDF5_ENABLE_DEV_WARNINGS) message (STATUS "....HDF5 CXX developer group warnings are enabled") # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-general") else () # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-general") endif () # Technically, variable-length arrays are part of the C99 standard, but # we should approach them a bit cautiously... Only needed for gcc 4.X if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0 AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/4.8-4.last") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/4.8-4.last") endif () # Append more extra warning flags that only gcc 4.8+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8) - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-4.8") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-4.8") if (HDF5_ENABLE_DEV_WARNINGS) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-developer-4.8") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-developer-4.8") else () - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-cxx-developer-4.8") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-cxx-developer-4.8") endif () endif () # Append more extra warning flags that only gcc 4.9+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-4.9") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-4.9") endif () # Append more extra warning flags that only gcc 5.1+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0) - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-5") - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-error-5") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-5") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-error-5") endif () # Append more extra warning flags that only gcc 6.x+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.0) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/6") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/6") endif () # Append more extra warning flags that only gcc 7.x+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXxFLAGS2 "${HDF5_SOURCE_DIR}/config/gnu-warnings/7") + ADD_H5_FLAGS (H5_CXxFLAGS2 "${HDF_CONFIG_DIR}/gnu-warnings/7") if (HDF5_ENABLE_DEV_WARNINGS) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-7") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-7") #else () - # ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-7") + # ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-7") endif () endif () # Append more extra warning flags that only gcc 8.x+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/8") - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-8") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/8") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/error-8") if (HDF5_ENABLE_DEV_WARNINGS) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-8") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-8") else () - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-8") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-8") endif () endif () # Append more extra warning flags that only gcc 9.x+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/cxx-9") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/cxx-9") endif () # Append more extra warning flags that only gcc 9.3+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.3) # do not use C warnings, gnu-warnings 9.3, no cxx warnings - # ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/9.3") + # ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/9.3") endif () # Append more extra warning flags that only gcc 10.x+ knows about if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0) if (HDF5_ENABLE_DEV_WARNINGS) # Use the C warnings as CXX warnings are the same - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-10") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-10") #else () - # ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-10") + # ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-10") endif () endif () diff --git a/config/cmake/HDFGnuFlags.cmake b/config/flags/HDFGnuFlags.cmake similarity index 76% rename from config/cmake/HDFGnuFlags.cmake rename to config/flags/HDFGnuFlags.cmake index 47ca5f083ec..2dc66486108 100644 --- a/config/cmake/HDFGnuFlags.cmake +++ b/config/flags/HDFGnuFlags.cmake @@ -62,8 +62,8 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") # warnings that are emitted. If you need it, add it at configure time. # Add general CFlags for GCC versions 4.8 and above if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) - ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/general") - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-general") + ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/error-general") endif () # gcc automatically inlines based on the optimization level # this is just a failsafe @@ -78,7 +78,7 @@ endif () if (HDF5_ENABLE_DEV_WARNINGS) message (STATUS "....HDF5 developer group warnings are enabled") if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-general") endif () # Turn on -Winline warnings now only for non-Debug and @@ -91,80 +91,80 @@ if (HDF5_ENABLE_DEV_WARNINGS) endif () else () if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-general") endif () endif () # Technically, variable-length arrays are part of the C99 standard, but # we should approach them a bit cautiously... Only needed for gcc 4.X if (CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0 AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/4.8-4.last") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/4.8-4.last") endif () # Append more extra warning flags that only gcc 4.8+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/4.8") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/4.8") if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-4.8") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-4.8") else () - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-4.8") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-4.8") endif () endif () # Append more extra warning flags that only gcc 4.9+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/4.9") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/4.9") endif () # Append more extra warning flags that only gcc 5.x+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/5") - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-5") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/5") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/error-5") endif () # Append more extra warning flags that only gcc 6.x+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/6") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/6") endif () # Append more extra warning flags that only gcc 7.x+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/7") - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-7") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/7") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/error-7") if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-7") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-7") #else () - # ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-7") + # ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-7") endif () endif () # Append more extra warning flags that only gcc 8.x+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/8") - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/error-8") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/8") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/error-8") if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-8") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-8") else () - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-8") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-8") endif () endif () # Append more extra warning flags that only gcc 9.x+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/9") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/9") endif () # Append more extra warning flags that only gcc 9.3+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.3) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/9.3") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/9.3") endif () # Append more extra warning flags that only gcc 10.x+ knows about if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0) if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-10") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-10") #else () - # ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-10") + # ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-10") endif () endif () @@ -172,9 +172,9 @@ endif () # or which should only be enabled for gcc 12.x+ if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0) if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/developer-12") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/developer-12") #else () - # ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/no-developer-12") + # ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/gnu-warnings/no-developer-12") endif () endif () diff --git a/config/cmake/HDFGnuFortranFlags.cmake b/config/flags/HDFGnuFortranFlags.cmake similarity index 71% rename from config/cmake/HDFGnuFortranFlags.cmake rename to config/flags/HDFGnuFortranFlags.cmake index 90fa796447b..3fb56ff408d 100644 --- a/config/cmake/HDFGnuFortranFlags.cmake +++ b/config/flags/HDFGnuFortranFlags.cmake @@ -31,11 +31,11 @@ endif () if (NOT MSVC AND NOT MINGW) # General flags - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-general") if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-developer-general") else () - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-no-developer-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-no-developer-general") endif () list (APPEND HDF5_CMAKE_Fortran_FLAGS "-ffree-form" "-fimplicit-none") if (CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.0 AND NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.6) @@ -47,44 +47,44 @@ if (NOT MSVC AND NOT MINGW) # Append more extra warning flags that only gcc 4.8+ knows about if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.8) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-4.8") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-4.8") if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-4.8") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-developer-4.8") else () - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-no-developer-4.8") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-no-developer-4.8") endif () endif () # Append more extra warning flags that only gcc 4.9+ knows about #if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 4.9) - # ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-4.9") + # ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-4.9") #endif () # Append more extra warning flags that only gcc 5.x+ knows about if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 5.0) if (HDF5_ENABLE_DEV_WARNINGS) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-developer-5") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-developer-5") endif () endif () # Append more extra warning flags that only gcc 6.x+ knows about if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 6.0) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-6") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-6") endif () # Append more extra warning flags that only gcc 7.x+ knows about #if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 7.0) - # ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-7") + # ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-7") #endif () # Append more extra warning flags that only gcc 8.x+ knows about if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 8.0) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-8") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-8") endif () # Append more extra warning flags that only gcc 9.x+ knows about #if (NOT CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 9.0) - # ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/gnu-warnings/gfort-9") + # ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/gnu-warnings/gfort-9") #endif () endif () diff --git a/config/cmake/HDFIntelCXXFlags.cmake b/config/flags/HDFIntelCXXFlags.cmake similarity index 76% rename from config/cmake/HDFIntelCXXFlags.cmake rename to config/flags/HDFIntelCXXFlags.cmake index e31b3fe2d60..3c7c0b023ac 100644 --- a/config/cmake/HDFIntelCXXFlags.cmake +++ b/config/flags/HDFIntelCXXFlags.cmake @@ -37,23 +37,23 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") # warnings that are emitted. If you need it, add it at configure time. if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-general") + ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/win-general") else () - ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/general") + ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/general") endif() if (NOT _INTEL_WINDOWS) if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0) - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/15") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/15") endif () if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0) - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/18") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/18") endif () endif () elseif (CMAKE_CXX_COMPILER_ID MATCHES "IntelLLVM") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-general") + ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/win-general") else () - ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/general") + ADD_H5_FLAGS (HDF5_CMAKE_CXX_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/general") endif () endif () message (VERBOSE "CMAKE_CXX_FLAGS_GENERAL=${HDF5_CMAKE_CXX_FLAGS}") @@ -67,15 +67,15 @@ if (HDF5_ENABLE_DEV_WARNINGS) message (STATUS "....HDF5 CXX developer group warnings are enabled") if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/win-developer-general") else () - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/developer-general") endif () elseif (CMAKE_CXX_COMPILER_ID MATCHES "IntelLLVM") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/win-developer-general") else () - ADD_H5_FLAGS (H5_CXXFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/developer-general") + ADD_H5_FLAGS (H5_CXXFLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/developer-general") endif () endif () endif () diff --git a/config/cmake/HDFIntelFlags.cmake b/config/flags/HDFIntelFlags.cmake similarity index 79% rename from config/cmake/HDFIntelFlags.cmake rename to config/flags/HDFIntelFlags.cmake index b36e508cd28..52950645c46 100644 --- a/config/cmake/HDFIntelFlags.cmake +++ b/config/flags/HDFIntelFlags.cmake @@ -45,27 +45,27 @@ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") # warnings that are emitted. If you need it, add it at configure time. if (CMAKE_C_COMPILER_ID STREQUAL "Intel") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-general") + ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/win-general") else () - ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/general") + ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/general") endif() if (NOT _INTEL_WINDOWS) if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/15") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/15") endif () # this is just a failsafe list (APPEND H5_CFLAGS "-finline-functions") if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 18.0) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/18") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/18") endif () endif () elseif (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-general") + ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/win-general") else () # this is just a failsafe list (APPEND H5_CFLAGS "-finline-functions") - ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/general") + ADD_H5_FLAGS (HDF5_CMAKE_C_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/general") endif () endif () message (VERBOSE "CMAKE_C_FLAGS_GENERAL=${HDF5_CMAKE_C_FLAGS}") @@ -79,15 +79,15 @@ if (HDF5_ENABLE_DEV_WARNINGS) message (STATUS "....HDF5 developer group warnings are enabled") if (CMAKE_C_COMPILER_ID STREQUAL "Intel") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/win-developer-general") else () - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/developer-general") endif () elseif (CMAKE_C_COMPILER_ID MATCHES "IntelLLVM") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/win-developer-general") else () - ADD_H5_FLAGS (H5_CFLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/developer-general") + ADD_H5_FLAGS (H5_CFLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/developer-general") endif () endif () endif () diff --git a/config/cmake/HDFIntelFortranFlags.cmake b/config/flags/HDFIntelFortranFlags.cmake similarity index 77% rename from config/cmake/HDFIntelFortranFlags.cmake rename to config/flags/HDFIntelFortranFlags.cmake index 7474d7144e5..7ba5c952f2a 100644 --- a/config/cmake/HDFIntelFortranFlags.cmake +++ b/config/flags/HDFIntelFortranFlags.cmake @@ -39,26 +39,26 @@ if (NOT MSVC AND NOT MINGW) # General flags if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-ifort-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/win-ifort-general") else () - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/ifort-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/ifort-general") endif() list (APPEND HDF5_CMAKE_Fortran_FLAGS "-free") elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM") if (_INTEL_WINDOWS) - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-ifort-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/win-ifort-general") else () - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/ifort-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/ifort-general") endif() list (APPEND HDF5_CMAKE_Fortran_FLAGS "-free") endif () message (VERBOSE "HDF5_CMAKE_Fortran_FLAGS=${HDF5_CMAKE_Fortran_FLAGS}") else () if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel") - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/classic/win-ifort-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/classic/win-ifort-general") list (APPEND HDF5_CMAKE_Fortran_FLAGS "/stand:f03" "/free") elseif (CMAKE_Fortran_COMPILER_ID MATCHES "IntelLLVM") - ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF5_SOURCE_DIR}/config/intel-warnings/oneapi/win-ifort-general") + ADD_H5_FLAGS (HDF5_CMAKE_Fortran_FLAGS "${HDF_CONFIG_DIR}/intel-warnings/oneapi/win-ifort-general") list (APPEND HDF5_CMAKE_Fortran_FLAGS "/stand:f03" "/free") endif () endif () diff --git a/config/cmake/HDFMsvcCXXFlags.cmake b/config/flags/HDFMsvcCXXFlags.cmake similarity index 100% rename from config/cmake/HDFMsvcCXXFlags.cmake rename to config/flags/HDFMsvcCXXFlags.cmake diff --git a/config/cmake/HDFMsvcFlags.cmake b/config/flags/HDFMsvcFlags.cmake similarity index 100% rename from config/cmake/HDFMsvcFlags.cmake rename to config/flags/HDFMsvcFlags.cmake diff --git a/config/cmake/HDFNvhpcCXXFlags.cmake b/config/flags/HDFNvhpcCXXFlags.cmake similarity index 100% rename from config/cmake/HDFNvhpcCXXFlags.cmake rename to config/flags/HDFNvhpcCXXFlags.cmake diff --git a/config/cmake/HDFNvhpcFlags.cmake b/config/flags/HDFNvhpcFlags.cmake similarity index 100% rename from config/cmake/HDFNvhpcFlags.cmake rename to config/flags/HDFNvhpcFlags.cmake diff --git a/config/cmake/HDFNvhpcFortranFlags.cmake b/config/flags/HDFNvhpcFortranFlags.cmake similarity index 100% rename from config/cmake/HDFNvhpcFortranFlags.cmake rename to config/flags/HDFNvhpcFortranFlags.cmake diff --git a/config/cmake/CPack.Info.plist.in b/config/install/CPack.Info.plist.in similarity index 100% rename from config/cmake/CPack.Info.plist.in rename to config/install/CPack.Info.plist.in diff --git a/config/cmake/NSIS.InstallOptions.ini.in b/config/install/NSIS.InstallOptions.ini.in similarity index 100% rename from config/cmake/NSIS.InstallOptions.ini.in rename to config/install/NSIS.InstallOptions.ini.in diff --git a/config/cmake/NSIS.template.in b/config/install/NSIS.template.in similarity index 100% rename from config/cmake/NSIS.template.in rename to config/install/NSIS.template.in diff --git a/config/cmake/PkgInfo.in b/config/install/PkgInfo.in similarity index 100% rename from config/cmake/PkgInfo.in rename to config/install/PkgInfo.in diff --git a/config/cmake/SignPackageFiles.cmake b/config/install/SignPackageFiles.cmake similarity index 97% rename from config/cmake/SignPackageFiles.cmake rename to config/install/SignPackageFiles.cmake index 32202c3209a..a9e1b957583 100644 --- a/config/cmake/SignPackageFiles.cmake +++ b/config/install/SignPackageFiles.cmake @@ -28,7 +28,7 @@ foreach (targetfile IN LISTS target_list) elseif (APPLE) # Sign the targets execute_process (COMMAND codesign - --force --timestamp --options runtime --entitlements ${CPACK_ORIG_SOURCE_DIR}/config/cmake/distribution.entitlements + --force --timestamp --options runtime --entitlements ${CPACK_ORIG_SOURCE_DIR}/config/install/distribution.entitlements --verbose=4 --strict --sign "$ENV{SIGNER}" ${targetfile} ) diff --git a/config/cmake/distribution.entitlements b/config/install/distribution.entitlements similarity index 100% rename from config/cmake/distribution.entitlements rename to config/install/distribution.entitlements diff --git a/config/cmake/hdf.bmp b/config/install/hdf.bmp similarity index 100% rename from config/cmake/hdf.bmp rename to config/install/hdf.bmp diff --git a/config/cmake/hdf.icns b/config/install/hdf.icns similarity index 100% rename from config/cmake/hdf.icns rename to config/install/hdf.icns diff --git a/config/cmake/hdf.ico b/config/install/hdf.ico similarity index 100% rename from config/cmake/hdf.ico rename to config/install/hdf.ico diff --git a/config/cmake/hdf5-config-version.cmake.in b/config/install/hdf5-config-version.cmake.in similarity index 100% rename from config/cmake/hdf5-config-version.cmake.in rename to config/install/hdf5-config-version.cmake.in diff --git a/config/cmake/hdf5-config.cmake.in b/config/install/hdf5-config.cmake.in similarity index 100% rename from config/cmake/hdf5-config.cmake.in rename to config/install/hdf5-config.cmake.in diff --git a/config/cmake/patch.xml.in b/config/install/patch.xml.in similarity index 100% rename from config/cmake/patch.xml.in rename to config/install/patch.xml.in diff --git a/config/cmake/version.plist.in b/config/install/version.plist.in similarity index 100% rename from config/cmake/version.plist.in rename to config/install/version.plist.in diff --git a/config/cmake/libh5cc.in b/config/libh5cc.in similarity index 100% rename from config/cmake/libh5cc.in rename to config/libh5cc.in diff --git a/fortran/src/CMakeLists.txt b/fortran/src/CMakeLists.txt index a85d255bd97..a6e5abb3196 100644 --- a/fortran/src/CMakeLists.txt +++ b/fortran/src/CMakeLists.txt @@ -620,7 +620,7 @@ install ( if (NOT WIN32 AND NOT MINGW) set (_PKG_CONFIG_COMPILER ${HDF5_H5CC_Fortran_COMPILER}) configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5fc @ONLY ) @@ -632,7 +632,7 @@ if (NOT WIN32 AND NOT MINGW) ) if (HDF5_ENABLE_PARALLEL AND MPI_Fortran_FOUND) configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5pfc @ONLY ) diff --git a/hl/c++/src/CMakeLists.txt b/hl/c++/src/CMakeLists.txt index 0288e94e943..bba872ffc62 100644 --- a/hl/c++/src/CMakeLists.txt +++ b/hl/c++/src/CMakeLists.txt @@ -126,7 +126,7 @@ install ( if (NOT WIN32 AND NOT MINGW) set (_PKG_CONFIG_COMPILER ${HDF5_H5CC_CXX_COMPILER}) configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5hlc++ @ONLY ) diff --git a/hl/fortran/src/CMakeLists.txt b/hl/fortran/src/CMakeLists.txt index 4f2c47ea0e5..7a3c0a8e6af 100644 --- a/hl/fortran/src/CMakeLists.txt +++ b/hl/fortran/src/CMakeLists.txt @@ -361,7 +361,7 @@ install ( if (NOT WIN32 AND NOT MINGW) set (_PKG_CONFIG_COMPILER ${HDF5_H5CC_Fortran_COMPILER}) configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5hlfc @ONLY ) diff --git a/hl/src/CMakeLists.txt b/hl/src/CMakeLists.txt index a7074dca199..1544efacedd 100644 --- a/hl/src/CMakeLists.txt +++ b/hl/src/CMakeLists.txt @@ -158,7 +158,7 @@ install ( if (NOT WIN32 AND NOT MINGW) set (_PKG_CONFIG_COMPILER ${HDF5_H5CC_C_COMPILER}) configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5hlcc @ONLY ) diff --git a/java/CMakeLists.txt b/java/CMakeLists.txt index f39ed32ff8b..0a4371917a8 100644 --- a/java/CMakeLists.txt +++ b/java/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required (VERSION 3.18) project (HDF5_JAVA C Java) -set (CMAKE_MODULE_PATH "${HDF_RESOURCES_DIR}") +set (CMAKE_MODULE_PATH "${HDF_CONFIG_DIR} ${HDF_RESOURCES_DIR}") find_package (Java) #----------------------------------------------------------------------------- # Include some macros for reusable code #----------------------------------------------------------------------------- -include (${HDF_RESOURCES_DIR}/UseJava.cmake) +include (UseJava) message (VERBOSE "JAVA: JAVA_HOME=$ENV{JAVA_HOME} JAVA_ROOT=$ENV{JAVA_ROOT}") find_package (JNI) diff --git a/java/src/hdf/hdf5lib/CMakeLists.txt b/java/src/hdf/hdf5lib/CMakeLists.txt index b61ece73c29..e1b353e9a17 100644 --- a/java/src/hdf/hdf5lib/CMakeLists.txt +++ b/java/src/hdf/hdf5lib/CMakeLists.txt @@ -119,7 +119,7 @@ file (WRITE ${PROJECT_BINARY_DIR}/Manifest.txt set (CMAKE_JAVA_INCLUDE_PATH "${HDF5_JAVA_LOGGING_JAR}") -add_jar (${HDF5_JAVA_HDF5_LIB_TARGET} OUTPUT_NAME "${HDF5_JAVA_HDF5_LIB_TARGET}-${HDF5_PACKAGE_VERSION}" OUTPUT_DIR ${CMAKE_JAVA_TARGET_OUTPUT_DIR} MANIFEST ${PROJECT_BINARY_DIR}/Manifest.txt ${HDF5_JAVA_HDF_HDF5_CALLBACKS_SOURCES} ${HDF5_JAVA_HDF_HDF5_EXCEPTIONS_SOURCES} ${HDF5_JAVA_HDF_HDF5_STRUCTS_SOURCES} ${HDF5_JAVA_HDF_HDF5_SOURCES}) +add_jar (${HDF5_JAVA_HDF5_LIB_TARGET} OUTPUT_NAME "${HDF5_JAVA_HDF5_LIB_TARGET}-${HDF5_PACKAGE_VERSION}" MANIFEST ${PROJECT_BINARY_DIR}/Manifest.txt ${HDF5_JAVA_HDF_HDF5_CALLBACKS_SOURCES} ${HDF5_JAVA_HDF_HDF5_EXCEPTIONS_SOURCES} ${HDF5_JAVA_HDF_HDF5_STRUCTS_SOURCES} ${HDF5_JAVA_HDF_HDF5_SOURCES}) install_jar (${HDF5_JAVA_HDF5_LIB_TARGET} LIBRARY DESTINATION ${HDF5_INSTALL_JAR_DIR} COMPONENT libraries) #if (NOT WIN32) # install_jni_symlink (${HDF5_JAVA_HDF5_LIB_TARGET} ${HDF5_INSTALL_JAR_DIR} libraries) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index ccc6ad7237c..af147f7ea76 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -47,6 +47,17 @@ New Features Configuration: ------------- + - Reorganized the files in the config/cmake folder into the config folder structure + + The config folder CMake files have been reorganized to make it easier to + maintain and add new features. The following changes have been made: + - The files in the config folder are the macros and templates for the + build process. + - The files in the config/cmake folder are primarily for optional features. + - The files in the config/install folder are for installation support. + - The files in the config/flags folder are for compiler support. + - The remaining folders remain unchanged. + - Added CMake configuration options to override compilers in h5cc: HDF5_H5CC_C_COMPILER for the C compiler diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 70cbdb71aa2..0396a4adb4b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1255,7 +1255,7 @@ install ( if (NOT WIN32) set (_PKG_CONFIG_COMPILER ${HDF5_H5CC_C_COMPILER}) configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5cc @ONLY ) @@ -1268,7 +1268,7 @@ if (NOT WIN32) if (HDF5_ENABLE_PARALLEL AND MPI_C_FOUND) #legacy requires a different name configure_file ( - ${HDF_RESOURCES_DIR}/libh5cc.in + ${HDF_CONFIG_DIR}/libh5cc.in ${HDF5_BINARY_DIR}/CMakeFiles/h5pcc @ONLY )