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 <[email protected]>
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 <[email protected]>
---
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@"