blob: 0873cc0b09d82300b3e793576e48e9107c31a3ac [file] [log] [blame]
# 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()