diff --git a/CMakeLists.txt b/CMakeLists.txt index 1cd4b89b6..877eb404d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,11 +108,8 @@ else() endif() set(Libname "zenohpico") -if(BUILD_SHARED_LIBS) - add_library(${Libname} SHARED) -else() - add_library(${Libname} STATIC) -endif() +add_library(${Libname}) +add_library(zenohpico::lib ALIAS ${Libname}) function(add_definition value) add_definitions(-D${value}) @@ -268,7 +265,10 @@ file(GLOB_RECURSE PublicHeaders "include/zenoh-pico/utils/*.h" "include/zenoh-pico/config.h" ) -target_include_directories(${Libname} PUBLIC ${PROJECT_SOURCE_DIR}/include) +target_include_directories(${Libname} + PUBLIC + $ + $) file(GLOB_RECURSE Sources "src/api/*.c" @@ -334,6 +334,7 @@ message(STATUS "Build tests: ${BUILD_TESTING}") message(STATUS "Build integration: ${BUILD_INTEGRATION}") install(TARGETS ${Libname} + EXPORT zenohpicoTargets LIBRARY DESTINATION lib ARCHIVE DESTINATION lib COMPONENT Library @@ -372,6 +373,12 @@ install( CONFIGURATIONS ${configurations} COMPONENT dev) +# Generate Targets.cmake +install( + EXPORT zenohpicoTargets + NAMESPACE zenohpico:: + DESTINATION "${CMAKE_INSTALL_CMAKEDIR}") + if(UNIX) configure_file("${CMAKE_SOURCE_DIR}/zenohpico.pc.in" "${CMAKE_SOURCE_DIR}/zenohpico.pc" @ONLY) install(FILES "${CMAKE_SOURCE_DIR}/zenohpico.pc" CONFIGURATIONS Release RelWithDebInfo DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/PackageConfig.cmake.in b/PackageConfig.cmake.in index b84b6c3ec..94e4777a4 100644 --- a/PackageConfig.cmake.in +++ b/PackageConfig.cmake.in @@ -1,21 +1,4 @@ -# -# Copyright (c) 2023 ZettaScale Technology. -# -# This program and the accompanying materials are made available under the -# terms of the Eclipse Public License 2.0 which is available at -# http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -# which is available at https://www.apache.org/licenses/LICENSE-2.0. -# -# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -# -# Contributors: -# ZettaScale Zenoh team, -# - -@PACKAGE_INIT@ - -set(ZENOHPICO_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@) -set(CMAKE_SYSTEM_NAME @CMAKE_SYSTEM_NAME@) +include(CMakeFindDependencyMacro) set(ZENOHPICO_FEATURE_UNSTABLE_API @Z_FEATURE_UNSTABLE_API@) set(ZENOHPICO_FEATURE_MULTI_THREAD @Z_FEATURE_MULTI_THREAD@) @@ -26,43 +9,10 @@ set(ZENOHPICO_FEATURE_QUERYABLE @Z_FEATURE_QUERYABLE@) set(ZENOHPICO_FEATURE_RAWETH_TRANSPORT @Z_FEATURE_RAWETH_TRANSPORT@) set(ZENOHPICO_FEATURE_INTEREST @Z_FEATURE_INTEREST@) -if(ZENOHPICO_BUILD_SHARED_LIBS) - if (NOT TARGET __zenohpico_lib) - add_library(__zenohpico_lib SHARED IMPORTED GLOBAL) - add_library(zenohpico::lib ALIAS __zenohpico_lib) - set_target_properties(__zenohpico_lib PROPERTIES IMPORTED_NO_SONAME TRUE) - set_property(TARGET __zenohpico_lib PROPERTY IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/@LIBNAME@") - if(NOT ("@IMPLIB@" STREQUAL "")) - set_property(TARGET __zenohpico_lib PROPERTY IMPORTED_IMPLIB "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/@IMPLIB@") - endif() - target_include_directories(__zenohpico_lib INTERFACE "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@") - endif() -else() - if (NOT TARGET __zenohpico_static) - add_library(__zenohpico_static STATIC IMPORTED GLOBAL) - add_library(zenohpico::lib ALIAS __zenohpico_static) - set_property(TARGET __zenohpico_static PROPERTY IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/@LIBNAME@") - target_include_directories(__zenohpico_static INTERFACE "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@") - endif() +if(@CHECK_THREADS@) + find_dependency(Threads REQUIRED) endif() -if(CMAKE_SYSTEM_NAME MATCHES "Linux") - add_compile_definitions(ZENOH_LINUX) -elseif(POSIX_COMPATIBLE) - add_compile_definitions(ZENOH_LINUX) -elseif(CMAKE_SYSTEM_NAME MATCHES "BSD") - add_compile_definitions(ZENOH_BSD) -elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin") - add_compile_definitions(ZENOH_MACOS) -elseif(CMAKE_SYSTEM_NAME MATCHES "Emscripten") - add_compile_definitions(EMSCRIPTEN) -elseif(CMAKE_SYSTEM_NAME MATCHES "Windows") - add_compile_definitions(ZENOH_WINDOWS) -elseif(CMAKE_SYSTEM_NAME MATCHES "Generic") - if(WITH_ZEPHYR) - add_compile_definitions(ZENOH_ZEPHYR) - elseif(WITH_FREERTOS_PLUS_TCP) - add_compile_definitions(ZENOH_FREERTOS_PLUS_TCP) - endif() -endif() +include("${CMAKE_CURRENT_LIST_DIR}/zenohpicoTargets.cmake") +add_library(zenohpico::lib ALIAS zenohpico::zenohpico) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index ba3dd8139..a0476703f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,7 +4,7 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) project(zenohpico_examples LANGUAGES C) include(../cmake/helpers.cmake) set_default_build_type(Release) - configure_include_project(ZENOHPICO zenohpico zenohpico::static ".." zenohpico "https://github.com/eclipse-zenoh/zenoh-pico" "") + configure_include_project(ZENOHPICO zenohpico zenohpico::lib ".." zenohpico "https://github.com/eclipse-zenoh/zenoh-pico" "") add_custom_target(examples ALL) else() message(STATUS "zenoh-pico examples")