mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 19:38:09 +00:00
154 lines
No EOL
5.5 KiB
CMake
154 lines
No EOL
5.5 KiB
CMake
############################################################################
|
|
# Copyright (c) 2025 Belledonne Communications SARL.
|
|
#
|
|
# This file is part of Linphone.
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
############################################################################
|
|
# This module will set the following variables in your project:
|
|
#
|
|
# Crashpad_FOUND - The crashpad library has been found
|
|
# Crashpad::Crashpad - Imported target to build against
|
|
# CRASHPAD_BIN_DIR - Directory where the crashpad_handler executable is found
|
|
# CRASHPAD_EXECUTABLE_NAME - Crash handler executable
|
|
# CRASHPAD_INCLUDE_DIR - Headers folder of Crashpad.
|
|
|
|
if(TARGET Crashpad)
|
|
get_target_property(CRASHPAD_BIN_DIR Crashpad CRASHPAD_BIN_DIR)
|
|
get_target_property(CRASHPAD_BUILD_DIR Crashpad CRASHPAD_BUILD_DIR)
|
|
get_target_property(CRASHPAD_EXECUTABLE_NAME Crashpad CRASHPAD_EXECUTABLE_NAME)
|
|
get_target_property(CRASHPAD_GEN_DIR Crashpad CRASHPAD_GEN_DIR)
|
|
get_target_property(CRASHPAD_INCLUDE_DIR Crashpad CRASHPAD_INCLUDE_DIR)
|
|
get_target_property(CRASHPAD_LIB_DIR Crashpad CRASHPAD_LIB_DIR)
|
|
get_target_property(CRASHPAD_SOURCE_DIR Crashpad CRASHPAD_SOURCE_DIR)
|
|
endif()
|
|
|
|
if(NOT CRASHPAD_BUILD_DIR)
|
|
set(CRASHPAD_BUILD_DIR ${CMAKE_BINARY_DIR}/external/google/crashpad/out)
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
set(CRASHPAD_BUILD_DIR ${CRASHPAD_BUILD_DIR}/debug)
|
|
else()
|
|
set(CRASHPAD_BUILD_DIR ${CRASHPAD_BUILD_DIR}/release)
|
|
endif()
|
|
endif()
|
|
if(NOT CRASHPAD_SOURCE_DIR)
|
|
set(CRASHPAD_SOURCE_DIR ${CMAKE_SOURCE_DIR}/external/google/crashpad)
|
|
endif()
|
|
|
|
if(NOT CRASHPAD_EXECUTABLE_NAME OR NOT CRASHPAD_BIN_DIR)
|
|
find_program(CRASHPAD_EXECUTABLE
|
|
NAMES crashpad_handler.exe crashpad_handler
|
|
HINTS
|
|
"${CRASHPAD_BUILD_DIR}"
|
|
"${CMAKE_PREFIX_PATH}"
|
|
)
|
|
get_filename_component(CRASHPAD_BIN_DIR ${CRASHPAD_EXECUTABLE} DIRECTORY)
|
|
get_filename_component(CRASHPAD_EXECUTABLE_NAME ${CRASHPAD_EXECUTABLE} NAME)
|
|
endif()
|
|
|
|
|
|
|
|
if(NOT CRASHPAD_INCLUDE_DIR)
|
|
find_path(CRASHPAD_INCLUDE_DIR
|
|
NAMES client/crashpad_client.h
|
|
HINTS
|
|
"${CRASHPAD_SOURCE_DIR}"
|
|
"${CMAKE_PREFIX_PATH}"
|
|
)
|
|
endif()
|
|
|
|
if(NOT CRASHPAD_LIB_DIR)
|
|
find_path(CRASHPAD_LIB_DIR
|
|
NAMES util/libutil.a util/util.lib
|
|
HINTS
|
|
"${CRASHPAD_BIN_DIR}/obj"
|
|
"${CMAKE_PREFIX_PATH}"
|
|
)
|
|
endif()
|
|
|
|
if(NOT CRASHPAD_GEN_DIR)
|
|
find_path(CRASHPAD_GEN_DIR
|
|
NAMES build/chromeos_buildflags.h
|
|
PATH_SUFFIXES gen
|
|
HINTS
|
|
"${CRASHPAD_BIN_DIR}"
|
|
"${CMAKE_PREFIX_PATH}"
|
|
)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
find_path(CRASHPAD_OBJ_DIR
|
|
NAMES mig_output.child_portServer.o
|
|
PATH_SUFFIXES gen/util/mach
|
|
HINTS
|
|
"${CRASHPAD_OBJECT_DIR}"
|
|
"${CRASHPAD_LIB_DIR}"
|
|
"${CMAKE_PREFIX_PATH}"
|
|
)
|
|
set(CRASHPAD_APPLE_VARS CRASHPAD_OBJ_DIR CRASHPAD_GEN_DIR)
|
|
find_library(FWbsm bsm)
|
|
find_library(FWAppKit AppKit)
|
|
find_library(FWIOKit IOKit)
|
|
find_library(FWSecurity Security)
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(Crashpad DEFAULT_MSG
|
|
CRASHPAD_BIN_DIR CRASHPAD_INCLUDE_DIR CRASHPAD_LIB_DIR CRASHPAD_EXECUTABLE_NAME ${CRASHPAD_APPLE_VARS}
|
|
)
|
|
|
|
#[[
|
|
|
|
if(Crashpad_FOUND)
|
|
add_library(Crashpad::Crashpad UNKNOWN IMPORTED)
|
|
target_include_directories(Crashpad::Crashpad INTERFACE
|
|
"${CRASHPAD_INCLUDE_DIR}"
|
|
"${CRASHPAD_INCLUDE_DIR}/third_party/mini_chromium/mini_chromium"
|
|
"${CRASHPAD_GEN_DIR}")
|
|
if(WIN32)
|
|
target_link_libraries(Crashpad::Crashpad INTERFACE
|
|
"${CRASHPAD_LIB_DIR}/third_party/mini_chromium/mini_chromium/base/base.lib"
|
|
"${CRASHPAD_LIB_DIR}/util/util.lib"
|
|
"${CRASHPAD_LIB_DIR}/client/client.lib"
|
|
"${CRASHPAD_LIB_DIR}/client/common.lib"
|
|
advapi32)
|
|
set_target_properties(Crashpad::Crashpad PROPERTIES
|
|
IMPORTED_LOCATION "${CRASHPAD_LIB_DIR}/client/client.lib")
|
|
elseif(APPLE)
|
|
target_link_libraries(Crashpad::Crashpad INTERFACE
|
|
"${CRASHPAD_LIB_DIR}/third_party/mini_chromium/mini_chromium/base/libbase.a"
|
|
"${CRASHPAD_LIB_DIR}/util/libutil.a"
|
|
"${CRASHPAD_LIB_DIR}/client/libclient.a"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.child_portServer.o"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.child_portUser.o"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.excServer.o"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.excUser.o"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.mach_excServer.o"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.mach_excUser.o"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.notifyServer.o"
|
|
"${CRASHPAD_OBJ_DIR}/mig_output.notifyUser.o"
|
|
${FWbsm} ${FWAppKit} ${FWIOKit} ${FWSecurity})
|
|
set_target_properties(Crashpad::Crashpad PROPERTIES
|
|
IMPORTED_LOCATION "${CRASHPAD_LIB_DIR}/client/libclient.a")
|
|
elseif(UNIX)
|
|
target_link_libraries(Crashpad::Crashpad INTERFACE
|
|
"${CRASHPAD_LIB_DIR}/third_party/mini_chromium/mini_chromium/base/libbase.a"
|
|
"${CRASHPAD_LIB_DIR}/util/libutil.a"
|
|
"${CRASHPAD_LIB_DIR}/client/libclient.a")
|
|
set_target_properties(Crashpad::Crashpad PROPERTIES
|
|
IMPORTED_LOCATION "${CRASHPAD_LIB_DIR}/client/libclient.a")
|
|
endif()
|
|
endif()
|
|
]]# |