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 a6e2824e14 cmake: use cmake to implement layout setup (#10695) a6e2824e14 is described below commit a6e2824e14621321f95ce94767a96e8ee7ba2d5d Author: Chris McFarlen <ch...@mcfarlen.us> AuthorDate: Mon Oct 30 18:53:57 2023 -0500 cmake: use cmake to implement layout setup (#10695) * cmake: use cmake to implement layout setup * add layout.cmake * add layout.cmake * add layout-default preset --------- Co-authored-by: Chris McFarlen <cmcfar...@apple.com> --- CMakeLists.txt | 6 ++-- CMakePresets.json | 19 ++++++++++ cmake/add_atsplugin.cmake | 2 +- cmake/layout.cmake | 70 ++++++++++++++++++++++++++++++++++++ configs/CMakeLists.txt | 4 +-- include/tscore/ink_config.h.cmake.in | 28 +++++++-------- 6 files changed, 110 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97d2eb19ee..bbced889e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,8 @@ set(CMAKE_CXX_EXTENSIONS OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) +include(layout) + if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_definitions(DEBUG _DEBUG) endif() @@ -694,8 +696,8 @@ add_custom_target( ) # Create an empty directories for ATS runtime -install(DIRECTORY DESTINATION var/log/trafficserver) -install(DIRECTORY DESTINATION var/trafficserver) +install(DIRECTORY DESTINATION ${CMAKE_INSTALL_LOGDIR}) +install(DIRECTORY DESTINATION ${CMAKE_INSTALL_RUNSTATEDIR}) # Display build summary include(CMakePrintHelpers) diff --git a/CMakePresets.json b/CMakePresets.json index 399ee240aa..2474514675 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -17,6 +17,25 @@ "CMAKE_COMPILE_WARNING_AS_ERROR": "ON" } }, + { + "name": "layout-defaults", + "displayName": "Default install layout paths template", + "hidden": true, + "cacheVariables": { + "CMAKE_INSTALL_BINDIR": "bin", + "CMAKE_INSTALL_SBINDIR": "bin", + "CMAKE_INSTALL_LIBDIR": "lib", + "CMAKE_INSTALL_SYSCONFDIR": "etc/trafficserver", + "CMAKE_INSTALL_DATADIR": "share/trafficserver", + "CMAKE_INSTALL_INCLUDEDIR": "include", + "CMAKE_INSTALL_LIBEXECDIR": "libexec/trafficserver", + "CMAKE_INSTALL_RUNSTATEDIR": "var/trafficserver", + "CMAKE_INSTALL_INFODIR": "share/info", + "CMAKE_INSTALL_MANDIR": "share/man", + "CMAKE_INSTALL_LOGDIR": "var/log/trafficserver", + "CMAKE_INSTALL_CACHEDIR": "var/trafficserver" + } + }, { "name": "autest", "inherits": ["default"], diff --git a/cmake/add_atsplugin.cmake b/cmake/add_atsplugin.cmake index 27f5d8c1de..7f6ea485f5 100644 --- a/cmake/add_atsplugin.cmake +++ b/cmake/add_atsplugin.cmake @@ -22,7 +22,7 @@ function(add_atsplugin name) target_link_libraries(${name} PRIVATE ts::tsapi) set_target_properties(${name} PROPERTIES PREFIX "") set_target_properties(${name} PROPERTIES SUFFIX ".so") - install(TARGETS ${name} DESTINATION libexec/trafficserver) + install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}) endfunction() if(APPLE) diff --git a/cmake/layout.cmake b/cmake/layout.cmake new file mode 100644 index 0000000000..8883f1740c --- /dev/null +++ b/cmake/layout.cmake @@ -0,0 +1,70 @@ +####################### +# +# Licensed to the Apache Software Foundation (ASF) under one or more contributor license +# agreements. See the NOTICE file distributed with this work for additional information regarding +# copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. See the License for the specific language governing permissions and limitations under +# the License. +# +####################### + + +# trafficserver default layout: +set(CMAKE_INSTALL_BINDIR + "bin" + CACHE STRING "bindir" +) +set(CMAKE_INSTALL_SBINDIR + "bin" + CACHE STRING "sbindir" +) + +# trafficserver overrides lib64 to lib +set(CMAKE_INSTALL_LIBDIR + "lib" + CACHE STRING "libdir" +) +set(CMAKE_INSTALL_LIBEXECDIR + "libexec/trafficserver" + CACHE STRING "libexecdir" +) +set(CMAKE_INSTALL_SYSCONFDIR + "etc/trafficserver" + CACHE STRING "sysconfdir" +) +set(CMAKE_INSTALL_LOCALSTATEDIR + "var" + CACHE STRING "localstatedir" +) +set(CMAKE_INSTALL_RUNSTATEDIR + "${CMAKE_INSTALL_LOCALSTATEDIR}/trafficserver" + CACHE STRING "runstatedir" +) +set(CMAKE_INSTALL_DATAROOTDIR + "share" + CACHE STRING "datarootdir" +) +set(CMAKE_INSTALL_DATADIR + "${CMAKE_INSTALL_DATAROOTDIR}/trafficserver" + CACHE STRING "datadir" +) +set(CMAKE_INSTALL_DOCDIR + "${CMAKE_INSTALL_DATAROOTDIR}/doc/trafficserver" + CACHE STRING "docdir" +) +set(CMAKE_INSTALL_LOGDIR + "${CMAKE_INSTALL_LOCALSTATEDIR}/log/trafficserver" + CACHE STRING "logdir" +) +set(CMAKE_INSTALL_CACHEDIR + "${CMAKE_INSTALL_LOCALSTATEDIR}/trafficserver" + CACHE STRING "logdir" +) +include(GNUInstallDirs) diff --git a/configs/CMakeLists.txt b/configs/CMakeLists.txt index 3f06c36953..1222e0943e 100644 --- a/configs/CMakeLists.txt +++ b/configs/CMakeLists.txt @@ -19,7 +19,7 @@ install( CODE "set(CONFIG_SOURCE_GLOBS \"${CMAKE_BINARY_DIR}/configs/*.default\" \"${CMAKE_SOURCE_DIR}/configs/*.default\")" ) -install(CODE "set(CONFIG_DEST_PATH \"${CMAKE_INSTALL_PREFIX}/etc/trafficserver\")") +install(CODE "set(CONFIG_DEST_PATH \"${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_SYSCONFDIR}\")") install(SCRIPT ${CMAKE_SOURCE_DIR}/cmake/install_configs.cmake) @@ -27,5 +27,5 @@ file(GLOB BODY_FACTORY_FILES body_factory/default/*) list(FILTER BODY_FACTORY_FILES EXCLUDE REGEX Makefile.*) foreach(BODY_FACTORY_FILE ${BODY_FACTORY_FILES}) - install(FILES ${BODY_FACTORY_FILE} DESTINATION etc/trafficserver/body_factory/default) + install(FILES ${BODY_FACTORY_FILE} DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/body_factory/default) endforeach() diff --git a/include/tscore/ink_config.h.cmake.in b/include/tscore/ink_config.h.cmake.in index 9c44ba14e9..2e99ad4e6b 100644 --- a/include/tscore/ink_config.h.cmake.in +++ b/include/tscore/ink_config.h.cmake.in @@ -146,20 +146,20 @@ #define TS_PKGSYSGROUP "@TS_PKGSYSGROUP@" #define TS_BUILD_PREFIX "@CMAKE_INSTALL_PREFIX@" -#define TS_BUILD_EXEC_PREFIX "" -#define TS_BUILD_BINDIR "bin" -#define TS_BUILD_SBINDIR "bin" -#define TS_BUILD_SYSCONFDIR "etc/trafficserver" -#define TS_BUILD_DATADIR "share/trafficserver" -#define TS_BUILD_INCLUDEDIR "include" -#define TS_BUILD_LIBDIR "lib" -#define TS_BUILD_LIBEXECDIR "libexec/trafficserver" -#define TS_BUILD_LOCALSTATEDIR "var" -#define TS_BUILD_RUNTIMEDIR "var/trafficserver" -#define TS_BUILD_LOGDIR "var/log/trafficserver" -#define TS_BUILD_MANDIR "share/man" -#define TS_BUILD_CACHEDIR "var/trafficserver" -#define TS_BUILD_INFODIR "info" +#define TS_BUILD_EXEC_PREFIX TS_BUILD_PREFIX +#define TS_BUILD_BINDIR "@CMAKE_INSTALL_BINDIR@" +#define TS_BUILD_SBINDIR "@CMAKE_INSTALL_SBINDIR@" +#define TS_BUILD_SYSCONFDIR "@CMAKE_INSTALL_SYSCONFDIR@" +#define TS_BUILD_DATADIR "@CMAKE_INSTALL_DATADIR@" +#define TS_BUILD_INCLUDEDIR "@CMAKE_INSTALL_INCLUDEDIR@" +#define TS_BUILD_LIBDIR "@CMAKE_INSTALL_LIBDIR@" +#define TS_BUILD_LIBEXECDIR "@CMAKE_INSTALL_LIBEXECDIR@" +#define TS_BUILD_LOCALSTATEDIR "@CMAKE_INSTALL_LOCALSTATEDIR@" +#define TS_BUILD_RUNTIMEDIR "@CMAKE_INSTALL_RUNSTATEDIR@" +#define TS_BUILD_LOGDIR "@CMAKE_INSTALL_LOGDIR@" +#define TS_BUILD_MANDIR "@CMAKE_INSTALL_MANDIR@" +#define TS_BUILD_CACHEDIR "@CMAKE_INSTALL_CACHEDIR@" +#define TS_BUILD_INFODIR "@CMAKE_INSTALL_INFODIR@" #define TS_ABS_TOP_SRCDIR "@CMAKE_SOURCE_DIR@"