Move IDLC to its own install component

This allows you to express a dependency on it as `find_package(CycloneDDS REQUIRED COMPONENTS idlc)`
Also added a warning if CycloneDDS was built with IDLC but IDLC is not requested.

Signed-off-by: Dan Rose <dan@digilabs.io>
This commit is contained in:
Dan Rose 2019-10-28 13:47:10 -05:00 committed by eboasson
parent eeeea486c8
commit d12b926ff1
4 changed files with 31 additions and 29 deletions

View file

@ -21,17 +21,10 @@ set(PACKAGING_MODULE_DIR "${PROJECT_SOURCE_DIR}/cmake/Modules/Packaging")
set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}") set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}")
# Generates <Package>Config.cmake. # Generates <Package>Config.cmake.
if(BUILD_IDLC) configure_package_config_file(
configure_package_config_file( "${PACKAGING_MODULE_DIR}/PackageConfig.cmake.in"
"${PACKAGING_MODULE_DIR}/PackageConfig.cmake.in" "${PROJECT_NAME}Config.cmake"
"${PROJECT_NAME}Config.cmake" INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}")
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()
# Generates <Package>Version.cmake. # Generates <Package>Version.cmake.
write_basic_package_version_file( write_basic_package_version_file(

View file

@ -12,4 +12,27 @@
@PACKAGE_INIT@ @PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") 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@")

View file

@ -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")

View file

@ -46,16 +46,16 @@ include(cmake/IdlcGenerate.cmake)
install( install(
FILES "cmake/IdlcGenerate.cmake" FILES "cmake/IdlcGenerate.cmake"
DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc" DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc"
COMPONENT dev) COMPONENT idlc)
install( install(
FILES "${IDLC_SCRIPT_IN}" FILES "${IDLC_SCRIPT_IN}"
DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc" DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc"
COMPONENT dev) COMPONENT idlc)
install( install(
FILES "${IDLC_JAR}" FILES "${IDLC_JAR}"
DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc" DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/idlc"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
COMPONENT dev) COMPONENT idlc)