This is an automated email from the ASF dual-hosted git repository. bneradt 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 bfc12b6ac4 Add support for hwloc library to CMake build (#9811) bfc12b6ac4 is described below commit bfc12b6ac4a56b68a155ff4e3934cc8a80452ac3 Author: JosiahWI <41302989+josia...@users.noreply.github.com> AuthorDate: Fri Jun 9 11:25:41 2023 -0500 Add support for hwloc library to CMake build (#9811) The library will be used automatically if it is found on the system. If the library was found, a status message should be printed with the path to the library. --- CMakeLists.txt | 5 ++++ cmake/Findhwloc.cmake | 49 ++++++++++++++++++++++++++++++++++++ include/tscore/ink_config.h.cmake.in | 1 + src/tscore/CMakeLists.txt | 19 ++++++++++++-- 4 files changed, 72 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0081155656..b316074ebb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ set(DEFAULT_STACK_SIZE 1048576 CACHE STRING "Default stack size (default 1048576 set(TS_MAX_HOST_NAME_LEN 256 CACHE STRING "Max host name length (default 256)") set(TS_USE_SET_RBIO 1 CACHE STRING "Use openssl set_rbio (default 1)") set(TS_USE_DIAGS 1 CACHE STRING "Use diags (default 1)") +option(TS_USE_HWLOC "Use hwloc (default OFF)") set(TS_VERSION_MAJOR 10) set(TS_VERSION_MINOR 0) @@ -87,6 +88,10 @@ CHECK_INCLUDE_FILE(arpa/nameser_compat.h HAVE_ARPA_NAMESER_COMPAT_H) CHECK_INCLUDE_FILE(siginfo.h HAVE_SIGINFO_H) # Find libraries +find_package(hwloc) +if(hwloc_FOUND) + set(TS_USE_HWLOC TRUE) +endif() find_package(PCRE) include(FindOpenSSL) find_package(OpenSSL) diff --git a/cmake/Findhwloc.cmake b/cmake/Findhwloc.cmake new file mode 100644 index 0000000000..7e67dddd47 --- /dev/null +++ b/cmake/Findhwloc.cmake @@ -0,0 +1,49 @@ +####################### +# +# 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. +# +####################### + +# Findhwloc.cmake +# +# This will define the following variables +# +# hwloc_FOUND +# hwloc_LIBRARY +# hwloc_INCLUDE_DIRS +# +# and the following imported targets +# +# hwloc::hwloc +# + +find_library(hwloc_LIBRARY NAMES hwloc) +find_path(hwloc_INCLUDE_DIR NAMES hwloc.h) + +mark_as_advanced(hwloc_FOUND hwloc_LIBRARY hwloc_INCLUDE_DIR) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(hwloc + REQUIRED_VARS hwloc_LIBRARY hwloc_INCLUDE_DIR +) + +if(hwloc_FOUND) + set(hwloc_INCLUDE_DIRS ${hwloc_INCLUDE_DIR}) +endif() + +if(hwloc_FOUND AND NOT TARGET hwloc::hwloc) + add_library(hwloc::hwloc INTERFACE IMPORTED) + target_include_directories(hwloc::hwloc INTERFACE ${hwloc_INCLUDE_DIRS}) + target_link_libraries(hwloc::hwloc INTERFACE ${hwloc_LIBRARY}) +endif() diff --git a/include/tscore/ink_config.h.cmake.in b/include/tscore/ink_config.h.cmake.in index 9f93b0ef04..a4980bf9b5 100644 --- a/include/tscore/ink_config.h.cmake.in +++ b/include/tscore/ink_config.h.cmake.in @@ -105,6 +105,7 @@ const int DEFAULT_STACKSIZE = @DEFAULT_STACK_SIZE@; /* Feature Flags */ #cmakedefine01 TS_USE_EPOLL +#cmakedefine01 TS_USE_HWLOC #cmakedefine01 TS_USE_KQUEUE #cmakedefine01 TS_USE_LINUX_IO_URING #cmakedefine01 TS_USE_LINUX_NATIVE_AIO diff --git a/src/tscore/CMakeLists.txt b/src/tscore/CMakeLists.txt index 0c9a8f1e07..312ed92677 100644 --- a/src/tscore/CMakeLists.txt +++ b/src/tscore/CMakeLists.txt @@ -106,7 +106,17 @@ target_include_directories(tscore PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${YAML_INCLUDE_DIRS} ) -target_link_libraries(tscore ${PCRE_LIBRARIES} ${OPENSSL_LIBRARIES} yaml-cpp::yaml-cpp tscpputil resolv libswoc) +target_link_libraries(tscore + PUBLIC + $<$<BOOL:TS_USE_HWLOC>:hwloc::hwloc> + libswoc + ${OPENSSL_LIBRARIES} + ${PCRE_LIBRARIES} + resolv + tscpputil + PRIVATE + yaml-cpp::yaml-cpp +) add_executable(test_tscore unit_tests/test_AcidPtr.cc @@ -139,7 +149,12 @@ add_executable(test_tscore unit_tests/test_scoped_resource.cc unit_tests/unit_test_main.cc ) -target_link_libraries(test_tscore PRIVATE tscore libswoc) +target_link_libraries(test_tscore + PRIVATE + $<$<BOOL:TS_USE_HWLOC>:hwloc::hwloc> + libswoc + tscore +) target_include_directories(test_tscore PRIVATE ${CMAKE_SOURCE_DIR}/include ${CATCH_INCLUDE_DIR}) add_test(NAME test_tscore COMMAND $<TARGET_FILE:test_tscore>)