# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # # Copyright 2023 Google LLC # # Licensed under the Apache License v2.0 with LLVM Exceptions (the "License"); # you may not use this file except in compliance with the License. You may # obtain a copy of the License at # # https://llvm.org/LICENSE.txt # # 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. # # Author: Aleksei Vetrov #[=======================================================================[.rst: FindJemalloc --------- Finds the jemalloc library. Imported Targets ^^^^^^^^^^^^^^^^ This module provides the following imported targets, if found: ``Jemalloc::Jemalloc`` The Jemalloc library Result Variables ^^^^^^^^^^^^^^^^ This will define the following variables: ``Jemalloc_FOUND`` True if the system has the Jemalloc library. ``Jemalloc_VERSION`` The version of the Jemalloc library which was found. ``Jemalloc_INCLUDE_DIRS`` Include directories needed to use Jemalloc. ``Jemalloc_LIBRARIES`` Libraries needed to link to Jemalloc. ``Jemalloc_DEFINITIONS`` the compiler switches required for using Jemalloc Cache Variables ^^^^^^^^^^^^^^^ The following cache variables may also be set: ``Jemalloc_INCLUDE_DIR`` The directory containing ``jemalloc.h``. ``Jemalloc_LIBRARY`` The path to the ``libjemalloc.so``. #]=======================================================================] find_package(PkgConfig) pkg_check_modules(PC_Jemalloc QUIET jemalloc) find_library( Jemalloc_LIBRARY NAMES jemalloc HINTS ${PC_Jemalloc_LIBDIR} ${PC_Jemalloc_LIBRARY_DIRS}) # Try the value from user if the library is not found. if(DEFINED Jemalloc_LIBRARIES AND NOT DEFINED Jemalloc_LIBRARY) set(Jemalloc_LIBRARY ${Jemalloc_LIBRARIES}) endif() mark_as_advanced(Jemalloc_LIBRARY) find_path( Jemalloc_INCLUDE_DIR NAMES jemalloc.h PATH_SUFFIXES jemalloc HINTS ${PC_Jemalloc_INCLUDEDIR} ${PC_Jemalloc_INCLUDE_DIRS}) # Try the value from user if the library is not found. if(DEFINED Jemalloc_INCLUDE_DIRS AND NOT DEFINED Jemalloc_INCLUDE_DIR) set(Jemalloc_INCLUDE_DIR ${Jemalloc_INCLUDE_DIRS}) endif() mark_as_advanced(Jemalloc_INCLUDE_DIR) set(Jemalloc_VERSION ${PC_Jemalloc_VERSION}) include(FindPackageHandleStandardArgs) find_package_handle_standard_args( Jemalloc REQUIRED_VARS Jemalloc_LIBRARY Jemalloc_INCLUDE_DIR VERSION_VAR Jemalloc_VERSION) if(Jemalloc_FOUND) set(Jemalloc_LIBRARIES ${Jemalloc_LIBRARY}) set(Jemalloc_INCLUDE_DIRS ${Jemalloc_INCLUDE_DIR}) set(Jemalloc_DEFINITIONS ${PC_Jemalloc_CFLAGS_OTHER}) endif() if(Jemalloc_FOUND AND NOT TARGET Jemalloc::Jemalloc) add_library(Jemalloc::Jemalloc UNKNOWN IMPORTED) set_target_properties( Jemalloc::Jemalloc PROPERTIES IMPORTED_LOCATION "${Jemalloc_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${PC_Jemalloc_CFLAGS_OTHER}" INTERFACE_INCLUDE_DIRECTORIES "${Jemalloc_INCLUDE_DIR}") endif()