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 <ch...@mcfarlen.us> 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 <cmcfar...@apple.com> --- 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(