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@"
 

Reply via email to