mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-08-02 23:12:51 +02:00
55 lines
2.1 KiB
CMake
55 lines
2.1 KiB
CMake
# Copyright The OpenTelemetry Authors
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Unlike functions, macros do not introduce a scope. This is an advantage when
|
|
# trying to set global variables, as we do here.
|
|
macro (opentelemetry_set_pkgconfig_paths)
|
|
if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
|
|
set(OPENTELEMETRY_PC_LIBDIR "${CMAKE_INSTALL_LIBDIR}")
|
|
else ()
|
|
set(OPENTELEMETRY_PC_LIBDIR
|
|
"\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
|
|
endif ()
|
|
|
|
if (IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
|
|
set(OPENTELEMETRY_PC_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}")
|
|
else ()
|
|
set(OPENTELEMETRY_PC_INCLUDEDIR
|
|
"\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
|
|
endif ()
|
|
endmacro ()
|
|
|
|
# Create the pkgconfig configuration file (aka *.pc files) and the rules to install it.
|
|
#
|
|
# * library: the short name of the target, such as `api` or `resources`.
|
|
# * name: the displayed name of the library, such as "OpenTelemetry API".
|
|
# * description: the description of the library.
|
|
# * ARGN: the names of any pkgconfig modules the generated module depends on.
|
|
#
|
|
function (opentelemetry_add_pkgconfig library name description)
|
|
opentelemetry_set_pkgconfig_paths()
|
|
set(target "opentelemetry_${library}")
|
|
set(OPENTELEMETRY_PC_NAME "${name}")
|
|
set(OPENTELEMETRY_PC_DESCRIPTION ${description})
|
|
string(JOIN " " OPENTELEMETRY_PC_REQUIRES ${ARGN})
|
|
get_target_property(target_type ${target} TYPE)
|
|
if ("${target_type}" STREQUAL "INTERFACE_LIBRARY")
|
|
# Interface libraries only contain headers. They do not generate lib files
|
|
# to link against with `-l`.
|
|
set(OPENTELEMETRY_PC_LIBS "")
|
|
else ()
|
|
set(OPENTELEMETRY_PC_LIBS "-l${target}")
|
|
endif ()
|
|
get_target_property(target_defs ${target} INTERFACE_COMPILE_DEFINITIONS)
|
|
if (target_defs)
|
|
foreach (def ${target_defs})
|
|
string(APPEND OPENTELEMETRY_PC_CFLAGS " -D${def}")
|
|
endforeach ()
|
|
endif ()
|
|
|
|
# Create and install the pkg-config files.
|
|
configure_file("${PROJECT_SOURCE_DIR}/cmake/templates/config.pc.in" "${target}.pc" @ONLY)
|
|
install(
|
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}.pc"
|
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
|
endfunction()
|