summaryrefslogtreecommitdiffstats
path: root/src/arrow/cpp/cmake_modules/Findjemalloc.cmake
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/arrow/cpp/cmake_modules/Findjemalloc.cmake
parentInitial commit. (diff)
downloadceph-b26c4052f3542036551aa9dec9caa4226e456195.tar.xz
ceph-b26c4052f3542036551aa9dec9caa4226e456195.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/arrow/cpp/cmake_modules/Findjemalloc.cmake')
-rw-r--r--src/arrow/cpp/cmake_modules/Findjemalloc.cmake94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/arrow/cpp/cmake_modules/Findjemalloc.cmake b/src/arrow/cpp/cmake_modules/Findjemalloc.cmake
new file mode 100644
index 000000000..84bb81fcb
--- /dev/null
+++ b/src/arrow/cpp/cmake_modules/Findjemalloc.cmake
@@ -0,0 +1,94 @@
+#
+# Licensed 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.
+#
+# Tries to find jemalloc headers and libraries.
+#
+# Usage of this module as follows:
+#
+# find_package(jemalloc)
+#
+# Variables used by this module, they can change the default behaviour and need
+# to be set before calling find_package:
+#
+# JEMALLOC_HOME -
+# When set, this path is inspected instead of standard library locations as
+# the root of the jemalloc installation. The environment variable
+# JEMALLOC_HOME overrides this veriable.
+#
+# This module defines
+# JEMALLOC_INCLUDE_DIR, directory containing headers
+# JEMALLOC_SHARED_LIB, path to libjemalloc.so/dylib
+# JEMALLOC_FOUND, whether flatbuffers has been found
+
+if(NOT "${JEMALLOC_HOME}" STREQUAL "")
+ file(TO_CMAKE_PATH "${JEMALLOC_HOME}" _native_path)
+ list(APPEND _jemalloc_roots ${_native_path})
+elseif(JEMALLOC_HOME)
+ list(APPEND _jemalloc_roots ${JEMALLOC_HOME})
+endif()
+
+set(LIBJEMALLOC_NAMES jemalloc libjemalloc.so.1 libjemalloc.so.2 libjemalloc.dylib)
+
+# Try the parameterized roots, if they exist
+if(_jemalloc_roots)
+ find_path(JEMALLOC_INCLUDE_DIR
+ NAMES jemalloc/jemalloc.h
+ PATHS ${_jemalloc_roots}
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES "include")
+ find_library(JEMALLOC_SHARED_LIB
+ NAMES ${LIBJEMALLOC_NAMES}
+ PATHS ${_jemalloc_roots}
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES "lib")
+ find_library(JEMALLOC_STATIC_LIB
+ NAMES jemalloc_pic
+ PATHS ${_jemalloc_roots}
+ NO_DEFAULT_PATH
+ PATH_SUFFIXES "lib")
+else()
+ find_path(JEMALLOC_INCLUDE_DIR NAMES jemalloc/jemalloc.h)
+ message(STATUS ${JEMALLOC_INCLUDE_DIR})
+ find_library(JEMALLOC_SHARED_LIB NAMES ${LIBJEMALLOC_NAMES})
+ message(STATUS ${JEMALLOC_SHARED_LIB})
+ find_library(JEMALLOC_STATIC_LIB NAMES jemalloc_pic)
+ message(STATUS ${JEMALLOC_STATIC_LIB})
+endif()
+
+if(JEMALLOC_INCLUDE_DIR AND JEMALLOC_SHARED_LIB)
+ set(JEMALLOC_FOUND TRUE)
+else()
+ set(JEMALLOC_FOUND FALSE)
+endif()
+
+if(JEMALLOC_FOUND)
+ if(NOT jemalloc_FIND_QUIETLY)
+ message(STATUS "Found the jemalloc library: ${JEMALLOC_LIBRARIES}")
+ endif()
+else()
+ if(NOT jemalloc_FIND_QUIETLY)
+ set(JEMALLOC_ERR_MSG "Could not find the jemalloc library. Looked in ")
+ if(_flatbuffers_roots)
+ set(JEMALLOC_ERR_MSG "${JEMALLOC_ERR_MSG} in ${_jemalloc_roots}.")
+ else()
+ set(JEMALLOC_ERR_MSG "${JEMALLOC_ERR_MSG} system search paths.")
+ endif()
+ if(jemalloc_FIND_REQUIRED)
+ message(FATAL_ERROR "${JEMALLOC_ERR_MSG}")
+ else(jemalloc_FIND_REQUIRED)
+ message(STATUS "${JEMALLOC_ERR_MSG}")
+ endif(jemalloc_FIND_REQUIRED)
+ endif()
+endif()
+
+mark_as_advanced(JEMALLOC_INCLUDE_DIR JEMALLOC_SHARED_LIB)