diff --git a/CMakeLists.txt b/CMakeLists.txt index 22decacb4c..f2618efc0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,9 @@ endif() # # It appears that on macOS, all code is position independent and it'll work regardless. option(BUILD_SHARED_LIBS "Build using shared libraries" ON) +if(BUILD_SHARED_LIBS) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +endif() if(NOT BUILD_SHARED_LIBS AND NOT CMAKE_CROSSCOMPILING) message(WARNING "It is probably best to build a static library as-if cross compiling (e.g., use -DCMAKE_CROSSCOMPILING=1 -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DCMAKE_PREFIX_PATH=)") endif() @@ -57,7 +60,8 @@ endif() # small mistake would run into errors. CI builds can be configured differently. option(WERROR "Treat compiler warnings as errors" OFF) -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules") +# Update CMake module path variable with our own for this project +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules") option(BUILD_IDLC "Build IDL preprocessor" ${not_crosscompiling}) option(BUILD_DDSPERF "Build ddsperf tool" ${not_crosscompiling}) diff --git a/cmake/Modules/FindOpenSSL.cmake b/cmake/Modules/FindOpenSSL.cmake deleted file mode 100644 index 1de05bf63e..0000000000 --- a/cmake/Modules/FindOpenSSL.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# -# Copyright(c) 2006 to 2021 ZettaScale Technology 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 -# -if(TARGET CONAN_PKG::openssl) - add_library(OpenSSL::SSL INTERFACE IMPORTED) - target_link_libraries(OpenSSL::SSL INTERFACE CONAN_PKG::openssl) - set(OPENSSL_FOUND TRUE) -else() - # Loop over a list of possible module paths (without the current directory). - get_filename_component(DIR "${CMAKE_CURRENT_LIST_DIR}" ABSOLUTE) - - foreach(MODULE_DIR ${CMAKE_MODULE_PATH} ${CMAKE_ROOT}/Modules) - get_filename_component(MODULE_DIR "${MODULE_DIR}" ABSOLUTE) - if(NOT MODULE_DIR STREQUAL DIR) - if(EXISTS "${MODULE_DIR}/FindOpenSSL.cmake") - set(FIND_PACKAGE_FILE "${MODULE_DIR}/FindOpenSSL.cmake") - break() - endif() - endif() - endforeach() - - if(FIND_PACKAGE_FILE) - include("${FIND_PACKAGE_FILE}") - endif() -endif() - -# OpenSSL DLL on Windows: use of BIO_s_fd and BIO_s_file (directly or indirectly) requires -# the executable to incorporate OpenSSL applink.c. CMake 18 adds support for handling -# this as part of the OpenSSL package, but we can't require such a new CMake version. -if(OPENSSL_FOUND AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/applink.c") - set(CYCLONEDDS_OPENSSL_APPLINK "${OPENSSL_INCLUDE_DIR}/openssl/applink.c") -else() - set(CYCLONEDDS_OPENSSL_APPLINK "") -endif() diff --git a/cmake/Modules/Generate.cmake b/cmake/Modules/Generate.cmake index b1ab72709d..8a038e4b1f 100644 --- a/cmake/Modules/Generate.cmake +++ b/cmake/Modules/Generate.cmake @@ -23,7 +23,7 @@ function(IDLC_GENERATE) message(STATUS "Building internal IDLC backend") set(_idlc_generate_skipreport 1 CACHE INTERNAL "") endif() - set(_idlc_depends CycloneDDS::libidlc) + # set(_idlc_depends CycloneDDS::libidlc) else() if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND NOT ".so" IN_LIST CMAKE_FIND_LIBRARY_SUFFIXES) # When cross-compiling, find_library looks for libraries using naming conventions of the target, @@ -84,10 +84,10 @@ function(IDLC_GENERATE_GENERIC) # By using the internal target when building CycloneDDS itself, prevent using an external idlc # This prevents a problem when an installed cyclone is on your prefix path when building cyclone again set(_idlc_executable idlc) - set(_idlc_depends idlc) + # set(_idlc_depends idlc) else() set(_idlc_executable CycloneDDS::idlc) - set(_idlc_depends CycloneDDS::idlc) + # set(_idlc_depends CycloneDDS::idlc) endif() else() find_program(_idlc_executable "idlc" NO_CMAKE_FIND_ROOT_PATH REQUIRED) diff --git a/compat/CMakeLists.txt b/compat/CMakeLists.txt index 627de182a4..198004d768 100644 --- a/compat/CMakeLists.txt +++ b/compat/CMakeLists.txt @@ -2,9 +2,10 @@ include(CheckIncludeFile) check_include_file(getopt.h HAVE_GETOPT_H) if(WIN32 OR NOT HAVE_GETOPT_H) - add_library(compat OBJECT) - target_include_directories(compat INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") - target_sources(compat PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/getopt.c") + add_library(compat OBJECT "${CMAKE_CURRENT_SOURCE_DIR}/getopt.c" "${CMAKE_CURRENT_SOURCE_DIR}/getopt.h") + target_include_directories(compat PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") else() add_library(compat INTERFACE) endif() + +add_library(${PROJECT_NAME}::compat ALIAS compat) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 54af236fba..48c342580b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -68,28 +68,46 @@ endif() # currently relying on it. set(ENABLE_SSL "AUTO" CACHE STRING "Enable OpenSSL support") set_property(CACHE ENABLE_SSL PROPERTY STRINGS ON OFF AUTO) -if(ENABLE_SSL) - if(NOT ENABLE_SSL STREQUAL "AUTO") - find_package(OpenSSL REQUIRED) +if(ENABLE_SSL AND NOT TARGET OpenSSL::SSL) # Search for OpenSSL only if is not already a target + + if(TARGET CONAN_PKG::openssl) + add_library(OpenSSL::SSL INTERFACE IMPORTED) + target_link_libraries(OpenSSL::SSL INTERFACE CONAN_PKG::openssl) + set(OPENSSL_FOUND ON) # Manually set it else() - find_package(OpenSSL QUIET) - if(OPENSSL_FOUND) - message(STATUS "Building with OpenSSL support") - set(ENABLE_SSL "ON") + if(NOT BUILD_SHARED_LIBS) + set(OPENSSL_USE_STATIC_LIBS ON) # Require OpenSSL static if is installed on the system + endif() + + include(FindOpenSSL) # Use CMake official module + if(NOT ENABLE_SSL STREQUAL "AUTO") + find_package(OpenSSL REQUIRED) else() - message(STATUS "Building without OpenSSL support") - set(ENABLE_SSL "OFF") + find_package(OpenSSL QUIET) endif() endif() + + if(OPENSSL_FOUND) + # OpenSSL DLL on Windows: use of BIO_s_fd and BIO_s_file (directly or indirectly) requires + # the executable to incorporate OpenSSL applink.c. CMake 18 adds support for handling + # this as part of the OpenSSL package, but we can't require such a new CMake version. + if(EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/applink.c") + set(CYCLONEDDS_OPENSSL_APPLINK "${OPENSSL_INCLUDE_DIR}/openssl/applink.c") + endif() + message(STATUS "Building with OpenSSL support") + else() + message(STATUS "Building without OpenSSL support") + endif() + set(ENABLE_SSL "${OPENSSL_FOUND}") endif() set(ENABLE_TCP_TLS "AUTO" CACHE STRING "Enable TCP+TLS support (depends on ENABLE_SSL)") set_property(CACHE ENABLE_TCP_TLS PROPERTY STRINGS ON OFF AUTO) -if(ENABLE_TCP_TLS) +if(ENABLE_TCP_TLS) # ENABLE_TCP_TLS = AUTO | ON if(ENABLE_TCP_TLS STREQUAL "AUTO") set(ENABLE_TCP_TLS "${ENABLE_SSL}") - elseif(ENABLE_TCP_TLS AND NOT ENABLE_SSL) - message(FATAL "ENABLE_TCP_TLS requires ENABLE_SSL") + elseif(NOT ENABLE_SSL) # ENABLE_TCP_TLS=ON and ENABLE_SSL=OFF + message(FATAL_ERROR "ENABLE_TCP_TLS requires ENABLE_SSL") endif() endif() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index d4d23a49f5..832329a2a2 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -23,7 +23,7 @@ if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") target_link_libraries(ddsc PRIVATE dbghelp) endif() -if(ENABLE_TCP_TLS AND OPENSSL_FOUND) +if(ENABLE_TCP_TLS AND ENABLE_SSL) target_link_libraries(ddsc PRIVATE OpenSSL::SSL) if(CMAKE_GENERATOR MATCHES "Visual Studio") set_target_properties(ddsc PROPERTIES LINK_FLAGS "/ignore:4099") @@ -58,13 +58,16 @@ if(ENABLE_SECURITY) $>) endif() -include(cdr/CMakeLists.txt) -include(ddsi/CMakeLists.txt) -include(ddsc/CMakeLists.txt) +add_subdirectory(cdr) +add_subdirectory(ddsi) +add_subdirectory(ddsc) # The not-so-elegant inclusion of all configured plug-ins for static builds. At least it # keeps most of the dirty things in one place. if(NOT BUILD_SHARED_LIBS) + # Full list should be: dds_security_access_control_wrapper; dds_security_authentication_wrapper; + # dds_security_cryptography_wrapper; dds_security_ac; dds_security_auth; + # dds_security_crypto; psmx_cdds; psmx_dummy; psmx_dummy_v0 get_property(plugin_list GLOBAL PROPERTY cdds_plugin_list) if(plugin_list) list(JOIN plugin_list "," plugin_commasep) @@ -77,13 +80,16 @@ if(NOT BUILD_SHARED_LIBS) target_compile_options(ddsc PRIVATE "-DPLUGIN_SYMBOLS_${plugin}=${plugin_symbols_commasep}") endforeach() endif() - if(ENABLE_SSL) - target_link_libraries(ddsc PUBLIC security_openssl) - endif() + if(ENABLE_SSL) + target_link_libraries(ddsc PUBLIC ${PROJECT_NAME}::security_openssl) + endif() endif() add_coverage(ddsc) -target_link_libraries(ddsc PRIVATE "$") +target_link_libraries(ddsc + PUBLIC $<$>:${PROJECT_NAME}::cdr> + PRIVATE $ +) target_compile_definitions( ddsc PUBLIC $>) @@ -92,7 +98,11 @@ target_include_directories( $>) # SOVERSION should increase on incompatible ABI change -set_target_properties(ddsc PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}) +set_target_properties(ddsc PROPERTIES + VERSION ${PROJECT_VERSION} + SOVERSION ${PROJECT_VERSION_MAJOR} + POSITION_INDEPENDENT_CODE ON +) # define target property to indicate if Cyclone DDS is compiled with type library support define_property(TARGET diff --git a/src/core/cdr/CMakeLists.txt b/src/core/cdr/CMakeLists.txt index c79a450463..8d56f3b775 100644 --- a/src/core/cdr/CMakeLists.txt +++ b/src/core/cdr/CMakeLists.txt @@ -12,7 +12,15 @@ if(NOT ${CMAKE_PROJECT_NAME} STREQUAL "CycloneDDS") cmake_minimum_required(VERSION 3.16) - project(cdr VERSION 0.11.0 LANGUAGES C) + include(CheckLanguage) + + # Check if the Compiler in use has C support, otherwise throw error + check_language(C) + if(CMAKE_C_COMPILER) + enable_language(C) # Enables C support + else() + message(FATAL_ERROR "Current compiler does not support C language") + endif() endif() set(srcs_cdr @@ -39,11 +47,13 @@ else() add_library(cdr) add_library(${PROJECT_NAME}::cdr ALIAS cdr) + set_target_properties(cdr PROPERTIES POSITION_INDEPENDENT_CODE ON) + target_sources(cdr PRIVATE ${srcs_cdr} ${hdrs_private_cdr} ${CMAKE_CURRENT_LIST_DIR}/../../ddsrt/src/bswap.c) - target_include_directories(cdr PUBLIC "${CMAKE_CURRENT_LIST_DIR}/include" - "${PROJECT_BINARY_DIR}/include" - "${CMAKE_CURRENT_LIST_DIR}/../../ddsrt/include" - "${CMAKE_CURRENT_LIST_DIR}/../ddsc/include") + target_include_directories(cdr PUBLIC "$" + "$" + "$" + "$") configure_file(${CMAKE_CURRENT_LIST_DIR}/../../ddsrt/include/dds/config.h.in include/dds/config.h) configure_file(${CMAKE_CURRENT_LIST_DIR}/../../ddsrt/include/dds/features.h.in include/dds/features.h) @@ -62,7 +72,7 @@ else() install( DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/include/" - "${PROJECT_BINARY_DIR}/include/" + "${CMAKE_CURRENT_BINARY_DIR}/include/" "${CMAKE_CURRENT_LIST_DIR}/../../ddsrt/include/" "${CMAKE_CURRENT_LIST_DIR}/../ddsc/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" diff --git a/src/core/ddsc/tests/CMakeLists.txt b/src/core/ddsc/tests/CMakeLists.txt index 4f5b4ab873..1d783495ee 100644 --- a/src/core/ddsc/tests/CMakeLists.txt +++ b/src/core/ddsc/tests/CMakeLists.txt @@ -197,7 +197,7 @@ target_link_libraries(cunit_ddsc PRIVATE CdrStreamKeyExt CdrStreamKeyFlags SerdataData - ddsc + ${PROJECT_NAME}::ddsc ) if(ENABLE_TYPELIB) @@ -267,7 +267,7 @@ target_include_directories( "$" "$" "$") -target_link_libraries(oneliner PRIVATE RoundTrip Space ddsc) +target_link_libraries(oneliner PRIVATE RoundTrip Space ${PROJECT_NAME}::ddsc) ############################################################## # PSMX implementation with Cyclone as transport, for testing # @@ -297,17 +297,19 @@ if(BUILD_SHARED_LIBS) add_library(psmx_dummy_v0 SHARED ${psmx_dummy_v0_sources}) else() list(APPEND psmx_includes - "$" - "$" + "$" + "$" + "$" + "$" "$" "$") - add_library(psmx_cdds OBJECT ${psmx_cdds_sources} psmx_cdds_data.c) + add_library(psmx_cdds ${psmx_cdds_sources} psmx_cdds_data.c) # psmx_cdds_data.c causes the cyclic dependency set_property(GLOBAL APPEND PROPERTY cdds_plugin_list psmx_cdds) set_property(GLOBAL PROPERTY psmx_cdds_symbols cdds_create_psmx) - add_library(psmx_dummy OBJECT ${psmx_dummy_sources}) + add_library(psmx_dummy ${psmx_dummy_sources}) set_property(GLOBAL APPEND PROPERTY cdds_plugin_list psmx_dummy) set_property(GLOBAL PROPERTY psmx_dummy_symbols dummy_create_psmx) - add_library(psmx_dummy_v0 OBJECT ${psmx_dummy_v0_sources}) + add_library(psmx_dummy_v0 ${psmx_dummy_v0_sources}) set_property(GLOBAL APPEND PROPERTY cdds_plugin_list psmx_dummy_v0) set_property(GLOBAL PROPERTY psmx_dummy_v0_symbols dummy_v0_create_psmx) endif() @@ -318,9 +320,9 @@ foreach(plugin psmx_cdds psmx_dummy psmx_dummy_v0) target_include_directories(${plugin} PRIVATE ${psmx_includes}) endforeach() if(BUILD_SHARED_LIBS) - target_link_libraries(psmx_cdds PRIVATE ddsc psmx_cdds_data) - target_link_libraries(psmx_dummy PRIVATE ddsc) - target_link_libraries(psmx_dummy_v0 PRIVATE ddsc) + target_link_libraries(psmx_cdds PRIVATE ${PROJECT_NAME}::ddsc psmx_cdds_data) + target_link_libraries(psmx_dummy PRIVATE ${PROJECT_NAME}::ddsc) + target_link_libraries(psmx_dummy_v0 PRIVATE ${PROJECT_NAME}::ddsc) else() install( TARGETS psmx_cdds psmx_dummy psmx_dummy_v0 diff --git a/src/core/ddsi/CMakeLists.txt b/src/core/ddsi/CMakeLists.txt index 39fd663b88..1cac09d39f 100644 --- a/src/core/ddsi/CMakeLists.txt +++ b/src/core/ddsi/CMakeLists.txt @@ -294,6 +294,10 @@ target_sources(ddsc PRIVATE ${srcs_ddsi} ${generated_defconfig_src} ${hdrs_priva add_dependencies(ddsc _confgen) target_include_directories(ddsc PRIVATE "${CMAKE_CURRENT_LIST_DIR}/include") +if(BUILD_TESTING AND DDS_ALLOW_NESTED_DOMAIN) + target_compile_definitions(ddsc PUBLIC DDS_ALLOW_NESTED_DOMAIN) +endif() + install( DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" diff --git a/src/core/xtests/symbol_export/CMakeLists.txt b/src/core/xtests/symbol_export/CMakeLists.txt index bccea7a021..e95bebc04c 100644 --- a/src/core/xtests/symbol_export/CMakeLists.txt +++ b/src/core/xtests/symbol_export/CMakeLists.txt @@ -12,7 +12,9 @@ add_executable(symbol_export_test symbol_export.c) -target_link_libraries(symbol_export_test PRIVATE ddsc) +target_link_libraries(symbol_export_test PRIVATE + ${PROJECT_NAME}::ddsc +) target_include_directories(symbol_export_test PRIVATE "$>" "$" @@ -22,7 +24,7 @@ target_include_directories(symbol_export_test PRIVATE "$") if (ENABLE_SECURITY) - target_link_libraries(symbol_export_test PRIVATE security_api) + target_link_libraries(symbol_export_test PRIVATE ${PROJECT_NAME}::security_api) target_include_directories(symbol_export_test PRIVATE "$>" "$>") diff --git a/src/ddsrt/CMakeLists.txt b/src/ddsrt/CMakeLists.txt index a78ed8a84e..472af08759 100644 --- a/src/ddsrt/CMakeLists.txt +++ b/src/ddsrt/CMakeLists.txt @@ -27,6 +27,8 @@ set(source_dir "${CMAKE_CURRENT_SOURCE_DIR}") set(binary_dir "${CMAKE_CURRENT_BINARY_DIR}") add_library(ddsrt INTERFACE) +add_library(${PROJECT_NAME}::ddsrt ALIAS ddsrt) +target_compile_definitions(ddsrt INTERFACE $<$>:DDS_STATIC_DEFINE>) target_include_directories( ddsrt INTERFACE "$" @@ -280,6 +282,10 @@ else() set(DDSRT_HAVE_DYNLIB TRUE) set(DDSRT_HAVE_FILESYSTEM TRUE) + list(APPEND headers + "${source_dir}/include/dds/ddsrt/filesystem.h" + ) + list(APPEND sources "${source_dir}/src/heap/posix/heap.c") @@ -364,6 +370,11 @@ else() endif() endif() +set(DDSRT_HAVE_DYNLIB ${DDSRT_HAVE_DYNLIB} PARENT_SCOPE) +set(DDSRT_HAVE_FILESYSTEM ${DDSRT_HAVE_FILESYSTEM} PARENT_SCOPE) +set(DDSRT_HAVE_NETSTAT ${DDSRT_HAVE_NETSTAT} PARENT_SCOPE) +set(DDSRT_HAVE_RUSAGE ${DDSRT_HAVE_RUSAGE} PARENT_SCOPE) + # Generate configuration file set(DDSRT_WITH_LWIP ${WITH_LWIP}) set(DDSRT_WITH_FREERTOS ${WITH_FREERTOS}) @@ -371,14 +382,15 @@ set(DDSRT_WITH_FREERTOS ${WITH_FREERTOS}) foreach(feature TCP_TLS SECURITY LIFESPAN DEADLINE_MISSED NETWORK_PARTITIONS TYPELIB TYPE_DISCOVERY TOPIC_DISCOVERY QOS_PROVIDER) set(DDS_HAS_${feature} ${ENABLE_${feature}}) + set(DDS_HAS_${feature} ${DDS_HAS_${feature}} PARENT_SCOPE) # Tell to CDR, DDSC and DDSI the settings endforeach() if(BUILD_TESTING) - set(DDS_ALLOW_NESTED_DOMAIN 1) + set(DDS_ALLOW_NESTED_DOMAIN TRUE) endif() if (NOT BUILD_SHARED_LIBS) - set(DDS_IS_STATIC_LIBRARY 1) + set(DDS_IS_STATIC_LIBRARY TRUE) endif() configure_file(include/dds/config.h.in include/dds/config.h) diff --git a/src/ddsrt/include/dds/ddsrt/filesystem.h b/src/ddsrt/include/dds/ddsrt/filesystem.h index 97f5da8f0e..a6dab582e7 100644 --- a/src/ddsrt/include/dds/ddsrt/filesystem.h +++ b/src/ddsrt/include/dds/ddsrt/filesystem.h @@ -121,6 +121,6 @@ DDS_EXPORT const char* ddsrt_file_sep(void); } #endif -#endif // DDRT_HAVE_FILESYSTEM +#endif // DDSRT_HAVE_FILESYSTEM #endif // DDSRT_FILESYSTEM_H diff --git a/src/ddsrt/src/cdtors.c b/src/ddsrt/src/cdtors.c index 471675e0c3..a64976e697 100644 --- a/src/ddsrt/src/cdtors.c +++ b/src/ddsrt/src/cdtors.c @@ -223,4 +223,3 @@ void __attribute__((destructor)) ddsrt_dtor(void) ddsrt_fini(); } #endif /* _WIN32 */ - diff --git a/src/ddsrt/src/dynlib.c b/src/ddsrt/src/dynlib.c index e0f24fd775..d6764f3d1a 100644 --- a/src/ddsrt/src/dynlib.c +++ b/src/ddsrt/src/dynlib.c @@ -80,7 +80,7 @@ dds_return_t ddsrt_dlclose (ddsrt_dynlib_t handle) #if DDSRT_HAVE_DYNLIB return ddsrt_platform_dlclose (handle); #else - return DDS_RETCODE_UNSUPPORTED + return DDS_RETCODE_UNSUPPORTED; #endif } @@ -104,7 +104,7 @@ dds_return_t ddsrt_dlsym (ddsrt_dynlib_t handle, const char *symbol, void **addr #if DDSRT_HAVE_DYNLIB return ddsrt_platform_dlsym (handle, symbol, address); #else - return DDS_RETCODE_UNSUPPORTED + return DDS_RETCODE_UNSUPPORTED; #endif } @@ -113,7 +113,7 @@ dds_return_t ddsrt_dlerror (char *buf, size_t buflen) #if DDSRT_HAVE_DYNLIB return ddsrt_platform_dlerror (buf, buflen); #else - return DDS_RETCODE_UNSUPPORTED + return DDS_RETCODE_UNSUPPORTED; #endif } diff --git a/src/idl/CMakeLists.txt b/src/idl/CMakeLists.txt index ff97949f1c..36c6b2cfbf 100644 --- a/src/idl/CMakeLists.txt +++ b/src/idl/CMakeLists.txt @@ -152,7 +152,9 @@ foreach(source ${templates}) endif() endforeach() -add_library(idl SHARED ${headers} ${sources}) +add_library(idl ${headers} ${sources}) +add_library(${PROJECT_NAME}::idl ALIAS idl) +target_compile_definitions(idl PRIVATE $<$>:DDS_STATIC_DEFINE>) if(MSVC) # ignore warning 5286 and 5287 about enum type conversion @@ -163,11 +165,15 @@ set_target_properties( idl PROPERTIES OUTPUT_NAME "cycloneddsidl" VERSION ${PROJECT_VERSION} - SOVERSION ${PROJECT_VERSION_MAJOR}) + SOVERSION ${PROJECT_VERSION_MAJOR} + POSITION_INDEPENDENT_CODE ON) generate_export_header(idl EXPORT_FILE_NAME include/idl/export.h) -target_link_libraries(idl PUBLIC ddsc) +target_link_libraries(idl + PUBLIC + ${PROJECT_NAME}::ddsc +) target_include_directories( idl @@ -194,7 +200,7 @@ install( install( TARGETS idl - EXPORT "${CMAKE_PROJECT_NAME}" + EXPORT "${PROJECT_NAME}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib) diff --git a/src/idl/src/string.c b/src/idl/src/string.c index b194b1084e..fc816ef402 100644 --- a/src/idl/src/string.c +++ b/src/idl/src/string.c @@ -422,6 +422,8 @@ void WINAPI idl_cdtor(PVOID handle, DWORD reason, PVOID reserved) _Pragma("GCC diagnostic pop") #endif +#ifndef DDS_STATIC_DEFINE /* DDS built static */ + #if defined __MINGW32__ PIMAGE_TLS_CALLBACK __crt_xl_tls_callback__ __attribute__ ((section(".CRT$XLZ"))) = idl_cdtor; #elif defined _WIN64 @@ -438,6 +440,8 @@ _Pragma("GCC diagnostic pop") #pragma data_seg() #endif /* _WIN32 */ +#endif /* DDS_STATIC_DEFINE */ + static locale_t posix_locale(void) { return TlsGetValue(locale); diff --git a/src/idl/tests/CMakeLists.txt b/src/idl/tests/CMakeLists.txt index bc2b9274dd..ecdc20264f 100644 --- a/src/idl/tests/CMakeLists.txt +++ b/src/idl/tests/CMakeLists.txt @@ -25,4 +25,4 @@ add_cunit_executable(cunit_idl module.c forward.c) -target_link_libraries(cunit_idl PRIVATE idl) +target_link_libraries(cunit_idl PRIVATE ${PROJECT_NAME}::idl) diff --git a/src/psmx_iox/CMakeLists.txt b/src/psmx_iox/CMakeLists.txt index b94500be20..979fbca516 100644 --- a/src/psmx_iox/CMakeLists.txt +++ b/src/psmx_iox/CMakeLists.txt @@ -40,7 +40,7 @@ if(ENABLE_ICEORYX2) target_link_libraries(psmx_iox2 PRIVATE iceoryx2-c::static-lib) if(BUILD_SHARED_LIBS) - target_link_libraries(psmx_iox2 PRIVATE ddsc) + target_link_libraries(psmx_iox2 PRIVATE ${PROJECT_NAME}::ddsc) endif() if(MSVC) @@ -83,7 +83,7 @@ if(ENABLE_ICEORYX) target_link_libraries(psmx_iox PRIVATE iceoryx_hoofs::iceoryx_hoofs iceoryx_posh::iceoryx_posh) if(BUILD_SHARED_LIBS) - target_link_libraries(psmx_iox PRIVATE ddsc) + target_link_libraries(psmx_iox PRIVATE ${PROJECT_NAME}::ddsc) endif() if(MSVC) diff --git a/src/security/api/CMakeLists.txt b/src/security/api/CMakeLists.txt index 419f553673..20e7a3f15c 100644 --- a/src/security/api/CMakeLists.txt +++ b/src/security/api/CMakeLists.txt @@ -21,6 +21,7 @@ set(headers prepend(headers "${CMAKE_CURRENT_LIST_DIR}/include/dds/security" ${headers}) add_library(security_api INTERFACE) +add_library(${PROJECT_NAME}::security_api ALIAS security_api) target_sources(security_api INTERFACE ${headers}) target_include_directories( diff --git a/src/security/builtin_plugins/access_control/CMakeLists.txt b/src/security/builtin_plugins/access_control/CMakeLists.txt index cb56447e51..6d6a4ee03d 100644 --- a/src/security/builtin_plugins/access_control/CMakeLists.txt +++ b/src/security/builtin_plugins/access_control/CMakeLists.txt @@ -23,13 +23,12 @@ set(private_headers src/access_control.h ../include/ac_tokens.h) -if(BUILD_SHARED_LIBS) - add_library(dds_security_ac SHARED ${sources} ${private_headers}) -else() - add_library(dds_security_ac OBJECT ${sources} ${private_headers}) +add_library(dds_security_ac ${sources} ${private_headers}) +if(NOT BUILD_SHARED_LIBS) set_property(GLOBAL APPEND PROPERTY cdds_plugin_list dds_security_ac) set_property(GLOBAL PROPERTY dds_security_ac_symbols init_access_control finalize_access_control) endif() +add_library(${PROJECT_NAME}::dds_security_ac ALIAS dds_security_ac) generate_export_header( dds_security_ac @@ -37,11 +36,10 @@ generate_export_header( EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/include/dds/security/export.h" ) -target_link_libraries(dds_security_ac PRIVATE security_openssl) +target_link_libraries(dds_security_ac PRIVATE ${PROJECT_NAME}::security_openssl) if(BUILD_SHARED_LIBS) - target_link_libraries(dds_security_ac PUBLIC ddsc) + target_link_libraries(dds_security_ac PUBLIC ${PROJECT_NAME}::ddsc) endif() -target_link_libraries(dds_security_ac PUBLIC OpenSSL::SSL) if(CMAKE_GENERATOR MATCHES "Visual Studio") set_target_properties(dds_security_ac PROPERTIES LINK_FLAGS "/ignore:4099") endif() diff --git a/src/security/builtin_plugins/authentication/CMakeLists.txt b/src/security/builtin_plugins/authentication/CMakeLists.txt index ff3c868121..f9ab289a6a 100644 --- a/src/security/builtin_plugins/authentication/CMakeLists.txt +++ b/src/security/builtin_plugins/authentication/CMakeLists.txt @@ -24,7 +24,8 @@ set(private_headers if(BUILD_SHARED_LIBS) add_library(dds_security_auth SHARED ${sources} ${private_headers}) else() - add_library(dds_security_auth OBJECT ${sources} ${private_headers}) + add_library(dds_security_auth ${sources} ${private_headers}) + set_target_properties(dds_security_auth PROPERTIES POSITION_INDEPENDENT_CODE ON) set_property(GLOBAL APPEND PROPERTY cdds_plugin_list dds_security_auth) set_property(GLOBAL PROPERTY dds_security_auth_symbols init_authentication finalize_authentication) if(DEFINED ENV{LIB_FUZZING_ENGINE}) @@ -35,17 +36,18 @@ else() endif() endif() +add_library(${PROJECT_NAME}::dds_security_auth ALIAS dds_security_auth) + generate_export_header( dds_security_auth BASE_NAME SECURITY EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/include/dds/security/export.h" ) -target_link_libraries(dds_security_auth PRIVATE security_openssl) +target_link_libraries(dds_security_auth PRIVATE ${PROJECT_NAME}::security_openssl) if(BUILD_SHARED_LIBS) - target_link_libraries(dds_security_auth PUBLIC ddsc) + target_link_libraries(dds_security_auth PUBLIC ${PROJECT_NAME}::ddsc) endif() -target_link_libraries(dds_security_auth PUBLIC OpenSSL::SSL) if(CMAKE_GENERATOR MATCHES "Visual Studio") set_target_properties(dds_security_auth PROPERTIES LINK_FLAGS "/ignore:4099") endif() diff --git a/src/security/builtin_plugins/cryptographic/CMakeLists.txt b/src/security/builtin_plugins/cryptographic/CMakeLists.txt index ab2067d743..2c95f04419 100644 --- a/src/security/builtin_plugins/cryptographic/CMakeLists.txt +++ b/src/security/builtin_plugins/cryptographic/CMakeLists.txt @@ -32,22 +32,24 @@ set(private_headers if(BUILD_SHARED_LIBS) add_library(dds_security_crypto SHARED ${sources} ${private_headers}) else() - add_library(dds_security_crypto OBJECT ${sources} ${private_headers}) + add_library(dds_security_crypto ${sources} ${private_headers}) + set_target_properties(dds_security_crypto PROPERTIES POSITION_INDEPENDENT_CODE ON) set_property(GLOBAL APPEND PROPERTY cdds_plugin_list dds_security_crypto) set_property(GLOBAL PROPERTY dds_security_crypto_symbols init_crypto finalize_crypto) endif() +add_library(${PROJECT_NAME}::dds_security_crypto ALIAS dds_security_crypto) + generate_export_header( dds_security_crypto BASE_NAME SECURITY EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/include/dds/security/export.h" ) -target_link_libraries(dds_security_crypto PRIVATE security_openssl) +target_link_libraries(dds_security_crypto PRIVATE ${PROJECT_NAME}::security_openssl) if(BUILD_SHARED_LIBS) - target_link_libraries(dds_security_crypto PUBLIC ddsc) + target_link_libraries(dds_security_crypto PUBLIC ${PROJECT_NAME}::ddsc) endif() -target_link_libraries(dds_security_crypto PUBLIC OpenSSL::SSL) if(CMAKE_GENERATOR MATCHES "Visual Studio") set_target_properties(dds_security_crypto PROPERTIES LINK_FLAGS "/ignore:4099") endif() diff --git a/src/security/builtin_plugins/tests/CMakeLists.txt b/src/security/builtin_plugins/tests/CMakeLists.txt index 0d4f8096e0..6617ca6f77 100644 --- a/src/security/builtin_plugins/tests/CMakeLists.txt +++ b/src/security/builtin_plugins/tests/CMakeLists.txt @@ -84,9 +84,11 @@ target_include_directories( "$" "$" ) -target_link_libraries(cunit_security_plugins PRIVATE ddsc security_api dds_security_ac dds_security_crypto) -target_link_libraries(cunit_security_plugins PRIVATE security_openssl) -target_link_libraries(cunit_security_plugins PRIVATE OpenSSL::SSL) +target_link_libraries(cunit_security_plugins PRIVATE ${PROJECT_NAME}::ddsc + ${PROJECT_NAME}::security_api + ${PROJECT_NAME}::dds_security_ac + ${PROJECT_NAME}::dds_security_crypto + ${PROJECT_NAME}::security_openssl) if(CMAKE_GENERATOR MATCHES "Visual Studio") set_target_properties(cunit_security_plugins PROPERTIES LINK_FLAGS "/ignore:4099") endif() diff --git a/src/security/core/tests/CMakeLists.txt b/src/security/core/tests/CMakeLists.txt index 69b43b3548..671196d3cf 100644 --- a/src/security/core/tests/CMakeLists.txt +++ b/src/security/core/tests/CMakeLists.txt @@ -20,6 +20,7 @@ function(add_wrapper libname linklibs) "${CMAKE_CURRENT_LIST_DIR}/common/${libname}_wrapper.c" "${CMAKE_CURRENT_LIST_DIR}/common/plugin_wrapper_msg_q.c") add_library("dds_security_${libname}_wrapper") + add_library(${PROJECT_NAME}::dds_security_${libname}_wrapper ALIAS dds_security_${libname}_wrapper) if(NOT BUILD_SHARED_LIBS) set_property(GLOBAL APPEND PROPERTY cdds_plugin_list dds_security_${libname}_wrapper) set_property(GLOBAL PROPERTY dds_security_${libname}_wrapper_symbols @@ -79,7 +80,7 @@ function(add_wrapper libname linklibs) target_link_libraries("dds_security_${libname}_wrapper" PRIVATE CycloneDDS::ucunit) target_include_directories("dds_security_${libname}_wrapper" PRIVATE "${CUNIT_DIR}/include") if(BUILD_SHARED_LIBS) - target_link_libraries("dds_security_${libname}_wrapper" PUBLIC ddsc ${linklibs}) + target_link_libraries("dds_security_${libname}_wrapper" PUBLIC ${PROJECT_NAME}::ddsc ${linklibs}) endif() target_sources("dds_security_${libname}_wrapper" PRIVATE ${srcs_wrapper}) @@ -102,9 +103,9 @@ set(security_core_test_sources ) if(ENABLE_SSL AND OPENSSL_FOUND) - add_wrapper(access_control dds_security_ac) - add_wrapper(authentication dds_security_auth) - add_wrapper(cryptography dds_security_crypto) + add_wrapper(access_control ${PROJECT_NAME}::dds_security_ac) + add_wrapper(authentication ${PROJECT_NAME}::dds_security_auth) + add_wrapper(cryptography ${PROJECT_NAME}::dds_security_crypto) FIND_PROGRAM(PKCS11_TOOL_CMD pkcs11-tool) FIND_PROGRAM(SOFTHSM_UTIL_CMD softhsm2-util) @@ -164,16 +165,26 @@ set(common_etc_dir "${CMAKE_CURRENT_SOURCE_DIR}/common/etc") set(plugin_wrapper_lib_dir "${CMAKE_CURRENT_BINARY_DIR}") configure_file("common/config_env.h.in" "common/config_env.h") -target_link_libraries(cunit_security_core PRIVATE ddsc security_api SecurityCoreTests) +target_link_libraries(cunit_security_core PRIVATE + ${PROJECT_NAME}::ddsc + ${PROJECT_NAME}::security_api + SecurityCoreTests +) if(ENABLE_SSL AND OPENSSL_FOUND) - target_link_libraries(cunit_security_core PRIVATE dds_security_auth dds_security_ac dds_security_crypto dds_security_access_control_wrapper dds_security_authentication_wrapper dds_security_cryptography_wrapper) - target_link_libraries(cunit_security_core PRIVATE OpenSSL::SSL) - target_link_libraries(cunit_security_core PRIVATE security_openssl) -endif() -target_include_directories(cunit_security_core PRIVATE "${CMAKE_CURRENT_BINARY_DIR}") + target_link_libraries(cunit_security_core PRIVATE + ${PROJECT_NAME}::dds_security_auth + ${PROJECT_NAME}::dds_security_ac + ${PROJECT_NAME}::dds_security_crypto + ${PROJECT_NAME}::dds_security_access_control_wrapper + ${PROJECT_NAME}::dds_security_authentication_wrapper + ${PROJECT_NAME}::dds_security_cryptography_wrapper + ) -if(NOT BUILD_SHARED_LIBS) install(TARGETS dds_security_authentication_wrapper EXPORT "${PROJECT_NAME}") install(TARGETS dds_security_cryptography_wrapper EXPORT "${PROJECT_NAME}") install(TARGETS dds_security_access_control_wrapper EXPORT "${PROJECT_NAME}") + + target_link_libraries(cunit_security_core PRIVATE OpenSSL::SSL) + target_link_libraries(cunit_security_core PRIVATE ${PROJECT_NAME}::security_openssl) endif() +target_include_directories(cunit_security_core PRIVATE "${CMAKE_CURRENT_BINARY_DIR}") diff --git a/src/security/openssl/CMakeLists.txt b/src/security/openssl/CMakeLists.txt index 4969b903fb..5604dd2778 100644 --- a/src/security/openssl/CMakeLists.txt +++ b/src/security/openssl/CMakeLists.txt @@ -31,8 +31,9 @@ if(BUILD_SHARED_LIBS) target_include_directories( security_openssl INTERFACE "$") +target_link_libraries(security_openssl INTERFACE OpenSSL::SSL) else() - add_library(security_openssl OBJECT) + add_library(security_openssl) target_sources(security_openssl PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/openssl_support.c" "${CMAKE_CURRENT_SOURCE_DIR}/include/dds/security/openssl_support.h") @@ -46,7 +47,7 @@ else() "$" "$" "$" - "$") + "$") target_link_libraries(security_openssl PUBLIC OpenSSL::SSL) install( TARGETS security_openssl @@ -55,3 +56,5 @@ else() LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib) endif() + +add_library(${PROJECT_NAME}::security_openssl ALIAS security_openssl) diff --git a/src/tools/_confgen/CMakeLists.txt b/src/tools/_confgen/CMakeLists.txt index 46b64a4ab8..85897d1085 100644 --- a/src/tools/_confgen/CMakeLists.txt +++ b/src/tools/_confgen/CMakeLists.txt @@ -50,7 +50,7 @@ if (NOT ${_confgen_hash_correct}) endif() endforeach() - target_link_libraries(_confgen-exe PRIVATE ddsrt-internal compat) + target_link_libraries(_confgen-exe PRIVATE ddsrt-internal ${PROJECT_NAME}::compat) target_include_directories(_confgen-exe PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include" diff --git a/src/tools/ddsperf/CMakeLists.txt b/src/tools/ddsperf/CMakeLists.txt index b183f2f4d2..05bbfa0ba0 100644 --- a/src/tools/ddsperf/CMakeLists.txt +++ b/src/tools/ddsperf/CMakeLists.txt @@ -19,7 +19,7 @@ if (BUILD_DDSPERF) cputime.c cputime.h netload.c netload.h async_listener.c async_listener.h) - target_link_libraries(ddsperf ddsperf_types ddsc compat) + target_link_libraries(ddsperf ddsperf_types ${PROJECT_NAME}::ddsc ${PROJECT_NAME}::compat) if(WIN32) target_compile_definitions(ddsperf PRIVATE _CRT_SECURE_NO_WARNINGS) diff --git a/src/tools/idlc/CMakeLists.txt b/src/tools/idlc/CMakeLists.txt index c01683eb22..958037b92d 100644 --- a/src/tools/idlc/CMakeLists.txt +++ b/src/tools/idlc/CMakeLists.txt @@ -27,7 +27,28 @@ if(MSVC) # and 5286 and 5287 about enum type conversion target_compile_options(idlc PRIVATE /wd6255 /wd6263 /wd5286 /wd5287) endif() -target_link_libraries(idlc PRIVATE compat idl idlpp ddsc ${CMAKE_DL_LIBS}) +target_link_libraries(idlc + PRIVATE + ${PROJECT_NAME}::compat + ${PROJECT_NAME}::idl + ${PROJECT_NAME}::idlpp + ${CMAKE_DL_LIBS} +) + +# TODO # Remove OpenSSL IDLC dependency when ENABLE_TCP_TLS +# TODO # Check if FindOpenSSL found the static libraries when BUILD_SHARED_LIBS=OFF +# Copy the OpenSSL shared libraries in the same path of IDLC executable to allow DDSPERF building and avoiding the +# missing Library error when IDLC is called by idlc_generate function +if(ENABLE_TCP_TLS AND WIN32 AND BUILD_SHARED_LIBS) # When ENABLE_TCP_TLS=ON the DDSC depends on SSL and thus IDLC + set(SHARED_LIB_EXTENSION "dll") + + add_custom_command( + TARGET idlc + PRE_LINK + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${OPENSSL_INCLUDE_DIR}/../bin/libssl-3.${SHARED_LIB_EXTENSION} $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${OPENSSL_INCLUDE_DIR}/../bin/libcrypto-3.${SHARED_LIB_EXTENSION} $ + ) +endif() target_include_directories( idlc PRIVATE @@ -40,10 +61,10 @@ target_include_directories( add_executable(${PROJECT_NAME}::idlc ALIAS idlc) -set( - libidlc_hdrs - include/libidlc/libidlc_generator.h - ${CMAKE_CURRENT_BINARY_DIR}/config.h) +set(libidlc_hdrs + include/libidlc/libidlc_generator.h + ${CMAKE_CURRENT_BINARY_DIR}/config.h +) set( libidlc_srcs @@ -54,8 +75,7 @@ set( src/libidlc/libidlc__generator.c src/libidlc/libidlc__types.c) -add_library( - libidlc SHARED ${libidlc_srcs} ${libidlc_hdrs}) +add_library(libidlc SHARED ${libidlc_srcs} ${libidlc_hdrs}) if(MSVC) # ignore warning 5286 and 5287 about enum type conversion @@ -78,21 +98,20 @@ endif() target_include_directories( libidlc - PRIVATE - include PUBLIC + "$" "$" "$" "$" "$") -target_link_libraries(libidlc PRIVATE idl ddsc) +target_link_libraries(libidlc PUBLIC ${PROJECT_NAME}::idl) add_library(${PROJECT_NAME}::libidlc ALIAS libidlc) install( TARGETS libidlc - EXPORT "${CMAKE_PROJECT_NAME}" + EXPORT "${PROJECT_NAME}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib) @@ -108,7 +127,7 @@ install( install( TARGETS idlc - EXPORT "${CMAKE_PROJECT_NAME}" + EXPORT "${PROJECT_NAME}" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT dev) diff --git a/src/tools/idlc/tests/CMakeLists.txt b/src/tools/idlc/tests/CMakeLists.txt index 8c5db9c9c8..0881c06dd4 100644 --- a/src/tools/idlc/tests/CMakeLists.txt +++ b/src/tools/idlc/tests/CMakeLists.txt @@ -37,4 +37,4 @@ if(MSVC) target_compile_options(cunit_idlc PRIVATE /wd6255 /wd6263) endif() -target_link_libraries(cunit_idlc PRIVATE idl libidlc ddsc ${CMAKE_DL_LIBS}) +target_link_libraries(cunit_idlc PRIVATE ${PROJECT_NAME}::idl ${PROJECT_NAME}::libidlc ${PROJECT_NAME}::ddsc ${CMAKE_DL_LIBS}) diff --git a/src/tools/idlpp/CMakeLists.txt b/src/tools/idlpp/CMakeLists.txt index 321139d087..f6ba17b585 100644 --- a/src/tools/idlpp/CMakeLists.txt +++ b/src/tools/idlpp/CMakeLists.txt @@ -10,10 +10,6 @@ # SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause # -if (NOT BUILD_IDLC) - return() -endif() - include(CheckIncludeFile) include(CheckSymbolExists) include(CheckTypeSize) @@ -68,7 +64,7 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "GNU") set(idlpp_gcc_major_version_define "#define GCC_MAJOR_VERSION \"${CMAKE_MATCH_1}\"") set(idlpp_gcc_minor_version_define "#define GCC_MINOR_VERSION \"${CMAKE_MATCH_2}\"") else() - message(FATAL "Cannot parse GCC version number") + message(FATAL_ERROR "Cannot parse GCC version number") endif() elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") set(idlpp_host_compiler "GNUC") @@ -77,7 +73,7 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") set(idlpp_gcc_major_version_define "#define GCC_MAJOR_VERSION \"${CMAKE_MATCH_1}\"") set(idlpp_gcc_minor_version_define "#define GCC_MINOR_VERSION \"${CMAKE_MATCH_2}\"") else() - message(FATAL "Cannot parse Clang version number") + message(FATAL_ERROR "Cannot parse Clang version number") endif() endif() @@ -141,6 +137,7 @@ set(sources # idlpp (mcpp) must not be exported as a library by itself and is therefore # defined as a static library, to be used by idlc only. add_library(idlpp STATIC ${sources} ${headers}) +add_library(${PROJECT_NAME}::idlpp ALIAS idlpp) target_include_directories( idlpp PUBLIC $ $) diff --git a/src/ucunit/CMakeLists.txt b/src/ucunit/CMakeLists.txt index bfe3b18edd..d15e1872e2 100644 --- a/src/ucunit/CMakeLists.txt +++ b/src/ucunit/CMakeLists.txt @@ -11,15 +11,13 @@ # include (GenerateExportHeader) -add_library(ucunit) -add_library(${PROJECT_NAME}::ucunit ALIAS ucunit) - set(srcs_ucunit "${CMAKE_CURRENT_LIST_DIR}/src/ucunit.c") set(hdrs_ucunit "${CMAKE_CURRENT_LIST_DIR}/include/ucunit/ucunit.h") -target_sources(ucunit PRIVATE ${srcs_ucunit} ${hdrs_ucunit}) +add_library(ucunit STATIC ${srcs_ucunit} ${hdrs_ucunit}) +add_library(${PROJECT_NAME}::ucunit ALIAS ucunit) target_include_directories(ucunit PUBLIC @@ -31,20 +29,9 @@ target_include_directories(ucunit INTERFACE $) -generate_export_header( - ucunit BASE_NAME UCUNIT EXPORT_FILE_NAME include/ucunit/export.h) - -add_executable(test_ucunit) -target_sources(test_ucunit PRIVATE tests/test_ucunit.c) +add_executable(test_ucunit ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_ucunit.c) target_link_libraries(test_ucunit CycloneDDS::ucunit) add_test(NAME ucunit COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $/test_ucunit) -if (NOT BUILD_SHARED_LIBS) - install( - TARGETS ucunit - EXPORT "${PROJECT_NAME}" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib) -endif() +install(TARGETS ucunit EXPORT "${PROJECT_NAME}") \ No newline at end of file diff --git a/src/ucunit/include/ucunit/ucunit.h b/src/ucunit/include/ucunit/ucunit.h index 5e0d92cd43..16a446b395 100644 --- a/src/ucunit/include/ucunit/ucunit.h +++ b/src/ucunit/include/ucunit/ucunit.h @@ -18,8 +18,6 @@ #include #include -#include "ucunit/export.h" - #if defined (__cplusplus) extern "C" { #endif @@ -224,35 +222,35 @@ typedef enum CU_ErrorAction { CUEA_ABORT // A failed CU_ASSERT_FATAL cause CU_fatal to abort() } CU_ErrorAction; -UCUNIT_EXPORT CU_ErrorCode CU_initialize_registry (void); - -UCUNIT_EXPORT CU_pSuite CU_add_suite(const char *strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean); +CU_ErrorCode CU_initialize_registry (void); -UCUNIT_EXPORT CU_pSuite CU_get_suite (const char *strName); +CU_pSuite CU_add_suite(const char *strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean); -UCUNIT_EXPORT CU_ErrorCode CU_set_suite_active (CU_pSuite pSuite, bool fNewActive); +CU_pSuite CU_get_suite (const char *strName); -UCUNIT_EXPORT CU_pTest CU_add_test(CU_pSuite pSuite, const char *strName, CU_TestFunc pTestFunc); +CU_ErrorCode CU_set_suite_active (CU_pSuite pSuite, bool fNewActive); -UCUNIT_EXPORT void CU_set_test_active(CU_pTest pTest, bool fNewActive); +CU_pTest CU_add_test(CU_pSuite pSuite, const char *strName, CU_TestFunc pTestFunc); -UCUNIT_EXPORT CU_ErrorCode CU_get_error (void); +void CU_set_test_active(CU_pTest pTest, bool fNewActive); -UCUNIT_EXPORT const char *CU_get_error_msg (void); +CU_ErrorCode CU_get_error (void); -UCUNIT_EXPORT CU_ErrorCode CU_basic_run_tests (void); +const char *CU_get_error_msg (void); -UCUNIT_EXPORT uint32_t CU_get_number_of_failures (void); +CU_ErrorCode CU_basic_run_tests (void); -UCUNIT_EXPORT void CU_cleanup_registry (void); +uint32_t CU_get_number_of_failures (void); -UCUNIT_EXPORT void CU_assertImplementation (bool value, int line, const char *expr, const char *file, const char *something, bool isfatal); +void CU_cleanup_registry (void); -UCUNIT_EXPORT void CU_hexdump (FILE *fp, const unsigned char *msg, const size_t len); +void CU_assertImplementation (bool value, int line, const char *expr, const char *file, const char *something, bool isfatal); -UCUNIT_EXPORT void CU_fatal (void); +void CU_fatal (void); + +void CU_hexdump (FILE *fp, const unsigned char *msg, const size_t len); -UCUNIT_EXPORT void CU_set_error_action (CU_ErrorAction action); +void CU_set_error_action (CU_ErrorAction action); #if defined (__cplusplus) }