This is an automated email from the ASF dual-hosted git repository.
cmcfarlen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new dbb5efb214 cmake: Install include files (#10650)
dbb5efb214 is described below
commit dbb5efb214118cfbdbd7bcd15bf4cc71390ae9fe
Author: Chris McFarlen <[email protected]>
AuthorDate: Tue Oct 24 13:10:34 2023 -0500
cmake: Install include files (#10650)
* cmake: Install include files
* also include tscpp/api headers.
---------
Co-authored-by: Chris McFarlen <[email protected]>
---
lib/CMakeLists.txt | 2 +-
lib/swoc/CMakeLists.txt | 131 +++++++++++++++++++++++++-----------------
src/api/CMakeLists.txt | 16 +++++-
src/tscpp/api/CMakeLists.txt | 36 +++++++++++-
src/tscpp/util/CMakeLists.txt | 23 +++++++-
5 files changed, 151 insertions(+), 57 deletions(-)
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 287bc6bbcb..7df31a2e6d 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -38,4 +38,4 @@ set(SWOC_INCLUDE_DIR
add_library(catch2::catch2 INTERFACE IMPORTED GLOBAL)
target_include_directories(catch2::catch2 INTERFACE
"${CMAKE_CURRENT_SOURCE_DIR}/catch2")
-install(TARGETS libswoc fastlz)
+install(TARGETS fastlz)
diff --git a/lib/swoc/CMakeLists.txt b/lib/swoc/CMakeLists.txt
index 8ecd08f2f1..38770302fc 100644
--- a/lib/swoc/CMakeLists.txt
+++ b/lib/swoc/CMakeLists.txt
@@ -5,46 +5,51 @@ set(LIBSWOC_VERSION "1.5.5")
set(CMAKE_CXX_STANDARD 17)
cmake_policy(SET CMP0087 NEW)
# override "lib64" to be "lib" unless the user explicitly sets it.
-set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "directory for libraries" FORCE)
+set(CMAKE_INSTALL_LIBDIR
+ "lib"
+ CACHE STRING "directory for libraries" FORCE
+)
include(GNUInstallDirs)
include(CMakeDependentOption)
-cmake_dependent_option(LIBSWOC_INSTALL
- "Enable generation of libswoc install targets" ON
- "NOT CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT" OFF)
+cmake_dependent_option(
+ LIBSWOC_INSTALL "Enable generation of libswoc install targets" ON "NOT
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT"
+ OFF
+)
set(HEADER_FILES
- include/swoc/swoc_version.h
- include/swoc/ArenaWriter.h
- include/swoc/BufferWriter.h
- include/swoc/bwf_base.h
- include/swoc/bwf_ex.h
- include/swoc/bwf_ip.h
- include/swoc/bwf_std.h
- include/swoc/DiscreteRange.h
- include/swoc/Errata.h
- include/swoc/IntrusiveDList.h
- include/swoc/IntrusiveHashMap.h
- include/swoc/swoc_ip.h
- include/swoc/IPEndpoint.h
- include/swoc/IPAddr.h
- include/swoc/IPSrv.h
- include/swoc/IPRange.h
- include/swoc/Lexicon.h
- include/swoc/MemArena.h
- include/swoc/MemSpan.h
- include/swoc/Scalar.h
- include/swoc/TextView.h
- include/swoc/swoc_file.h
- include/swoc/swoc_meta.h
- include/swoc/string_view.h
- include/swoc/Vectray.h
- )
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/ArenaWriter.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/BufferWriter.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/DiscreteRange.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/Errata.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/HashFNV.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/IPAddr.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/IPEndpoint.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/IPRange.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/IPSrv.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/IntrusiveDList.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/IntrusiveHashMap.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/Lexicon.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/MemArena.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/MemSpan.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/RBTree.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/Scalar.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/TextView.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/Vectray.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/bwf_base.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/bwf_ex.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/bwf_fwd.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/bwf_ip.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/bwf_std.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/string_view_util.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/swoc_file.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/swoc_ip.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/swoc_meta.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/swoc/swoc_version.h
+)
# These are external but required.
-set(EXTERNAL_HEADER_FILES
- include/swoc/ext/HashFNV.h
-)
+set(EXTERNAL_HEADER_FILES include/swoc/ext/HashFNV.h)
set(CC_FILES
src/bw_format.cc
@@ -57,39 +62,59 @@ set(CC_FILES
src/swoc_file.cc
src/TextView.cc
src/string_view_util.cc
- )
+)
add_library(libswoc SHARED ${CC_FILES})
-set_target_properties(libswoc PROPERTIES OUTPUT_NAME swoc-${LIBSWOC_VERSION})
-if (CMAKE_COMPILER_IS_GNUCXX)
- target_compile_options(libswoc PRIVATE -fPIC -Wall -Wextra -Werror
-Wnon-virtual-dtor -Wpedantic -Wshadow)
+set_target_properties(libswoc PROPERTIES OUTPUT_NAME swoc-${LIBSWOC_VERSION}
PUBLIC_HEADER "${HEADER_FILES}")
+
+if(CMAKE_COMPILER_IS_GNUCXX)
+ target_compile_options(
+ libswoc
+ PRIVATE -fPIC
+ -Wall
+ -Wextra
+ -Werror
+ -Wnon-virtual-dtor
+ -Wpedantic
+ -Wshadow
+ )
endif()
add_library(libswoc-static STATIC ${CC_FILES})
-set_target_properties(libswoc-static PROPERTIES OUTPUT_NAME
swoc-static-${LIBSWOC_VERSION})
-if (CMAKE_COMPILER_IS_GNUCXX)
- target_compile_options(libswoc-static PRIVATE -fPIC -Wall -Wextra -Werror
-Wnon-virtual-dtor -Wpedantic -Wshadow)
+set_target_properties(
+ libswoc-static PROPERTIES OUTPUT_NAME swoc-static-${LIBSWOC_VERSION}
PUBLIC_HEADER "${HEADER_FILES}"
+)
+if(CMAKE_COMPILER_IS_GNUCXX)
+ target_compile_options(
+ libswoc-static
+ PRIVATE -fPIC
+ -Wall
+ -Wextra
+ -Werror
+ -Wnon-virtual-dtor
+ -Wpedantic
+ -Wshadow
+ )
endif()
# Not quite sure how this works, but I think it generates one of two paths
depending on the context.
# That is, the generator functions return non-empty strings only in the
corresponding context.
-target_include_directories(libswoc-static
- PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
- $<INSTALL_INTERFACE:include>
- )
-
-target_include_directories(libswoc
- PUBLIC
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
- $<INSTALL_INTERFACE:include>
- )
+target_include_directories(
+ libswoc-static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
+)
+target_include_directories(
+ libswoc PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
+)
# Alledgedly this makes the targets "importable from the build directory" but
I see no evidence of that.
# AFAICT the file isn't created at all even with this enabled.
#export(TARGETS libswoc FILE libswoc-config.cmake)
-set(CLANG_DIRS )
+set(CLANG_DIRS)
+
+set_target_properties(
+ libswoc-static PROPERTIES CLANG_FORMAT_DIRS
"${PROJECT_SOURCE_DIR}/src;${PROJECT_SOURCE_DIR}/include"
+)
-set_target_properties(libswoc-static PROPERTIES CLANG_FORMAT_DIRS
"${PROJECT_SOURCE_DIR}/src;${PROJECT_SOURCE_DIR}/include")
+install(TARGETS libswoc PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/swoc)
diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt
index 039eeb5f95..c0814e2942 100644
--- a/src/api/CMakeLists.txt
+++ b/src/api/CMakeLists.txt
@@ -19,6 +19,7 @@ add_library(tsapi SHARED InkAPI.cc InkIOCoreAPI.cc)
add_library(ts::tsapi ALIAS tsapi)
target_include_directories(
tsapi
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE # private headers
${CMAKE_SOURCE_DIR}/src/iocore/eventsystem
${CMAKE_SOURCE_DIR}/src/iocore/net
@@ -28,7 +29,20 @@ target_include_directories(
${CMAKE_SOURCE_DIR}/src/iocore/aio
${CMAKE_SOURCE_DIR}/src/proxy/
)
+
+set(TSAPI_PUBLIC_HEADERS
+ ${PROJECT_SOURCE_DIR}/include/ts/ts.h
+ ${PROJECT_SOURCE_DIR}/include/ts/remap.h
+ ${PROJECT_SOURCE_DIR}/include/ts/DbgCtl.h
+ ${PROJECT_SOURCE_DIR}/include/ts/TsException.h
+ ${PROJECT_SOURCE_DIR}/include/ts/parentselectdefs.h
+ ${PROJECT_SOURCE_DIR}/include/ts/parentselectdefs.h
+ ${PROJECT_BINARY_DIR}/include/ts/apidefs.h
+ ${PROJECT_SOURCE_DIR}/include/ts/experimental.h
+)
+
target_link_libraries(tsapi PRIVATE ts::tscore)
+set_target_properties(tsapi PROPERTIES PUBLIC_HEADER "${TSAPI_PUBLIC_HEADERS}")
add_library(
tsapicore STATIC
@@ -54,7 +68,7 @@ set_target_properties(tsapicore PROPERTIES
POSITION_INDEPENDENT_CODE TRUE)
include_directories(${IOCORE_INCLUDE_DIRS} ${PROXY_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/include/mgmt)
-install(TARGETS tsapi)
+install(TARGETS tsapi PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ts)
if(APPLE)
target_link_options(tsapi PRIVATE -undefined dynamic_lookup)
diff --git a/src/tscpp/api/CMakeLists.txt b/src/tscpp/api/CMakeLists.txt
index 8b990f1bb9..e5a9e85ce4 100644
--- a/src/tscpp/api/CMakeLists.txt
+++ b/src/tscpp/api/CMakeLists.txt
@@ -44,8 +44,42 @@ add_library(
)
add_library(ts::tscppapi ALIAS tscppapi)
target_link_libraries(tscppapi PUBLIC libswoc yaml-cpp::yaml-cpp)
-install(TARGETS tscppapi)
if(APPLE)
target_link_options(tscppapi PRIVATE -undefined dynamic_lookup)
endif()
+
+set(TSCPP_API_PUBLIC_HEADERS
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Async.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/AsyncHttpFetch.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/AsyncTimer.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/CaseInsensitiveStringComparator.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Cleanup.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/ClientRequest.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Continuation.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/GlobalPlugin.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/GzipDeflateTransformation.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/GzipInflateTransformation.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Headers.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/HttpMethod.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/HttpStatus.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/HttpVersion.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/InterceptPlugin.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Logger.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Plugin.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/PluginInit.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/RemapPlugin.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Request.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Response.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Stat.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Transaction.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/TransactionPlugin.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/TransformationPlugin.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/Url.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/noncopyable.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/api/utils.h
+)
+set_target_properties(tscppapi PROPERTIES PUBLIC_HEADER
"${TSCPP_API_PUBLIC_HEADERS}")
+
+install(TARGETS tscppapi
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tscpp/api)
diff --git a/src/tscpp/util/CMakeLists.txt b/src/tscpp/util/CMakeLists.txt
index 76db35634b..0911e70d6d 100644
--- a/src/tscpp/util/CMakeLists.txt
+++ b/src/tscpp/util/CMakeLists.txt
@@ -18,7 +18,28 @@
add_library(tscpputil SHARED ts_bwf.cc ts_ip.cc ts_diags.cc YamlCfg.cc
ts_unit_parser.cc)
add_library(ts::tscpputil ALIAS tscpputil)
target_link_libraries(tscpputil PUBLIC libswoc yaml-cpp::yaml-cpp ts::tscore)
-install(TARGETS tscpputil)
+set(TSCPPUTIL_PUBLIC_HEADERS
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/Bravo.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/Convert.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/DenseThreadId.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/Histogram.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/LocalBuffer.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/PostScript.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/Strerror.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/TsSharedMutex.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/YamlCfg.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_bw.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_bw_format.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_diag_levels.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_errata.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_ip.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_meta.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_time_parser.h
+ ${PROJECT_SOURCE_DIR}/include/tscpp/util/ts_unit_parser.h
+)
+set_target_properties(tscpputil PROPERTIES PUBLIC_HEADER
"${TSCPPUTIL_PUBLIC_HEADERS}")
+
+install(TARGETS tscpputil PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/tscpp/util)
if(BUILD_TESTING)
add_executable(