| # 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() |