diff --git a/cmake/Modules/Packaging.cmake b/cmake/Modules/Packaging.cmake index b2d647c..560e8f4 100644 --- a/cmake/Modules/Packaging.cmake +++ b/cmake/Modules/Packaging.cmake @@ -21,17 +21,10 @@ set(PACKAGING_MODULE_DIR "${PROJECT_SOURCE_DIR}/cmake/Modules/Packaging") set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}") # Generates Config.cmake. -if(BUILD_IDLC) - configure_package_config_file( - "${PACKAGING_MODULE_DIR}/PackageConfig.cmake.in" - "${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}") -else() - configure_package_config_file( - "${PACKAGING_MODULE_DIR}/PackageConfigNoIdlc.cmake.in" - "${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}") -endif() +configure_package_config_file( + "${PACKAGING_MODULE_DIR}/PackageConfig.cmake.in" + "${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}") # Generates Version.cmake. write_basic_package_version_file( diff --git a/cmake/Modules/Packaging/PackageConfig.cmake.in b/cmake/Modules/Packaging/PackageConfig.cmake.in index c8d6d78..31d8f9b 100644 --- a/cmake/Modules/Packaging/PackageConfig.cmake.in +++ b/cmake/Modules/Packaging/PackageConfig.cmake.in @@ -12,4 +12,27 @@ @PACKAGE_INIT@ include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") -include("${CMAKE_CURRENT_LIST_DIR}/idlc/IdlcGenerate.cmake") +option("@PROJECT_NAME@_IDLC_ALWAYS" "Should we include idlc even if the user didn't request the idlc component?" ON) + +set("@PROJECT_NAME@_idlc_FOUND" FALSE) +if ("idlc" IN_LIST "@PROJECT_NAME@_FIND_COMPONENTS" OR "@PROJECT_NAME@_IDLC_ALWAYS") + include("${CMAKE_CURRENT_LIST_DIR}/idlc/IdlcGenerate.cmake" OPTIONAL RESULT_VARIABLE _IdlcGenerate) + if(NOT _IdlcGenerate STREQUAL "NOTFOUND") + set("@PROJECT_NAME@_idlc_FOUND" TRUE) + endif() +endif() + +if ("${@PROJECT_NAME@_IDLC_ALWAYS}" + AND "${@PROJECT_NAME@_idlc_FOUND}" + AND (NOT "idlc" IN_LIST "@PROJECT_NAME@_FIND_COMPONENTS") +) + message(AUTHOR_WARNING "\ +The IDL Compiler 'idlc' has not been requested but has been built is automatically included. \ +This will change in a future release. \ +If you need the idlc compiler, please add idlc to the COMPONENTS or OPTIONAL_COMPONENTS list in \ +find_package(@PROJECT_NAME@ ...). \ +If you don't need it, set the @PROJECT_NAME@_IDLC_ALWAYS=OFF to suppress this message .\ +") +endif() + +check_required_components("@PROJECT_NAME@") diff --git a/cmake/Modules/Packaging/PackageConfigNoIdlc.cmake.in b/cmake/Modules/Packaging/PackageConfigNoIdlc.cmake.in deleted file mode 100644 index 038e6f9..0000000 --- a/cmake/Modules/Packaging/PackageConfigNoIdlc.cmake.in +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright(c) 2006 to 2018 ADLINK Technology Limited and others -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License v. 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License -# v. 1.0 which is available at -# http://www.eclipse.org/org/documents/edl-v10.php. -# -# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause -# -@PACKAGE_INIT@ - -include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") diff --git a/src/idlc/CMakeLists.txt b/src/idlc/CMakeLists.txt index 5616658..ae210c3 100644 --- a/src/idlc/CMakeLists.txt +++ b/src/idlc/CMakeLists.txt @@ -46,16 +46,16 @@ include(cmake/IdlcGenerate.cmake) install( FILES "cmake/IdlcGenerate.cmake" DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc" - COMPONENT dev) + COMPONENT idlc) install( FILES "${IDLC_SCRIPT_IN}" DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc" - COMPONENT dev) + COMPONENT idlc) install( FILES "${IDLC_JAR}" DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - COMPONENT dev) + COMPONENT idlc)