-
Notifications
You must be signed in to change notification settings - Fork 213
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
126 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
# Copyright 2021-2022, Collabora, Ltd. | ||
# | ||
# SPDX-License-Identifier: BSL-1.0 | ||
# | ||
# Distributed under the Boost Software License, Version 1.0. | ||
# (See accompanying file LICENSE_1_0.txt or copy at | ||
# http://www.boost.org/LICENSE_1_0.txt) | ||
# | ||
# Original Author: | ||
# 2021-2022 Ryan Pavlik <[email protected]> <[email protected]> | ||
|
||
#[[.rst: | ||
FindPercetto | ||
--------------- | ||
Find the Percetto C wrapper around the Perfetto tracing API. | ||
Targets | ||
^^^^^^^ | ||
If successful, the following imported targets are created. | ||
* ``percetto::percetto`` | ||
Cache variables | ||
^^^^^^^^^^^^^^^ | ||
The following cache variable may also be set to assist/control the operation of this module: | ||
``Percetto_ROOT_DIR`` | ||
The root to search for Percetto. | ||
#]] | ||
|
||
set(Percetto_ROOT_DIR | ||
"${Percetto_ROOT_DIR}" | ||
CACHE PATH "Root to search for Percetto") | ||
|
||
include(FeatureSummary) | ||
set_package_properties( | ||
Percetto PROPERTIES | ||
URL "https://github.com/olvaffe/percetto/" | ||
DESCRIPTION "A C wrapper around the C++ Perfetto tracing SDK.") | ||
|
||
include(FindPackageHandleStandardArgs) | ||
|
||
# See if it's being built in a current project. | ||
if(NOT Percetto_FOUND) | ||
if(TARGET percetto::percetto) | ||
# OK, good - this is what we wanted | ||
elseif(TARGET Percetto::percetto) | ||
# we now prefer lowercase | ||
add_library(percetto::percetto INTERFACE IMPORTED) | ||
set_target_properties( | ||
percetto::percetto PROPERTIES INTERFACE_LINK_LIBRARIES | ||
Percetto::percetto) | ||
endif() | ||
|
||
if(TARGET percetto::percetto) | ||
set(Percetto_LIBRARY percetto::percetto) | ||
find_package_handle_standard_args(Percetto | ||
REQUIRED_VARS Percetto_LIBRARY) | ||
return() | ||
endif() | ||
endif() | ||
|
||
# See if we can find something made by android prefab (gradle), or exported by CMake | ||
find_package(Percetto QUIET CONFIG NAMES percetto Percetto) | ||
if(Percetto_FOUND) | ||
find_package_handle_standard_args(Percetto CONFIG_MODE) | ||
if(TARGET percetto::percetto) | ||
# OK, good - this is what we wanted | ||
elseif(TARGET Percetto::percetto) | ||
# we now prefer lowercase | ||
add_library(percetto::percetto INTERFACE IMPORTED) | ||
set_target_properties( | ||
percetto::percetto PROPERTIES INTERFACE_LINK_LIBRARIES | ||
Percetto::percetto) | ||
else() | ||
message(FATAL_ERROR "assumptions failed") | ||
endif() | ||
return() | ||
endif() | ||
|
||
if(NOT ANDROID) | ||
find_package(PkgConfig QUIET) | ||
if(PKG_CONFIG_FOUND) | ||
set(_old_prefix_path "${CMAKE_PREFIX_PATH}") | ||
# So pkg-config uses Percetto_ROOT_DIR too. | ||
if(Percetto_ROOT_DIR) | ||
list(APPEND CMAKE_PREFIX_PATH ${Percetto_ROOT_DIR}) | ||
endif() | ||
pkg_check_modules(PC_percetto QUIET percetto) | ||
# Restore | ||
set(CMAKE_PREFIX_PATH "${_old_prefix_path}") | ||
endif() | ||
endif() | ||
|
||
find_path( | ||
Percetto_INCLUDE_DIR | ||
NAMES percetto.h | ||
PATHS ${Percetto_ROOT_DIR} | ||
HINTS ${PC_percetto_INCLUDE_DIRS} | ||
PATH_SUFFIXES include) | ||
|
||
find_library( | ||
Percetto_LIBRARY | ||
NAMES percetto | ||
PATHS ${Percetto_ROOT_DIR} | ||
HINTS ${PC_percetto_LIBRARY_DIRS} | ||
PATH_SUFFIXES lib) | ||
|
||
find_package_handle_standard_args(Percetto REQUIRED_VARS Percetto_INCLUDE_DIR | ||
Percetto_LIBRARY) | ||
if(Percetto_FOUND) | ||
if(NOT TARGET percetto::percetto) | ||
add_library(percetto::percetto UNKNOWN IMPORTED) | ||
|
||
set_target_properties( | ||
percetto::percetto | ||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${Percetto_INCLUDE_DIR}" | ||
IMPORTED_LINK_INTERFACE_LANGUAGES "C" | ||
IMPORTED_LOCATION ${Percetto_LIBRARY}) | ||
endif() | ||
mark_as_advanced(Percetto_LIBRARY Percetto_INCLUDE_DIR) | ||
endif() | ||
mark_as_advanced(Percetto_ROOT_DIR) |