mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-06-30 16:43:31 +00:00
cmake: Add Linux component to CMake build framework 3.0
This commit is contained in:
parent
4d6e17c547
commit
e77b12820f
|
@ -5,7 +5,7 @@ if(CMAKE_HOST_SYSTEM_NAME MATCHES "(Darwin)" OR OBS_CMAKE_VERSION VERSION_GREATE
|
||||||
|
|
||||||
project(obs-studio VERSION ${OBS_VERSION_CANONICAL})
|
project(obs-studio VERSION ${OBS_VERSION_CANONICAL})
|
||||||
|
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
if(CMAKE_HOST_SYSTEM_NAME MATCHES "(Windows)" AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/32bit/projects.cmake")
|
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/32bit/projects.cmake")
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
@ -34,6 +34,22 @@ if(CMAKE_HOST_SYSTEM_NAME MATCHES "(Darwin)" OR OBS_CMAKE_VERSION VERSION_GREATE
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_HOST_SYSTEM_NAME MATCHES "(Windows|Darwin)")
|
||||||
|
message(
|
||||||
|
DEPRECATION
|
||||||
|
"\n"
|
||||||
|
"============ LEGACY BUILD SYSTEM IS DEPRECATED ============"
|
||||||
|
"\n"
|
||||||
|
"You are using the legacy build system to build OBS Studio. "
|
||||||
|
"The legacy build system is unsupported and will be removed in the near future."
|
||||||
|
"\n"
|
||||||
|
"To migrate to the new build system, familiarize yourself with CMake presets "
|
||||||
|
"(https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html) and create "
|
||||||
|
"a user preset with your customized build settings, inheriting from one of the default presets."
|
||||||
|
"\n"
|
||||||
|
"============ LEGACY BUILD SYSTEM IS DEPRECATED ============")
|
||||||
|
endif()
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules")
|
||||||
include(VersionConfig)
|
include(VersionConfig)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"version": 5,
|
"version": 3,
|
||||||
"cmakeMinimumRequired": {
|
"cmakeMinimumRequired": {
|
||||||
"major": 3,
|
"major": 3,
|
||||||
"minor": 22,
|
"minor": 22,
|
||||||
|
@ -10,10 +10,10 @@
|
||||||
"name": "environmentVars",
|
"name": "environmentVars",
|
||||||
"hidden": true,
|
"hidden": true,
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"TWITCH_CLIENTID": {"type": "STRING", "value": "$penv{TWITCH_CLIENTID}"},
|
|
||||||
"TWITCH_HASH": {"type": "STRING", "value": "$penv{TWITCH_HASH}"},
|
|
||||||
"RESTREAM_CLIENTID": {"type": "STRING", "value": "$penv{RESTREAM_CLIENTID}"},
|
"RESTREAM_CLIENTID": {"type": "STRING", "value": "$penv{RESTREAM_CLIENTID}"},
|
||||||
"RESTREAM_HASH": {"type": "STRING", "value": "$penv{RESTREAM_HASH}"},
|
"RESTREAM_HASH": {"type": "STRING", "value": "$penv{RESTREAM_HASH}"},
|
||||||
|
"TWITCH_CLIENTID": {"type": "STRING", "value": "$penv{TWITCH_CLIENTID}"},
|
||||||
|
"TWITCH_HASH": {"type": "STRING", "value": "$penv{TWITCH_HASH}"},
|
||||||
"YOUTUBE_CLIENTID": {"type": "STRING", "value": "$penv{YOUTUBE_CLIENTID}"},
|
"YOUTUBE_CLIENTID": {"type": "STRING", "value": "$penv{YOUTUBE_CLIENTID}"},
|
||||||
"YOUTUBE_CLIENTID_HASH": {"type": "STRING", "value": "$penv{YOUTUBE_CLIENTID_HASH}"},
|
"YOUTUBE_CLIENTID_HASH": {"type": "STRING", "value": "$penv{YOUTUBE_CLIENTID_HASH}"},
|
||||||
"YOUTUBE_SECRET": {"type": "STRING", "value": "$penv{YOUTUBE_SECRET}"},
|
"YOUTUBE_SECRET": {"type": "STRING", "value": "$penv{YOUTUBE_SECRET}"},
|
||||||
|
@ -33,16 +33,16 @@
|
||||||
"generator": "Xcode",
|
"generator": "Xcode",
|
||||||
"binaryDir": "${sourceDir}/build_macos",
|
"binaryDir": "${sourceDir}/build_macos",
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"ENABLE_BROWSER": true,
|
|
||||||
"CMAKE_OSX_DEPLOYMENT_TARGET": {"type": "STRING", "value": "11.0"},
|
"CMAKE_OSX_DEPLOYMENT_TARGET": {"type": "STRING", "value": "11.0"},
|
||||||
"OBS_CODESIGN_TEAM": {"type": "STRING", "value": "$penv{CODESIGN_TEAM}"},
|
|
||||||
"OBS_CODESIGN_IDENTITY": {"type": "STRING", "value": "$penv{CODESIGN_IDENT}"},
|
"OBS_CODESIGN_IDENTITY": {"type": "STRING", "value": "$penv{CODESIGN_IDENT}"},
|
||||||
|
"OBS_CODESIGN_TEAM": {"type": "STRING", "value": "$penv{CODESIGN_TEAM}"},
|
||||||
"OBS_PROVISIONING_PROFILE": {"type": "STRING", "value": "$penv{PROVISIONING_PROFILE}"},
|
"OBS_PROVISIONING_PROFILE": {"type": "STRING", "value": "$penv{PROVISIONING_PROFILE}"},
|
||||||
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
|
"VIRTUALCAM_DEVICE_UUID": {"type": "STRING", "value": "7626645E-4425-469E-9D8B-97E0FA59AC75"},
|
||||||
"VIRTUALCAM_SOURCE_UUID": {"type": "STRING", "value": "A8D7B8AA-65AD-4D21-9C42-66480DBFA8E1"},
|
|
||||||
"VIRTUALCAM_SINK_UUID": {"type": "STRING", "value": "A3F16177-7044-4DD8-B900-72E2419F7A9A"},
|
"VIRTUALCAM_SINK_UUID": {"type": "STRING", "value": "A3F16177-7044-4DD8-B900-72E2419F7A9A"},
|
||||||
|
"VIRTUALCAM_SOURCE_UUID": {"type": "STRING", "value": "A8D7B8AA-65AD-4D21-9C42-66480DBFA8E1"},
|
||||||
"SPARKLE_APPCAST_URL": {"type": "STRING", "value": "https://obsproject.com/osx_update/updates_$(ARCHS)_v2.xml"},
|
"SPARKLE_APPCAST_URL": {"type": "STRING", "value": "https://obsproject.com/osx_update/updates_$(ARCHS)_v2.xml"},
|
||||||
"SPARKLE_PUBLIC_KEY": {"type": "STRING", "value": "HQ5/Ba9VHOuEWaM0jtVjZzgHKFJX9YTl+HNVpgNF0iM="}
|
"SPARKLE_PUBLIC_KEY": {"type": "STRING", "value": "HQ5/Ba9VHOuEWaM0jtVjZzgHKFJX9YTl+HNVpgNF0iM="},
|
||||||
|
"ENABLE_BROWSER": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -56,75 +56,35 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "linux-aarch64",
|
"name": "ubuntu",
|
||||||
"displayName": "Linux aarch64",
|
"displayName": "Ubuntu",
|
||||||
"description": "obs-studio for Linux (aarch64)",
|
"description": "obs-studio for Ubuntu",
|
||||||
"inherits": ["environmentVars"],
|
"inherits": ["environmentVars"],
|
||||||
"condition": {
|
"condition": {
|
||||||
"type": "equals",
|
"type": "equals",
|
||||||
"lhs": "${hostSystemName}",
|
"lhs": "${hostSystemName}",
|
||||||
"rhs": "Linux"
|
"rhs": "Linux"
|
||||||
},
|
},
|
||||||
"binaryDir": "${sourceDir}/build_aarch64",
|
"binaryDir": "${sourceDir}/build_ubuntu",
|
||||||
"generator": "Ninja",
|
"generator": "Ninja",
|
||||||
"warnings": {"dev": true, "deprecated": true},
|
"warnings": {"dev": true, "deprecated": true},
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"ENABLE_WAYLAND": true,
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
|
"CMAKE_INSTALL_LIBDIR": "lib/CMAKE_SYSTEM_PROCESSOR-linux-gnu",
|
||||||
|
"OBS_CMAKE_VERSION": {"type": "STRING", "value": "3.0.0"},
|
||||||
|
"ENABLE_AJA": false,
|
||||||
|
"ENABLE_NATIVE_NVENC": false,
|
||||||
"ENABLE_VLC": true,
|
"ENABLE_VLC": true,
|
||||||
"CMAKE_BUILD_TYPE": "Debug"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "linux-ci-aarch64",
|
|
||||||
"inherits": ["linux-aarch64"],
|
|
||||||
"hidden": true,
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "linux-release-aarch64",
|
|
||||||
"displayName": "Linux aarch64 (Release)",
|
|
||||||
"description": "obs-studio for Linux (aarch64) - Release Configuration",
|
|
||||||
"inherits": "linux-aarch64",
|
|
||||||
"cacheVariables": {
|
|
||||||
"ENABLE_RELEASE_BUILD": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "linux-x86_64",
|
|
||||||
"displayName": "Linux x86_64",
|
|
||||||
"description": "obs-studio for Linux (x86_64)",
|
|
||||||
"inherits": ["environmentVars"],
|
|
||||||
"condition": {
|
|
||||||
"type": "equals",
|
|
||||||
"lhs": "${hostSystemName}",
|
|
||||||
"rhs": "Linux"
|
|
||||||
},
|
|
||||||
"binaryDir": "${sourceDir}/build_x86_64",
|
|
||||||
"generator": "Ninja",
|
|
||||||
"warnings": {"dev": true, "deprecated": true},
|
|
||||||
"cacheVariables": {
|
|
||||||
"ENABLE_WAYLAND": true,
|
"ENABLE_WAYLAND": true,
|
||||||
"ENABLE_VLC": true,
|
"ENABLE_WEBRTC": false
|
||||||
"CMAKE_BUILD_TYPE": {"type": "STRING", "value": "Debug"}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "linux-ci-x86_64",
|
"name": "ubuntu-ci",
|
||||||
"inherits": ["linux-x86_64"],
|
"inherits": ["ubuntu"],
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
|
||||||
}
|
"CMAKE_COMPILE_WARNING_AS_ERROR": true
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "linux-release-x86_64",
|
|
||||||
"displayName": "Linux x86_64 (Release)",
|
|
||||||
"description": "obs-studio for Linux (x86_64) - Release Configuration",
|
|
||||||
"inherits": "linux-x86_64",
|
|
||||||
"cacheVariables": {
|
|
||||||
"ENABLE_RELEASE_BUILD": true,
|
|
||||||
"ENABLE_BROWSER": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -142,9 +102,9 @@
|
||||||
"generator": "Visual Studio 17 2022",
|
"generator": "Visual Studio 17 2022",
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"OBS_CMAKE_VERSION": {"type": "STRING", "value": "3.0.0"},
|
"OBS_CMAKE_VERSION": {"type": "STRING", "value": "3.0.0"},
|
||||||
"ENABLE_BROWSER": true,
|
|
||||||
"VIRTUALCAM_GUID": {"type": "STRING", "value": "A3FCE0F5-3493-419F-958A-ABA1250EC20B"},
|
|
||||||
"GPU_PRIORITY_VAL": {"type": "STRING", "value": "$penv{GPU_PRIORITY_VAL}"},
|
"GPU_PRIORITY_VAL": {"type": "STRING", "value": "$penv{GPU_PRIORITY_VAL}"},
|
||||||
|
"VIRTUALCAM_GUID": {"type": "STRING", "value": "A3FCE0F5-3493-419F-958A-ABA1250EC20B"},
|
||||||
|
"ENABLE_BROWSER": true,
|
||||||
"ENABLE_CCACHE": false
|
"ENABLE_CCACHE": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -161,20 +121,6 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"buildPresets": [
|
"buildPresets": [
|
||||||
{
|
|
||||||
"name": "linux-aarch64",
|
|
||||||
"configurePreset": "linux-aarch64",
|
|
||||||
"displayName": "Linux aarch64",
|
|
||||||
"description": "Linux build for aarch64 (aka arm64)",
|
|
||||||
"configuration": "RelWithDebInfo"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "linux-x86_64",
|
|
||||||
"configurePreset": "linux-x86_64",
|
|
||||||
"displayName": "Linux x86_64",
|
|
||||||
"description": "Linux build for x86_64 (aka amd64)",
|
|
||||||
"configuration": "RelWithDebInfo"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "windows-x64",
|
"name": "windows-x64",
|
||||||
"configurePreset": "windows-x64",
|
"configurePreset": "windows-x64",
|
||||||
|
|
|
@ -12,7 +12,7 @@ if(NOT DEFINED OBS_BUILD_NUMBER AND EXISTS "${_BUILD_NUMBER_CACHE}")
|
||||||
file(READ "${_BUILD_NUMBER_CACHE}" OBS_BUILD_NUMBER)
|
file(READ "${_BUILD_NUMBER_CACHE}" OBS_BUILD_NUMBER)
|
||||||
math(EXPR OBS_BUILD_NUMBER "${OBS_BUILD_NUMBER}+1")
|
math(EXPR OBS_BUILD_NUMBER "${OBS_BUILD_NUMBER}+1")
|
||||||
elseif(NOT DEFINED OBS_BUILD_NUMBER)
|
elseif(NOT DEFINED OBS_BUILD_NUMBER)
|
||||||
if($ENV{CI} AND $ENV{GITHUB_RUN_ID})
|
if("$ENV{CI}" AND "$ENV{GITHUB_RUN_ID}")
|
||||||
set(OBS_BUILD_NUMBER "$ENV{GITHUB_RUN_ID}")
|
set(OBS_BUILD_NUMBER "$ENV{GITHUB_RUN_ID}")
|
||||||
else()
|
else()
|
||||||
set(OBS_BUILD_NUMBER "1")
|
set(OBS_BUILD_NUMBER "1")
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
include_guard(GLOBAL)
|
include_guard(GLOBAL)
|
||||||
|
|
||||||
|
option(OBS_COMPILE_DEPRECATION_AS_WARNING "Downgrade deprecation warnings to actual warnings" FALSE)
|
||||||
|
mark_as_advanced(OBS_COMPILE_DEPRECATION_AS_WARNING)
|
||||||
|
|
||||||
# Set C and C++ language standards to C17 and C++17
|
# Set C and C++ language standards to C17 and C++17
|
||||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21)
|
||||||
set(CMAKE_C_STANDARD 17)
|
set(CMAKE_C_STANDARD 17)
|
||||||
|
@ -57,7 +60,8 @@ set(_obs_clang_common_options
|
||||||
-Wno-semicolon-before-method-body
|
-Wno-semicolon-before-method-body
|
||||||
-Wformat-security
|
-Wformat-security
|
||||||
-Wvla
|
-Wvla
|
||||||
-Wno-error=shorten-64-to-32)
|
-Wno-error=shorten-64-to-32
|
||||||
|
$<$<BOOL:${OBS_COMPILE_DEPRECATION_AS_WARNING}>:-Wno-error=deprecated-declarations>)
|
||||||
|
|
||||||
# clang options for C
|
# clang options for C
|
||||||
set(_obs_clang_c_options ${_obs_clang_common_options} -Wno-shadow -Wno-float-conversion)
|
set(_obs_clang_c_options ${_obs_clang_common_options} -Wno-shadow -Wno-float-conversion)
|
||||||
|
|
|
@ -277,8 +277,8 @@ endif()
|
||||||
|
|
||||||
if(EXISTS "${FFmpeg_avutil_INCLUDE_DIR}/libavutil/ffversion.h")
|
if(EXISTS "${FFmpeg_avutil_INCLUDE_DIR}/libavutil/ffversion.h")
|
||||||
file(STRINGS "${FFmpeg_avutil_INCLUDE_DIR}/libavutil/ffversion.h" _version_string
|
file(STRINGS "${FFmpeg_avutil_INCLUDE_DIR}/libavutil/ffversion.h" _version_string
|
||||||
REGEX "^.*FFMPEG_VERSION[ \t]+\"n[0-9a-z\\.-]+\"[ \t]*$")
|
REGEX "^.*FFMPEG_VERSION[ \t]+\"n?[0-9a-z\\.-]+\"[ \t]*$")
|
||||||
string(REGEX REPLACE ".*FFMPEG_VERSION[ \t]+\"n([0-9]+\\.[0-9]).+\".*" "\\1" FFmpeg_VERSION "${_version_string}")
|
string(REGEX REPLACE ".*FFMPEG_VERSION[ \t]+\"n?([0-9]+\\.[0-9]).*\".*" "\\1" FFmpeg_VERSION "${_version_string}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(REMOVE_DUPLICATES FFmpeg_INCLUDE_DIRS)
|
list(REMOVE_DUPLICATES FFmpeg_INCLUDE_DIRS)
|
||||||
|
|
121
cmake/finders/FindGio.cmake
Normal file
121
cmake/finders/FindGio.cmake
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindGio
|
||||||
|
-------
|
||||||
|
|
||||||
|
FindModule for gio and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``gio::gio``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Gio_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Gio_VERSION``
|
||||||
|
Detected version of found gio libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Gio_LIBRARY``
|
||||||
|
Path to the library component of gio.
|
||||||
|
``Gio_INCLUDE_DIR``
|
||||||
|
Directory containing ``gio.h``
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Gio QUIET gio-2.0 gio)
|
||||||
|
pkg_search_module(PC_GioUnix QUIET gio-unix-2.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Gio_INCLUDE_DIR
|
||||||
|
NAMES gio/gio.h
|
||||||
|
HINTS ${PC_Gio_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
PATH_SUFFIXES glib-2.0
|
||||||
|
DOC "gio-2.0 include directory")
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
GioUnix_INCLUDE_DIR
|
||||||
|
NAMES gio/gunixfdmessage.h
|
||||||
|
HINTS ${PC_GioUnix_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
PATH_SUFFIXES gio-unix-2.0
|
||||||
|
DOC "gio-unix-2.0 include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Gio_LIBRARY
|
||||||
|
NAMES libgio-2.0 gio-2.0 gio-unix-2.0
|
||||||
|
HINTS ${PC_Gio_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "gio-2.0 location")
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Glib_INCLUDE_DIR
|
||||||
|
NAMES glibconfig.h
|
||||||
|
HINTS ${PC_Gio_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
PATH_SUFFIXES glib-2.0/include)
|
||||||
|
|
||||||
|
if(PC_Gio_VERSION VERSION_GREATER 0)
|
||||||
|
set(Gio_VERSION ${PC_Gio_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Gio_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find gio version.")
|
||||||
|
endif()
|
||||||
|
set(Gio_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Gio
|
||||||
|
REQUIRED_VARS Gio_LIBRARY Gio_INCLUDE_DIR GioUnix_INCLUDE_DIR Glib_INCLUDE_DIR
|
||||||
|
VERSION_VAR Gio_VERSION REASON_FAILURE_MESSAGE "Ensure that glib is installed on the system.")
|
||||||
|
mark_as_advanced(Gio_INCLUDE_DIR Gio_LIBRARY Glib_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(Gio_FOUND)
|
||||||
|
if(NOT TARGET gio::gio)
|
||||||
|
if(IS_ABSOLUTE "${Gio_LIBRARY}")
|
||||||
|
add_library(gio::gio UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET gio::gio PROPERTY IMPORTED_LOCATION "${Gio_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(gio::gio INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET gio::gio PROPERTY IMPORTED_LIBNAME "${Gio_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
gio::gio
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Gio_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Gio_INCLUDE_DIR};${GioUnix_INCLUDE_DIR};${Glib_INCLUDE_DIR}"
|
||||||
|
VERSION ${Gio_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Gio PROPERTIES
|
||||||
|
URL "https://docs.gtk.org/gio"
|
||||||
|
DESCRIPTION
|
||||||
|
"A library providing useful classes for general purpose I/O, networking, IPC, settings, and other high level application functionality."
|
||||||
|
)
|
104
cmake/finders/FindJack.cmake
Normal file
104
cmake/finders/FindJack.cmake
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindJack
|
||||||
|
--------
|
||||||
|
|
||||||
|
FindModule for Jack and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Jack::Jack``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Jack_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Jack_VERSION``
|
||||||
|
Detected version of found Jack libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Jack_LIBRARY``
|
||||||
|
Path to the library component of Jack.
|
||||||
|
``Jack_INCLUDE_DIR``
|
||||||
|
Directory containing ``jack.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Jack QUIET jack)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Jack_INCLUDE_DIR
|
||||||
|
NAMES jack/jack.h
|
||||||
|
HINTS ${PC_Jack_INCLUDE_DIR}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "Jack include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Jack_LIBRARY
|
||||||
|
NAMES jack
|
||||||
|
HINTS ${PC_Jack_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Jack location")
|
||||||
|
|
||||||
|
if(PC_Jack_VERSION VERSION_GREATER 0)
|
||||||
|
set(Jack_VERSION ${PC_Jack_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Jack_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Jack version.")
|
||||||
|
endif()
|
||||||
|
set(Jack_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Jack
|
||||||
|
REQUIRED_VARS Jack_LIBRARY Jack_INCLUDE_DIR
|
||||||
|
VERSION_VAR Jack_VERSION REASON_FAILURE_MESSAGE "Ensure that Jack is installed on the system.")
|
||||||
|
mark_as_advanced(Jack_INCLUDE_DIR Jack_LIBRARY)
|
||||||
|
|
||||||
|
if(Jack_FOUND)
|
||||||
|
if(NOT TARGET Jack::Jack)
|
||||||
|
if(IS_ABSOLUTE "${Jack_LIBRARY}")
|
||||||
|
add_library(Jack::Jack UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Jack::Jack PROPERTY IMPORTED_LOCATION "${Jack_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Jack::Jack INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Jack::Jack PROPERTY IMPORTED_LIBNAME "${Jack_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Jack::Jack
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Jack_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Jack_INCLUDE_DIR}"
|
||||||
|
VERSION ${Jack_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Jack PROPERTIES
|
||||||
|
URL "https://www.jackaudio.org"
|
||||||
|
DESCRIPTION
|
||||||
|
"JACK Audio Connection Kit (or JACK) is a professional sound server API and pair of daemon implementations to provide real-time, low-latency connections for both audio and MIDI data between applications."
|
||||||
|
)
|
103
cmake/finders/FindLibUUID.cmake
Normal file
103
cmake/finders/FindLibUUID.cmake
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindLibUUID
|
||||||
|
-----------
|
||||||
|
|
||||||
|
FindModule for LibUUID and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``LibUUID::LibUUID``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``LibUUID_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``LibUUID_VERSION``
|
||||||
|
Detected version of found LibUUID libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``LibUUID_LIBRARY``
|
||||||
|
Path to the library component of LibUUID.
|
||||||
|
``LibUUID_INCLUDE_DIR``
|
||||||
|
Directory containing ``LibUUID.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_LibUUID QUIET LibUUID uuid)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
LibUUID_INCLUDE_DIR
|
||||||
|
NAMES uuid/uuid.h
|
||||||
|
HINTS ${PC_LibUUID_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "LibUUID include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
LibUUID_LIBRARY
|
||||||
|
NAMES uuid
|
||||||
|
HINTS ${PC_LibUUID_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "LibUUID location")
|
||||||
|
|
||||||
|
if(PC_LibUUID_VERSION VERSION_GREATER 0)
|
||||||
|
set(LibUUID_VERSION ${PC_LibUUID_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT LibUUID_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find LibUUID version.")
|
||||||
|
endif()
|
||||||
|
set(LibUUID_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
LibUUID
|
||||||
|
REQUIRED_VARS LibUUID_LIBRARY LibUUID_INCLUDE_DIR
|
||||||
|
VERSION_VAR LibUUID_VERSION REASON_FAILURE_MESSAGE "Ensure that e2fsprogs is installed on the system.")
|
||||||
|
mark_as_advanced(LibUUID_INCLUDE_DIR LibUUID_LIBRARY)
|
||||||
|
|
||||||
|
if(LibUUID_FOUND)
|
||||||
|
if(NOT TARGET LibUUID::LibUUID)
|
||||||
|
if(IS_ABSOLUTE "${LibUUID_LIBRARY}")
|
||||||
|
add_library(LibUUID::LibUUID UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET LibUUID::LibUUID PROPERTY IMPORTED_LOCATION "${LibUUID_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(LibUUID::LibUUID INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET LibUUID::LibUUID PROPERTY IMPORTED_LIBNAME "${LibUUID_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
LibUUID::LibUUID
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_LibUUID_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${LibUUID_INCLUDE_DIR}"
|
||||||
|
VERSION ${LibUUID_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
LibUUID PROPERTIES
|
||||||
|
URL "http://e2fsprogs.sourceforge.net/"
|
||||||
|
DESCRIPTION
|
||||||
|
"The libuuid library is used to generate unique identifiers for objects that may be accessible beyond the local system."
|
||||||
|
)
|
105
cmake/finders/FindLibdrm.cmake
Normal file
105
cmake/finders/FindLibdrm.cmake
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindLibdrm
|
||||||
|
----------
|
||||||
|
|
||||||
|
FindModule for Libdrm and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Libdrm::Libdrm``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Libdrm_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Libdrm_VERSION``
|
||||||
|
Detected version of found Libdrm libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Libdrm_LIBRARY``
|
||||||
|
Path to the library component of Libdrm.
|
||||||
|
``Libdrm_INCLUDE_DIR``
|
||||||
|
Directory containing ``drm_fourcc.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Libdrm QUIET libdrm)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Libdrm_INCLUDE_DIR
|
||||||
|
NAMES drm_fourcc.h
|
||||||
|
HINTS ${PC_Libdrm_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
PATH_SUFFIXES libdrm
|
||||||
|
DOC "Libdrm include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Libdrm_LIBRARY
|
||||||
|
NAMES drm libdrm
|
||||||
|
HINTS ${PC_Libdrm_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Libdrm location")
|
||||||
|
|
||||||
|
if(PC_Libdrm_VERSION VERSION_GREATER 0)
|
||||||
|
set(Libdrm_VERSION ${PC_Libdrm_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Libdrm_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Libdrm version.")
|
||||||
|
endif()
|
||||||
|
set(Libdrm_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Libdrm
|
||||||
|
REQUIRED_VARS Libdrm_LIBRARY Libdrm_INCLUDE_DIR
|
||||||
|
VERSION_VAR Libdrm_VERSION REASON_FAILURE_MESSAGE "Ensure that libdrm is installed on the system.")
|
||||||
|
mark_as_advanced(Libdrm_INCLUDE_DIR Libdrm_LIBRARY)
|
||||||
|
|
||||||
|
if(Libdrm_FOUND)
|
||||||
|
if(NOT TARGET Libdrm::Libdrm)
|
||||||
|
if(IS_ABSOLUTE "${Libdrm_LIBRARY}")
|
||||||
|
add_library(Libdrm::Libdrm UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Libdrm::Libdrm PROPERTY IMPORTED_LOCATION "${Libdrm_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Libdrm::Libdrm INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Libdrm::Libdrm PROPERTY IMPORTED_LIBNAME "${Libdrm_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Libdrm::Libdrm
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Libdrm_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libdrm_INCLUDE_DIR}"
|
||||||
|
VERSION ${Libdrm_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Libdrm PROPERTIES
|
||||||
|
URL "https://gitlab.freedesktop.org/mesa/drm"
|
||||||
|
DESCRIPTION
|
||||||
|
"A low-level library, typically used by graphics drivers such as the Mesa drivers, the X drivers, libva and similar projects."
|
||||||
|
)
|
101
cmake/finders/FindLibfdk.cmake
Normal file
101
cmake/finders/FindLibfdk.cmake
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindLibfdk
|
||||||
|
----------
|
||||||
|
|
||||||
|
FindModule for Libfdk and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Libfdk::Libfdk``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Libfdk_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Libfdk_VERSION``
|
||||||
|
Detected version of found Libfdk libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Libfdk_LIBRARY``
|
||||||
|
Path to the library component of Libfdk.
|
||||||
|
``Libfdk_INCLUDE_DIR``
|
||||||
|
Directory containing ``fdk-aac/aacenc_lib.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Libfdk QUIET fdk-aac Libfdk-aac)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Libfdk_INCLUDE_DIR
|
||||||
|
NAMES fdk-aac/aacenc_lib.h
|
||||||
|
HINTS ${PC_Libfdk_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include/ /usr/local/include
|
||||||
|
DOC "Libfdk include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Libfdk_LIBRARY
|
||||||
|
NAMES fdk-aac Libfdk-aac
|
||||||
|
HINTS ${PC_Libfdk_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Libfdk location")
|
||||||
|
|
||||||
|
if(PC_Libfdk_VERSION VERSION_GREATER 0)
|
||||||
|
set(Libfdk_VERSION ${PC_Libfdk_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Libfdk_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Libfdk version.")
|
||||||
|
endif()
|
||||||
|
set(Libfdk_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Libfdk
|
||||||
|
REQUIRED_VARS Libfdk_LIBRARY Libfdk_INCLUDE_DIR
|
||||||
|
VERSION_VAR Libfdk_VERSION REASON_FAILURE_MESSAGE "Ensure that Libfdk is installed on the system.")
|
||||||
|
mark_as_advanced(Libfdk_INCLUDE_DIR Libfdk_LIBRARY)
|
||||||
|
|
||||||
|
if(Libfdk_FOUND)
|
||||||
|
if(NOT TARGET Libfdk::Libfdk)
|
||||||
|
if(IS_ABSOLUTE "${Libfdk_LIBRARY}")
|
||||||
|
add_library(Libfdk::Libfdk UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Libfdk::Libfdk PROPERTY IMPORTED_LOCATION "${Libfdk_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Libfdk::Libfdk INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Libfdk::Libfdk PROPERTY IMPORTED_LIBNAME "${Libfdk_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Libfdk::Libfdk
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Libfdk_CFLAFGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libfdk_INCLUDE_DIR}"
|
||||||
|
VERSION ${Libfdk_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Libfdk PROPERTIES
|
||||||
|
URL "https://github.com/mstorsjo/fdk-aac"
|
||||||
|
DESCRIPTION "A standalone library of the Fraunhofer FDK AAC code from Android.")
|
105
cmake/finders/FindLibpci.cmake
Normal file
105
cmake/finders/FindLibpci.cmake
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindLibpci
|
||||||
|
----------
|
||||||
|
|
||||||
|
FindModule for Libpci and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Libpci::pci``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Libpci_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Libpci_VERSION``
|
||||||
|
Detected version of found Libpci libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Libpci_LIBRARY``
|
||||||
|
Path to the library component of Libpci.
|
||||||
|
``Libpci_INCLUDE_DIR``
|
||||||
|
Directory containing ``Libpci.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Libpci QUIET libpci)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Libpci_INCLUDE_DIR
|
||||||
|
NAMES pci.h
|
||||||
|
HINTS ${PC_Libpci_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include/ /usr/local/include
|
||||||
|
PATH_SUFFIXES pci
|
||||||
|
DOC "Libpci include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Libpci_LIBRARY
|
||||||
|
NAMES libpci pci
|
||||||
|
HINTS ${PC_Libpci_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Libpci location")
|
||||||
|
|
||||||
|
if(PC_Libpci_VERSION VERSION_GREATER 0)
|
||||||
|
set(Libpci_VERSION ${PC_Libpci_VERSION})
|
||||||
|
elseif(EXISTS "${Libpci_INCLUDE_DIR}/config.h")
|
||||||
|
file(STRINGS "${Libpci_INCLUDE_DIR}/config.h" _VERSION_STRING REGEX "^.*PCILIB_VERSION[ \t]+\"[0-9\\.]+\"[ \t]*$")
|
||||||
|
string(REGEX REPLACE ".*PCILIB_VERSION[ \t]+\"([0-9\\.]+)\".*" "\\1" Libpci_VERSION "${_VERSION_STRING}")
|
||||||
|
else()
|
||||||
|
if(NOT Libpci_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Libpci version.")
|
||||||
|
endif()
|
||||||
|
set(Libpci_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Libpci
|
||||||
|
REQUIRED_VARS Libpci_LIBRARY Libpci_INCLUDE_DIR
|
||||||
|
VERSION_VAR Libpci_VERSION REASON_FAILURE_MESSAGE "Ensure that libpci is installed on the system.")
|
||||||
|
mark_as_advanced(Libpci_INCLUDE_DIR Libpci_LIBRARY)
|
||||||
|
|
||||||
|
if(Libpci_FOUND)
|
||||||
|
if(NOT TARGET Libpci::pci)
|
||||||
|
if(IS_ABSOLUTE "${Libpci_LIBRARY}")
|
||||||
|
add_library(Libpci::pci UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Libpci::pci PROPERTY IMPORTED_LOCATION "${Libpci_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Libpci::pci INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Libpci::pci PROPERTY IMPORTED_LIBNAME "${Libpci_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Libpci::pci
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Libpci_CFLAFGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libpci_INCLUDE_DIR}"
|
||||||
|
VERSION ${Libpci_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Libpci PROPERTIES
|
||||||
|
URL "https://mj.ucw.cz/sw/pciutils"
|
||||||
|
DESCRIPTION "Offers access to the PCI configuration space on a variety of operating systems.")
|
101
cmake/finders/FindLibudev.cmake
Normal file
101
cmake/finders/FindLibudev.cmake
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindLibudev
|
||||||
|
-----------
|
||||||
|
|
||||||
|
FindModule for Libudev and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Libudev::Libudev``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Libudev_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Libudev_VERSION``
|
||||||
|
Detected version of found Libudev libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Libudev_LIBRARY``
|
||||||
|
Path to the library component of Libudev.
|
||||||
|
``Libudev_INCLUDE_DIR``
|
||||||
|
Directory containing ``libudev.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Libudev QUIET libudev)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Libudev_INCLUDE_DIR
|
||||||
|
NAMES libudev.h
|
||||||
|
HINTS ${PC_Libudev_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "Libudev include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Libudev_LIBRARY
|
||||||
|
NAMES udev libudev
|
||||||
|
HINTS ${PC_Libudev_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Libudev location")
|
||||||
|
|
||||||
|
if(PC_Libudev_VERSION VERSION_GREATER 0)
|
||||||
|
set(Libudev_VERSION ${PC_Libudev_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Libudev_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Libudev version.")
|
||||||
|
endif()
|
||||||
|
set(Libudev_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Libudev
|
||||||
|
REQUIRED_VARS Libudev_LIBRARY Libudev_INCLUDE_DIR
|
||||||
|
VERSION_VAR Libudev_VERSION REASON_FAILURE_MESSAGE "Ensure that Libudev is installed on the system.")
|
||||||
|
mark_as_advanced(Libudev_INCLUDE_DIR Libudev_LIBRARY)
|
||||||
|
|
||||||
|
if(Libudev_FOUND)
|
||||||
|
if(NOT TARGET Libudev::Libudev)
|
||||||
|
if(IS_ABSOLUTE "${Libudev_LIBRARY}")
|
||||||
|
add_library(Libudev::Libudev UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Libudev::Libudev PROPERTY IMPORTED_LOCATION "${Libudev_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Libudev::Libudev INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Libudev::Libudev PROPERTY IMPORTED_LIBNAME "${Libudev_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Libudev::Libudev
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Libudev_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libudev_INCLUDE_DIR}"
|
||||||
|
VERSION ${Libudev_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Libudev PROPERTIES
|
||||||
|
URL "https://www.freedesktop.org/wiki/Software/systemd/"
|
||||||
|
DESCRIPTION "API for enumerating and introspecting local devices.")
|
101
cmake/finders/FindLibv4l2.cmake
Normal file
101
cmake/finders/FindLibv4l2.cmake
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindLibv4l2
|
||||||
|
-----------
|
||||||
|
|
||||||
|
FindModule for Libv4l2 and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Libv4l2::Libv4l2``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Libv4l2_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Libv4l2_VERSION``
|
||||||
|
Detected version of found Libv4l2 libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Libv4l2_LIBRARY``
|
||||||
|
Path to the library component of Libv4l2.
|
||||||
|
``Libv4l2_INCLUDE_DIR``
|
||||||
|
Directory containing ``libv4l2.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Libv4l2 QUIET libv4l2 v4l2 v4l-utils)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Libv4l2_INCLUDE_DIR
|
||||||
|
NAMES libv4l2.h
|
||||||
|
HINTS ${PC_Libv4l2_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "Libv4l2 include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Libv4l2_LIBRARY
|
||||||
|
NAMES v4l2
|
||||||
|
HINTS ${PC_Libv4l2_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Libv4l2 location")
|
||||||
|
|
||||||
|
if(PC_Libv4l2_VERSION VERSION_GREATER 0)
|
||||||
|
set(Libv4l2_VERSION ${PC_Libv4l2_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Libv4l2_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Libv4l2 version.")
|
||||||
|
endif()
|
||||||
|
set(Libv4l2_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Libv4l2
|
||||||
|
REQUIRED_VARS Libv4l2_LIBRARY Libv4l2_INCLUDE_DIR
|
||||||
|
VERSION_VAR Libv4l2_VERSION REASON_FAILURE_MESSAGE "Ensure that v4l-utils is installed on the system.")
|
||||||
|
mark_as_advanced(Libv4l2_INCLUDE_DIR Libv4l2_LIBRARY)
|
||||||
|
|
||||||
|
if(Libv4l2_FOUND)
|
||||||
|
if(NOT TARGET Libv4l2::Libv4l2)
|
||||||
|
if(IS_ABSOLUTE "${Libv4l2_LIBRARY}")
|
||||||
|
add_library(Libv4l2::Libv4l2 UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Libv4l2::Libv4l2 PROPERTY IMPORTED_LOCATION "${Libv4l2_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Libv4l2::Libv4l2 INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Libv4l2::Libv4l2 PROPERTY IMPORTED_LIBNAME "${Libv4l2_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Libv4l2::Libv4l2
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Libv4l2_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libv4l2_INCLUDE_DIR}"
|
||||||
|
VERSION ${Libv4l2_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Lib4l2 PROPERTIES
|
||||||
|
URL "https://linuxtv.org/wiki/index.php/V4l-utils"
|
||||||
|
DESCRIPTION "The v4l-utils are a series of packages for handling media devices.")
|
145
cmake/finders/FindLibva.cmake
Normal file
145
cmake/finders/FindLibva.cmake
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindLibva
|
||||||
|
---------
|
||||||
|
|
||||||
|
FindModule for Libva and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the following :prop_tgt:`IMPORTED` targets:
|
||||||
|
|
||||||
|
``Libva::va``
|
||||||
|
Video Acceleration (VA) API for Linux -- runtime
|
||||||
|
|
||||||
|
``Libva::drm``
|
||||||
|
Video Acceleration (VA) API for Linux -- DRM runtime
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Libva_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Libva_VERSION``
|
||||||
|
Detected version of found Libva libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Libva_LIBRARY``
|
||||||
|
Path to the library component of Libva.
|
||||||
|
``Libva_INCLUDE_DIR``
|
||||||
|
Directory containing ``libva.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Libva QUIET libva)
|
||||||
|
pkg_search_module(PC_LibvaDrm QUIET libva-drm)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Libva_INCLUDE_DIR
|
||||||
|
NAMES va.h
|
||||||
|
HINTS ${PC_Libva_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include/ /usr/local/include
|
||||||
|
PATH_SUFFIXES va
|
||||||
|
DOC "Libva include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Libva_LIBRARY
|
||||||
|
NAMES libva va
|
||||||
|
HINTS ${PC_Libva_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Libva location")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
LibvaDrm_LIBRARY
|
||||||
|
NAMES libva-drm va-drm
|
||||||
|
HINTS ${PC_LibvaDrm_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Libva-drm location")
|
||||||
|
|
||||||
|
if(PC_Libva_VERSION VERSION_GREATER 0)
|
||||||
|
set(Libva_VERSION ${PC_Libva_VERSION})
|
||||||
|
elseif(EXISTS "${Libva_INCLUDE_DIR}/va_version.h")
|
||||||
|
file(STRINGS "${Libva_INCLUDE_DIR}/va_version.h" _VERSION_STRING
|
||||||
|
REGEX "^.*(MAJOR|MINOR|MICRO)_VERSION[ \t]+[0-9]+[ \t]*$")
|
||||||
|
string(REGEX REPLACE ".*MAJOR_VERSION[ \t]+([0-9]+).*" "\\1" VERSION_MAJOR "${_VERSION_STRING}")
|
||||||
|
string(REGEX REPLACE ".*MINOR_VERSION[ \t]+([0-9]+).*" "\\1" VERSION_MINOR "${_VERSION_STRING}")
|
||||||
|
string(REGEX REPLACE ".*MICRO_VERSION[ \t]+([0-9]+).*" "\\1" VERSION_MICRO "${_VERSION_STRING}")
|
||||||
|
|
||||||
|
set(Libva_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO}")
|
||||||
|
else()
|
||||||
|
if(NOT Libva_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Libva version.")
|
||||||
|
endif()
|
||||||
|
set(Libva_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Libva
|
||||||
|
REQUIRED_VARS Libva_LIBRARY Libva_INCLUDE_DIR
|
||||||
|
VERSION_VAR Libva_VERSION REASON_FAILURE_MESSAGE "Ensure that libva is installed on the system.")
|
||||||
|
mark_as_advanced(Libva_INCLUDE_DIR Libva_LIBRARY)
|
||||||
|
|
||||||
|
if(Libva_FOUND)
|
||||||
|
if(NOT TARGET Libva::va)
|
||||||
|
if(IS_ABSOLUTE "${Libva_LIBRARY}")
|
||||||
|
add_library(Libva::va UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Libva::va PROPERTY IMPORTED_LOCATION "${Libva_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Libva::va INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Libva::va PROPERTY IMPORTED_LIBNAME "${Libva_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Libva::va
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Libva_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libva_INCLUDE_DIR}"
|
||||||
|
VERSION ${Libva_VERSION})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(LibvaDrm_LIBRARY)
|
||||||
|
if(NOT TARGET Libva::drm)
|
||||||
|
if(IS_ABSOLUTE "${LibvaDrm_LIBRARY}")
|
||||||
|
add_library(Libva::drm UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Libva::drm PROPERTY IMPORTED_LOCATION "${LibvaDrm_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Libva::drm INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Libva::drm PROPERTY IMPORTED_LIBNAME "${LibvaDrm_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Libva::drm
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_LibvaDrm_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libva_INCLUDE_DIR}"
|
||||||
|
VERSION ${Libva_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Libva PROPERTIES
|
||||||
|
URL "https://01.org/intel-media-for-linux"
|
||||||
|
DESCRIPTION
|
||||||
|
"An implementation for VA-API (Video Acceleration API) - an open-source library which provides access to graphics hardware acceleration capabilities."
|
||||||
|
)
|
|
@ -107,8 +107,7 @@ if(PC_Libx264_VERSION VERSION_GREATER 0)
|
||||||
set(Libx264_VERSION ${PC_Libx264_VERSION})
|
set(Libx264_VERSION ${PC_Libx264_VERSION})
|
||||||
elseif(EXISTS "${Libx264_INCLUDE_DIR}/x264_config.h")
|
elseif(EXISTS "${Libx264_INCLUDE_DIR}/x264_config.h")
|
||||||
file(STRINGS "${Libx264_INCLUDE_DIR}/x264_config.h" _VERSION_STRING REGEX "#define[ \t]+X264_POINTVER[ \t]+.+")
|
file(STRINGS "${Libx264_INCLUDE_DIR}/x264_config.h" _VERSION_STRING REGEX "#define[ \t]+X264_POINTVER[ \t]+.+")
|
||||||
string(REGEX REPLACE ".*#define[ \t]+X264_POINTVER[ \t]+\"(.+)[ \t]+.+\".*" "\\1" Libx264_VERSION
|
string(REGEX REPLACE ".*#define[ \t]+X264_POINTVER[ \t]+\"([^ \t]+).*\".*" "\\1" Libx264_VERSION "${_VERSION_STRING}")
|
||||||
"${_VERSION_STRING}")
|
|
||||||
else()
|
else()
|
||||||
if(NOT Libx264_FIND_QUIETLY)
|
if(NOT Libx264_FIND_QUIETLY)
|
||||||
message(AUTHOR_WARNING "Failed to find Libx264 version.")
|
message(AUTHOR_WARNING "Failed to find Libx264 version.")
|
||||||
|
|
|
@ -79,14 +79,14 @@ find_path(
|
||||||
NAMES lua.h luajit.h
|
NAMES lua.h luajit.h
|
||||||
HINTS ${PC_Luajit_INCLUDE_DIRS}
|
HINTS ${PC_Luajit_INCLUDE_DIRS}
|
||||||
PATHS /usr/include /usr/local/include
|
PATHS /usr/include /usr/local/include
|
||||||
PATH_SUFFIXES luajit-2.1 luajit
|
PATH_SUFFIXES luajit-2.1 luajit-2.0 luajit
|
||||||
DOC "Luajit include directory")
|
DOC "Luajit include directory")
|
||||||
|
|
||||||
if(PC_Luajit_VERSION VERSION_GREATER 0)
|
if(PC_Luajit_VERSION VERSION_GREATER 0)
|
||||||
set(Luajit_VERSION ${PC_Luajit_VERSION})
|
set(Luajit_VERSION ${PC_Luajit_VERSION})
|
||||||
elseif(EXISTS "${Luajit_INCLUDE_DIR}/lua.h")
|
elseif(EXISTS "${Luajit_INCLUDE_DIR}/luajit.h")
|
||||||
file(STRINGS "${Luajit_INCLUDE_DIR}/lua.h" _VERSION_STRING REGEX "#define[ \t]+LUA_RELEASE[ \t]+.+")
|
file(STRINGS "${Luajit_INCLUDE_DIR}/luajit.h" _VERSION_STRING REGEX "#define[ \t]+LUAJIT_VERSION[ \t]+\".+\".*")
|
||||||
string(REGEX REPLACE ".*#define[ \t]+LUA_RELEASE[ \t]+\"Lua (.+)\".*" "\\1" Luajit_VERSION "${_VERSION_STRING}")
|
string(REGEX REPLACE ".*#define[ \t]+LUAJIT_VERSION[ \t]+\"LuaJIT (.+)\".*" "\\1" Luajit_VERSION "${_VERSION_STRING}")
|
||||||
else()
|
else()
|
||||||
if(NOT Luajit_FIND_QUIETLY)
|
if(NOT Luajit_FIND_QUIETLY)
|
||||||
message(AUTHOR_WARNING "Failed to find Luajit version.")
|
message(AUTHOR_WARNING "Failed to find Luajit version.")
|
||||||
|
|
|
@ -115,6 +115,11 @@ elseif(EXISTS "${MbedTLS_INCLUDE_DIR}/mbedtls/build_info.h")
|
||||||
REGEX "#define[ \t]+MBEDTLS_VERSION_STRING[ \t]+.+")
|
REGEX "#define[ \t]+MBEDTLS_VERSION_STRING[ \t]+.+")
|
||||||
string(REGEX REPLACE ".*#define[ \t]+MBEDTLS_VERSION_STRING[ \t]+\"(.+)\".*" "\\1" MbedTLS_VERSION
|
string(REGEX REPLACE ".*#define[ \t]+MBEDTLS_VERSION_STRING[ \t]+\"(.+)\".*" "\\1" MbedTLS_VERSION
|
||||||
"${_VERSION_STRING}")
|
"${_VERSION_STRING}")
|
||||||
|
elseif(EXISTS "${MbedTLS_INCLUDE_DIR}/mbedtls/version.h")
|
||||||
|
file(STRINGS "${MbedTLS_INCLUDE_DIR}/mbedtls/version.h" _VERSION_STRING
|
||||||
|
REGEX "#define[ \t]+MBEDTLS_VERSION_STRING[ \t]+.+")
|
||||||
|
string(REGEX REPLACE ".*#define[ \t]+MBEDTLS_VERSION_STRING[ \t]+\"(.+)\".*" "\\1" MbedTLS_VERSION
|
||||||
|
"${_VERSION_STRING}")
|
||||||
else()
|
else()
|
||||||
if(NOT MbedTLS_FIND_QUIETLY)
|
if(NOT MbedTLS_FIND_QUIETLY)
|
||||||
message(AUTHOR_WARNING "Failed to find MbedTLS version.")
|
message(AUTHOR_WARNING "Failed to find MbedTLS version.")
|
||||||
|
|
64
cmake/finders/FindOSS.cmake
Normal file
64
cmake/finders/FindOSS.cmake
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindOSS
|
||||||
|
-------
|
||||||
|
|
||||||
|
FindModule for OSS and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``OSS::OSS``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``OSS_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``OSS_VERSION``
|
||||||
|
Detected version of found OSS libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``OSS_INCLUDE_DIR``
|
||||||
|
Directory containing ``sys/soundcard.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
OSS_INCLUDE_DIR
|
||||||
|
NAMES sys/soundcard.h
|
||||||
|
HINTS ${PC_OSS_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "OSS include directory")
|
||||||
|
|
||||||
|
set(OSS_VERSION ${CMAKE_HOST_SYSTEM_VERSION})
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
OSS
|
||||||
|
REQUIRED_VARS OSS_INCLUDE_DIR
|
||||||
|
VERSION_VAR OSS_VERSION REASON_FAILURE_MESSAGE "Ensure that OSS is installed on the system.")
|
||||||
|
mark_as_advanced(OSS_INCLUDE_DIR OSS_LIBRARY)
|
||||||
|
|
||||||
|
if(OSS_FOUND)
|
||||||
|
if(NOT TARGET OSS::OSS)
|
||||||
|
add_library(OSS::OSS INTERFACE IMPORTED)
|
||||||
|
|
||||||
|
set_target_properties(OSS::OSS PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${OSS_INCLUDE_DIR}" VERSION ${OSS_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
122
cmake/finders/FindPipeWire.cmake
Normal file
122
cmake/finders/FindPipeWire.cmake
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindPipeWire
|
||||||
|
------------
|
||||||
|
|
||||||
|
FindModule for PipeWire and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``PipeWire::PipeWire``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``PipeWire_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``PipeWire_VERSION``
|
||||||
|
Detected version of found PipeWire libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``PipeWire_LIBRARY``
|
||||||
|
Path to the library component of PipeWire.
|
||||||
|
``PipeWire_INCLUDE_DIR``
|
||||||
|
Directory containing ``PipeWire.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_PipeWire libpipewire-0.3 QUIET)
|
||||||
|
pkg_search_module(PC_Libspa libspa-0.2 QUIET)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
PipeWire_INCLUDE_DIR
|
||||||
|
NAMES pipewire/pipewire.h
|
||||||
|
HINTS ${PC_PipeWire_INCLUDE_DIRS}
|
||||||
|
PATH_SUFFIXES pipewire-0.3
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "PipeWire include directory")
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Libspa_INCLUDE_DIR
|
||||||
|
NAMES spa/param/props.h
|
||||||
|
HINTS ${PC_Libspa_INCLUDE_DIRS}
|
||||||
|
PATH_SUFFIXES spa-0.2
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "Libspa include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
PipeWire_LIBRARY
|
||||||
|
NAMES pipewire-0.3
|
||||||
|
HINTS ${PC_PipeWire_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "PipeWire location")
|
||||||
|
|
||||||
|
if(PC_PipeWire_VERSION VERSION_GREATER 0)
|
||||||
|
set(PipeWire_VERSION ${PC_PipeWire_VERSION})
|
||||||
|
elseif(EXISTS "${PipeWire_INCLUDE_DIR}/pipewire/version.h")
|
||||||
|
file(STRINGS "${PipeWire_INCLUDE_DIR}/pipewire/version.h" _version_string
|
||||||
|
REGEX "^.*PW_(MAJOR|MINOR|MICRO)[ \t]+[0-9]+[ \t]*$")
|
||||||
|
string(REGEX REPLACE ".*PW_MAJOR[ \t]+([0-9]+).*" "\\1" _version_major "${_version_string}")
|
||||||
|
string(REGEX REPLACE ".*PW_MINOR[ \t]+([0-9]+).*" "\\1" _version_minor "${_version_string}")
|
||||||
|
string(REGEX REPLACE ".*PW_MICRO[ \t]+([0-9]+).*" "\\1" _version_micro "${_version_string}")
|
||||||
|
|
||||||
|
set(PipeWire_VERSION "${_version_major}.${_version_minor}.${_version_micro}")
|
||||||
|
unset(_version_major)
|
||||||
|
unset(_version_minor)
|
||||||
|
unset(_version_micro)
|
||||||
|
else()
|
||||||
|
if(NOT PipeWire_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find PipeWire version.")
|
||||||
|
endif()
|
||||||
|
set(PipeWire_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
PipeWire
|
||||||
|
REQUIRED_VARS PipeWire_LIBRARY PipeWire_INCLUDE_DIR Libspa_INCLUDE_DIR
|
||||||
|
VERSION_VAR PipeWire_VERSION REASON_FAILURE_MESSAGE "Ensure that PipeWire is installed on the system.")
|
||||||
|
mark_as_advanced(PipeWire_LIBRARY PipeWire_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(PipeWire_FOUND)
|
||||||
|
if(NOT TARGET PipeWire::PipeWire)
|
||||||
|
if(IS_ABSOLUTE "${PipeWire_LIBRARY}")
|
||||||
|
add_library(PipeWire::PipeWire UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET PipeWire::PipeWire PROPERTY IMPORTED_LOCATION "${PipeWire_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(PipeWire::PipeWire INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET PipeWire::PipeWire PROPERTY IMPORTED_LIBNAME "${PipeWire_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
PipeWire::PipeWire
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_PipeWire_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${PipeWire_INCLUDE_DIR};${Libspa_INCLUDE_DIR}"
|
||||||
|
VERSION ${PipeWire_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
PipeWire PROPERTIES
|
||||||
|
URL "https://www.pipewire.org"
|
||||||
|
DESCRIPTION "PipeWire - multimedia processing")
|
108
cmake/finders/FindPulseAudio.cmake
Normal file
108
cmake/finders/FindPulseAudio.cmake
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindPulseAudio
|
||||||
|
--------------
|
||||||
|
|
||||||
|
FindModule for PulseAudio and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``PulseAudio::PulseAudio``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``PulseAudio_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``PulseAudio_VERSION``
|
||||||
|
Detected version of found PulseAudio libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``PulseAudio_LIBRARY``
|
||||||
|
Path to the library component of PulseAudio.
|
||||||
|
``PulseAudio_INCLUDE_DIR``
|
||||||
|
Directory containing ``pulseaudio.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_PulseAudio QUIET libpulse)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
PulseAudio_INCLUDE_DIR
|
||||||
|
NAMES pulse/pulseaudio.h
|
||||||
|
HINTS ${PC_PulseAudio_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include/ /usr/local/include
|
||||||
|
DOC "PulseAudio include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
PulseAudio_LIBRARY
|
||||||
|
NAMES pulse
|
||||||
|
HINTS ${PC_PulseAudio_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "PulseAudio location")
|
||||||
|
|
||||||
|
if(PC_PulseAudio_VERSION VERSION_GREATER 0)
|
||||||
|
set(PulseAudio_VERSION ${PC_PulseAudio_VERSION})
|
||||||
|
elseif(EXISTS "${PulseAudio_INCLUDE_DIR}/version.h")
|
||||||
|
file(STRINGS "${PulseAudio_INCLUDE_DIR}/version.h" _VERSION_STRING
|
||||||
|
REGEX "^.*pa_get_headers_version\\(\\)[\t ]+\\(\".*\"\\)[ \t]*$")
|
||||||
|
string(REGEX REPLACE ".*pa_get_headers_version\\(\\)[\t ]+\\(\"([^\"]*)\"\\).*" "\\1" PulseAudio_VERSION
|
||||||
|
"${_VERSION_STRING}")
|
||||||
|
else()
|
||||||
|
if(NOT PulseAudio_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find PulseAudio version.")
|
||||||
|
endif()
|
||||||
|
set(PulseAudio_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
PulseAudio
|
||||||
|
REQUIRED_VARS PulseAudio_INCLUDE_DIR PulseAudio_LIBRARY
|
||||||
|
VERSION_VAR PulseAudio_VERSION REASON_FAILURE_MESSAGE "Ensure that PulseAudio is installed on the system.")
|
||||||
|
mark_as_advanced(PulseAudio_INCLUDE_DIR PulseAudio_LIBRARY)
|
||||||
|
|
||||||
|
if(PulseAudio_FOUND)
|
||||||
|
if(NOT TARGET PulseAudio::PulseAudio)
|
||||||
|
if(IS_ABSOLUTE "${PulseAudio_LIBRARY}")
|
||||||
|
add_library(PulseAudio::PulseAudio UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET PulseAudio::PulseAudio PROPERTY IMPORTED_LOCATION "${PulseAudio_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(PulseAudio::PulseAudio INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET PulseAudio::PulseAudio PROPERTY IMPORTED_LIBNAME "${PulseAudio_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
PulseAudio::PulseAudio
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_PulseAudio_CFLAFGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${PulseAudio_INCLUDE_DIR}"
|
||||||
|
VERSION ${PulseAudio_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
PulseAudio PROPERTIES
|
||||||
|
URL "https://www.freedesktop.org/wiki/Software/PulseAudio/"
|
||||||
|
DESCRIPTION
|
||||||
|
"PulseAudio is a sound server system for POSIX OSes, meaning that it is a proxy for your sound applications.")
|
101
cmake/finders/FindSndio.cmake
Normal file
101
cmake/finders/FindSndio.cmake
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindSndio
|
||||||
|
---------
|
||||||
|
|
||||||
|
FindModule for Sndio and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Sndio::Sndio``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Sndio_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Sndio_VERSION``
|
||||||
|
Detected version of found Sndio libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Sndio_LIBRARY``
|
||||||
|
Path to the library component of Sndio.
|
||||||
|
``Sndio_INCLUDE_DIR``
|
||||||
|
Directory containing ``sndio.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Sndio QUIET sndio)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Sndio_INCLUDE_DIR
|
||||||
|
NAMES sndio.h
|
||||||
|
HINTS ${PC_Sndio_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "Sndio include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Sndio_LIBRARY
|
||||||
|
NAMES sndio
|
||||||
|
HINTS ${PC_Sndio_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Sndio location")
|
||||||
|
|
||||||
|
if(PC_Sndio_VERSION VERSION_GREATER 0)
|
||||||
|
set(Sndio_VERSION ${PC_Sndio_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Sndio_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Sndio version.")
|
||||||
|
endif()
|
||||||
|
set(Sndio_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Sndio
|
||||||
|
REQUIRED_VARS Sndio_LIBRARY Sndio_INCLUDE_DIR
|
||||||
|
VERSION_VAR Sndio_VERSION REASON_FAILURE_MESSAGE "Ensure that Sndio is installed on the system.")
|
||||||
|
mark_as_advanced(Sndio_INCLUDE_DIR Sndio_LIBRARY)
|
||||||
|
|
||||||
|
if(Sndio_FOUND)
|
||||||
|
if(NOT TARGET Sndio::Sndio)
|
||||||
|
if(IS_ABSOLUTE "${Sndio_LIBRARY}")
|
||||||
|
add_library(Sndio::Sndio UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Sndio::Sndio PROPERTY IMPORTED_LOCATION "${Sndio_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Sndio::Sndio INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Sndio::Sndio PROPERTY IMPORTED_LIBNAME "${Sndio_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Sndio::Sndio
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Sndio_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Sndio_INCLUDE_DIR}"
|
||||||
|
VERSION ${Sndio_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Sndio PROPERTIES
|
||||||
|
URL "https://www.sndio.org"
|
||||||
|
DESCRIPTION "Sndio is a small audio and MIDI framework part of the OpenBSD project and ported to FreeBSD.")
|
95
cmake/finders/FindSysinfo.cmake
Normal file
95
cmake/finders/FindSysinfo.cmake
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindSysinfo
|
||||||
|
-----------
|
||||||
|
|
||||||
|
FindModule for Sysinfo and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``Sysinfo::Sysinfo``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Sysinfo_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Sysinfo_VERSION``
|
||||||
|
Detected version of found Sysinfo libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Sysinfo_LIBRARY``
|
||||||
|
Path to the library component of Sysinfo.
|
||||||
|
``Sysinfo_INCLUDE_DIR``
|
||||||
|
Directory containing ``sys/sysinfo.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Sysinfo QUIET sysinfo)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Sysinfo_INCLUDE_DIR
|
||||||
|
NAMES sys/sysinfo.h
|
||||||
|
HINTS ${PC_Sysinfo_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "Sysinfo include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Sysinfo_LIBRARY
|
||||||
|
NAMES sysinfo libsysinfo
|
||||||
|
HINTS ${PC_Sysinfo_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Sysinfo location")
|
||||||
|
|
||||||
|
if(PC_Sysinfo_VERSION VERSION_GREATER 0)
|
||||||
|
set(Sysinfo_VERSION ${PC_Sysinfo_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Sysinfo_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Sysinfo version.")
|
||||||
|
endif()
|
||||||
|
set(Sysinfo_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Sysinfo
|
||||||
|
REQUIRED_VARS Sysinfo_LIBRARY Sysinfo_INCLUDE_DIR
|
||||||
|
VERSION_VAR Sysinfo_VERSION REASON_FAILURE_MESSAGE "Ensure that Sysinfo is installed on the system.")
|
||||||
|
mark_as_advanced(Sysinfo_INCLUDE_DIR Sysinfo_LIBRARY)
|
||||||
|
|
||||||
|
if(Sysinfo_FOUND)
|
||||||
|
if(NOT TARGET Sysinfo::Sysinfo)
|
||||||
|
if(IS_ABSOLUTE "${Sysinfo_LIBRARY}")
|
||||||
|
add_library(Sysinfo::Sysinfo UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Sysinfo::Sysinfo PROPERTY IMPORTED_LOCATION "${Sysinfo_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Sysinfo::Sysinfo INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Sysinfo::Sysinfo PROPERTY IMPORTED_LIBNAME "${Sysinfo_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Sysinfo::Sysinfo
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Sysinfo_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Sysinfo_INCLUDE_DIR}"
|
||||||
|
VERSION ${Sysinfo_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
177
cmake/finders/FindWayland.cmake
Normal file
177
cmake/finders/FindWayland.cmake
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindWayland
|
||||||
|
-----------
|
||||||
|
|
||||||
|
FindModule for Wayland and and associated components
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Components
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 1.0
|
||||||
|
|
||||||
|
This module contains provides several components:
|
||||||
|
|
||||||
|
``Client``
|
||||||
|
``Server``
|
||||||
|
``EGL``
|
||||||
|
``Cursor``
|
||||||
|
|
||||||
|
Import targets exist for each component.
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` targets:
|
||||||
|
|
||||||
|
``Wayland::Client``
|
||||||
|
Wayland client component
|
||||||
|
|
||||||
|
``Wayland::Server``
|
||||||
|
Wayland server component
|
||||||
|
|
||||||
|
``Wayland::EGL``
|
||||||
|
Wayland EGL component
|
||||||
|
|
||||||
|
``Wayland::Cursor``
|
||||||
|
Wayland cursor component
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Wayland_<COMPONENT>_FOUND``
|
||||||
|
True, if required component was found.
|
||||||
|
``Wayland_<COMPONENT>_VERSION``
|
||||||
|
Detected version of Wayland component.
|
||||||
|
``Wayland_<COMPONENT>_INCLUDE_DIRS``
|
||||||
|
Include directories needed for Wayland component.
|
||||||
|
``Wayland_<COMPONENT>_LIBRARIES``
|
||||||
|
Libraries needed to link to Wayland component.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Wayland_<COMPONENT>_LIBRARY``
|
||||||
|
Path to the component of Wayland.
|
||||||
|
``Wayland_<COMPONENT>_INCLUDE_DIR``
|
||||||
|
Directory containing ``<COMPONENT>.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
|
||||||
|
list(APPEND _Wayland_DEFAULT_COMPONENTS Client Server EGL Cursor)
|
||||||
|
list(APPEND _Wayland_LIBRARIES wayland-client wayland-server wayland-egl wayland-cursor)
|
||||||
|
|
||||||
|
if(NOT Wayland_FIND_COMPONENTS)
|
||||||
|
set(Wayland_FIND_COMPONENTS ${_Wayland_DEFAULT_COMPONENTS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Wayland_find_component: Macro to setup targets for specified Wayland component
|
||||||
|
macro(Wayland_find_component component)
|
||||||
|
list(GET _Wayland_DEFAULT_COMPONENTS ${component} COMPONENT_NAME)
|
||||||
|
list(GET _Wayland_LIBRARIES ${component} COMPONENT_LIBRARY)
|
||||||
|
|
||||||
|
if(NOT TARGET Wayland::${COMPONENT_NAME})
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Wayland_${COMPONENT_NAME} QUIET ${COMPONENT_LIBRARY})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Wayland_${COMPONENT_NAME}_INCLUDE_DIR
|
||||||
|
NAMES ${COMPONENT_LIBRARY}.h
|
||||||
|
HINTS ${PC_Wayland_${COMPONENT_NAME}_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "Wayland ${COMPONENT_NAME} include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Wayland_${COMPONENT_NAME}_LIBRARY
|
||||||
|
NAMES ${COMPONENT_LIBRARY}
|
||||||
|
HINTS ${PC_Wayland_${COMPONENT_NAME}_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "Wayland ${COMPONENT_NAME} location")
|
||||||
|
|
||||||
|
if(PC_Wayland_${COMPONENT_NAME}_VERSION VERSION_GREATER 0)
|
||||||
|
set(Wayland_${COMPONENT_NAME}_VERSION ${PC_Wayland_${COMPONENT_NAME}_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Wayland_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find Wayland ${COMPONENT_NAME} version.")
|
||||||
|
endif()
|
||||||
|
set(Wayland_${COMPONENT_NAME}_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(Wayland_${COMPONENT_NAME}_LIBRARY AND Wayland_${COMPONENT_NAME}_INCLUDE_DIR)
|
||||||
|
set(Wayland_${COMPONENT_NAME}_FOUND TRUE)
|
||||||
|
set(Wayland_${COMPONENT_NAME}_LIBRARIES ${Wayland_${COMPONENT_NAME}_LIBRARY})
|
||||||
|
set(Wayland_${COMPONENT_NAME}_INCLUDE_DIRS ${Wayland_${COMPONENT_NAME}_INCLUDE_DIR})
|
||||||
|
set(Wayland_${COMPONENT_NAME}_DEFINITIONS ${PC_Wayland_${COMPONENT_NAME}_CFLAGS_OTHER})
|
||||||
|
mark_as_advanced(Wayland_${COMPONENT_NAME}_LIBRARY Wayland_${COMPONENT_NAME}_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(IS_ABSOLUTE "${Wayland_${COMPONENT_NAME}_LIBRARY}")
|
||||||
|
add_library(Wayland::${COMPONENT_NAME} UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET Wayland::${COMPONENT_NAME} PROPERTY IMPORTED_LOCATION
|
||||||
|
"${Wayland_${COMPONENT_NAME}_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(Wayland::${COMPONENT_NAME} INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET Wayland::${COMPONENT_NAME} PROPERTY IMPORTED_LIBNAME "${Wayland_${COMPONENT_NAME}_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
Wayland::${COMPONENT_NAME}
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Wayland_${COMPONENT_NAME}_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Wayland_${COMPONENT_NAME}_INCLUDE_DIR}"
|
||||||
|
VERSION ${Wayland_${COMPONENT_NAME}_VERSION})
|
||||||
|
list(APPEND Wayland_COMPONENTS Wayland::${COMPONENT_NAME})
|
||||||
|
list(APPEND Wayland_INCLUDE_DIRS ${Wayland_${COMPONENT_NAME}_INCLUDE_DIR})
|
||||||
|
list(APPEND Wayland_LIBRARIES ${Wayland_${COMPONENT_NAME}_LIBRARY})
|
||||||
|
|
||||||
|
if(NOT Wayland_VERSION)
|
||||||
|
set(Wayland_VERSION ${Wayland_${COMPONENT_NAME}_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
list(APPEND Wayland_COMPONENTS Wayland::${COMPONENT_NAME})
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
foreach(component IN LISTS Wayland_FIND_COMPONENTS)
|
||||||
|
list(FIND _Wayland_DEFAULT_COMPONENTS "${component}" valid_component)
|
||||||
|
|
||||||
|
if(valid_component GREATER_EQUAL 0)
|
||||||
|
wayland_find_component(${valid_component})
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unknown Wayland component required: ${component}.")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Wayland
|
||||||
|
REQUIRED_VARS Wayland_LIBRARIES Wayland_INCLUDE_DIRS
|
||||||
|
VERSION_VAR Wayland_VERSION
|
||||||
|
HANDLE_COMPONENTS REASON_FAILURE_MESSAGE "Ensure that Wayland is installed on the system.")
|
||||||
|
|
||||||
|
unset(_Wayland_DEFAULT_COMPONENTS)
|
||||||
|
unset(_Wayland_LIBRARIES)
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Wayland PROPERTIES
|
||||||
|
URL "https://wayland.freedesktop.org"
|
||||||
|
DESCRIPTION
|
||||||
|
"A replacement for the X11 window system protocol and architecture with the aim to be easier to develop, extend, and maintain."
|
||||||
|
)
|
104
cmake/finders/FindX11-xcb.cmake
Normal file
104
cmake/finders/FindX11-xcb.cmake
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindX11-xcb
|
||||||
|
-----------
|
||||||
|
|
||||||
|
FindModule for x11-xcb and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``X11::x11-xcb``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``X11-xcb_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``X11-xcb_VERSION``
|
||||||
|
Detected version of found x11-xcb libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``X11-xcb_LIBRARY``
|
||||||
|
Path to the library component of x11-xcb.
|
||||||
|
``X11-xcb_INCLUDE_DIR``
|
||||||
|
Directory containing ``Xlib-xcb.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_X11-xcb QUIET x11-xcb)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
X11-xcb_INCLUDE_DIR
|
||||||
|
NAMES X11/Xlib-xcb.h
|
||||||
|
HINTS ${PC_X11-xcb_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "X11-xcb include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
X11-xcb_LIBRARY
|
||||||
|
NAMES X11-xcb
|
||||||
|
HINTS ${PC_x11-xcb-LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "X11-xcb location")
|
||||||
|
|
||||||
|
if(PC_X11-xcb_VERSION VERSION_GREATER 0)
|
||||||
|
set(X11-xcb_VERSION ${PC_X11-xcb_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT X11-xcb_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find X11-xcb version.")
|
||||||
|
endif()
|
||||||
|
set(X11-xcb_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
X11-xcb
|
||||||
|
REQUIRED_VARS X11-xcb_LIBRARY X11-xcb_INCLUDE_DIR
|
||||||
|
VERSION_VAR X11-xcb_VERSION REASON_FAILURE_MESSAGE "Ensure that X11-xcb is installed on the system.")
|
||||||
|
mark_as_advanced(X11-xcb_INCLUDE_DIR X11-xcb_LIBRARY)
|
||||||
|
|
||||||
|
if(X11-xcb_FOUND)
|
||||||
|
if(NOT TARGET X11::x11-xcb)
|
||||||
|
if(IS_ABSOLUTE "${X11-xcb_LIBRARY}")
|
||||||
|
add_library(X11::x11-xcb UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET X11::x11-xcb PROPERTY IMPORTED_LOCATION "${X11-xcb_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(X11::x11-xcb INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET X11::x11-xcb PROPERTY IMPORTED_LIBNAME "${X11-xcb_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
X11::x11-xcb
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_X11-xcb_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${X11-xcb_INCLUDE_DIR}"
|
||||||
|
VERSION ${X11-xcb_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
X11-xcb PROPERTIES
|
||||||
|
URL "https://www.X.org"
|
||||||
|
DESCRIPTION
|
||||||
|
"Provides functions needed by clients which take advantage of Xlib/XCB to mix calls to both Xlib and XCB over the same X connection."
|
||||||
|
)
|
302
cmake/finders/FindXcb.cmake
Normal file
302
cmake/finders/FindXcb.cmake
Normal file
|
@ -0,0 +1,302 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindXcb
|
||||||
|
-------
|
||||||
|
|
||||||
|
FindModule for XCB and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Components
|
||||||
|
^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 1.0
|
||||||
|
|
||||||
|
This module contains provides several components:
|
||||||
|
|
||||||
|
``xcb-xcb``
|
||||||
|
``xcb-composite``
|
||||||
|
``xcb-damage``
|
||||||
|
``xcb-dri2,``
|
||||||
|
``xcb-ewmh``
|
||||||
|
``xcb-glx``
|
||||||
|
``xcb-icccm``
|
||||||
|
``xcb-image``
|
||||||
|
``xcb-keysyms
|
||||||
|
``xcb-randr``
|
||||||
|
``xcb-render``
|
||||||
|
``xcb-renderutil``
|
||||||
|
``xcb-shape``
|
||||||
|
``xcb-shm``
|
||||||
|
``xcb-sync``
|
||||||
|
``xcb-util
|
||||||
|
``xcb-xfixes``
|
||||||
|
``xcb-xtest``
|
||||||
|
``xcb-xv``
|
||||||
|
``xcb-xinput``
|
||||||
|
``xcb-xinerama``
|
||||||
|
|
||||||
|
Import targets exist for each component.
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` targets:
|
||||||
|
|
||||||
|
``xcb::xcb``
|
||||||
|
xcb component
|
||||||
|
|
||||||
|
``xcb::xcb-composite``
|
||||||
|
xcb-composite component
|
||||||
|
|
||||||
|
``xcb::xcb-damage``
|
||||||
|
xcb-damage component
|
||||||
|
|
||||||
|
``xcb::xcb-dri2``
|
||||||
|
xcb-dri2 component
|
||||||
|
|
||||||
|
``xcb::xcb-ewmh``
|
||||||
|
xcb-ewmh component
|
||||||
|
|
||||||
|
``xcb::xcb-glx``
|
||||||
|
xcb-glx component
|
||||||
|
|
||||||
|
``xcb::xcb-icccm``
|
||||||
|
xcb-icccm component
|
||||||
|
|
||||||
|
``xcb::xcb-image``
|
||||||
|
xcb-image component
|
||||||
|
|
||||||
|
``xcb::xcb-keysyms``
|
||||||
|
xcb-keysyms component
|
||||||
|
|
||||||
|
``xcb::xcb-randr``
|
||||||
|
xcb-randr component
|
||||||
|
|
||||||
|
``xcb::xcb-render``
|
||||||
|
xcb-render component
|
||||||
|
|
||||||
|
``xcb::xcb-renderutil``
|
||||||
|
xcb-renderutil component
|
||||||
|
|
||||||
|
``xcb::xcb-shape``
|
||||||
|
xcb-shape component
|
||||||
|
|
||||||
|
``xcb::xcb-shm``
|
||||||
|
xcb-shm component
|
||||||
|
|
||||||
|
``xcb::xcb-sync``
|
||||||
|
xcb-sync component
|
||||||
|
|
||||||
|
``xcb::xcb-util``
|
||||||
|
xcb-util component
|
||||||
|
|
||||||
|
``xcb::xcb-xfixes``
|
||||||
|
xcb-xfixes component
|
||||||
|
|
||||||
|
``xcb::xcb-xtest``
|
||||||
|
xcb-xtest component
|
||||||
|
|
||||||
|
``xcb::xcb-xv``
|
||||||
|
xcb-xv component
|
||||||
|
|
||||||
|
``xcb::xcb-xinput``
|
||||||
|
xcb-xinput component
|
||||||
|
|
||||||
|
``xcb::xcb-xinerema``
|
||||||
|
xcb-xinerema component
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Xcb_<COMPONENT>_FOUND``
|
||||||
|
True, if required component was found.
|
||||||
|
``Xcb_<COMPONENT>_VERSION``
|
||||||
|
Detected version of found XCB component library.
|
||||||
|
``Xcb_<COMPONENT>_INCLUDE_DIRS``
|
||||||
|
Include directories needed for XCB component.
|
||||||
|
``Xcb_<COMPONENT>_LIBRARIES``
|
||||||
|
Libraries needed to link to XCB component.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Xcb_<COMPONENT>_LIBRARY``
|
||||||
|
Path to the library component of XCB.
|
||||||
|
``Xcb_<COMPONENT>_INCLUDE_DIR``
|
||||||
|
Directory containing ``<COMPONENT>.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-lint: disable=R0915
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
|
||||||
|
list(
|
||||||
|
APPEND
|
||||||
|
_Xcb_DEFAULT_COMPONENTS
|
||||||
|
xcb
|
||||||
|
xcb-composite
|
||||||
|
xcb-damage
|
||||||
|
xcb-dri2,
|
||||||
|
xcb-ewmh
|
||||||
|
xcb-glx
|
||||||
|
xcb-icccm
|
||||||
|
xcb-image
|
||||||
|
xcb-keysyms
|
||||||
|
xcb-randr
|
||||||
|
xcb-render
|
||||||
|
xcb-renderutil
|
||||||
|
xcb-shape
|
||||||
|
xcb-shm
|
||||||
|
xcb-sync
|
||||||
|
xcb-util
|
||||||
|
xcb-xfixes
|
||||||
|
xcb-xtest
|
||||||
|
xcb-xv
|
||||||
|
xcb-xinput
|
||||||
|
xcb-xinerama)
|
||||||
|
list(
|
||||||
|
APPEND
|
||||||
|
_Xcb_HEADERS
|
||||||
|
xcb.h
|
||||||
|
composite.h
|
||||||
|
damage.h
|
||||||
|
dri2h.h
|
||||||
|
xcb_ewmh.h
|
||||||
|
glx.h
|
||||||
|
xcb_icccm.h
|
||||||
|
xcb_image.h
|
||||||
|
xcb_keysyms.h
|
||||||
|
randr.h
|
||||||
|
render.h
|
||||||
|
xcb_renderutil.h
|
||||||
|
shape.h
|
||||||
|
shm.h
|
||||||
|
sync.h
|
||||||
|
xcb_util.h
|
||||||
|
xfixes.h
|
||||||
|
xtest.h
|
||||||
|
xv.h
|
||||||
|
xinput.h
|
||||||
|
xinerama.h)
|
||||||
|
|
||||||
|
if(NOT Xcb_FIND_COMPONENTS)
|
||||||
|
set(Xcb_FIND_COMPONENTS ${_Xcb_DEFAULT_COMPONENTS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Xcb_find_component: Find and create targets for specified xcb component
|
||||||
|
macro(Xcb_find_component component)
|
||||||
|
list(GET _Xcb_DEFAULT_COMPONENTS ${component} COMPONENT_NAME)
|
||||||
|
list(GET _Xcb_HEADERS ${component} COMPONENT_HEADER)
|
||||||
|
|
||||||
|
if(NOT TARGET xcb::${COMPONENT_NAME})
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Xcb_${COMPONENT_NAME} QUIET ${COMPONENT_NAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Xcb_${COMPONENT_NAME}_INCLUDE_DIR
|
||||||
|
NAMES "xcb/${COMPONENT_HEADER}"
|
||||||
|
HINTS ${PC_Xcb_${COMPONENT_NAME}_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
DOC "XCB component ${COMPONENT_NAME} include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Xcb_${COMPONENT_NAME}_LIBRARY
|
||||||
|
NAMES "${COMPONENT_NAME}"
|
||||||
|
HINTS ${PC_Xcb_${COMPONENT_NAME}_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "XCB component ${COMPONENT_NAME} location")
|
||||||
|
|
||||||
|
if(PC_Xcb_${COMPONENT_NAME}_VERSION VERSION_GREATER 0)
|
||||||
|
set(Xcb_${COMPONENT_NAME}_VERSION ${PC_Xcb_${COMPONENT_NAME}_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Xcb_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find ${COMPONENT_NAME} version.")
|
||||||
|
endif()
|
||||||
|
set(Xcb_${COMPONENT_NAME}_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(Xcb_${COMPONENT_NAME}_LIBRARY AND Xcb_${COMPONENT_NAME}_INCLUDE_DIR)
|
||||||
|
set(Xcb_${COMPONENT_NAME}_FOUND TRUE)
|
||||||
|
set(Xcb_${COMPONENT_NAME}_LIBRARIES ${Xcb_${COMPONENT_NAME}_LIBRARY})
|
||||||
|
set(Xcb_${COMPONENT_NAME}_INCLUDE_DIRS ${Xcb_${COMPONENT_NAME}_INCLUDE_DIR})
|
||||||
|
set(Xcb_${COMPONENT_NAME}_DEFINITIONS ${PC_Xcb_${COMPONENT_NAME}_CFLAGS_OTHER})
|
||||||
|
mark_as_advanced(Xcb_${COMPONENT_NAME}_LIBRARY Xcb_${COMPONENT_NAME}_INCLUDE_DIR)
|
||||||
|
|
||||||
|
if(IS_ABSOLUTE "${Xcb_${COMPONENT_NAME}_LIBRARY}")
|
||||||
|
add_library(xcb::${COMPONENT_NAME} UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET xcb::${COMPONENT_NAME} PROPERTY IMPORTED_LOCATION "${Xcb_${COMPONENT_NAME}_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(xcb::${COMPONENT_NAME} INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET xcb::${COMPONENT_NAME} PROPERTY IMPORTED_LIBNAME "${Xcb_${COMPONENT_NAME}_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
xcb::${COMPONENT_NAME}
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Xcb_${COMPONENT_NAME}_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Xcb_${COMPONENT_NAME}_INCLUDE_DIR}"
|
||||||
|
VERSION ${Xcb_${COMPONENT_NAME}_VERSION})
|
||||||
|
list(APPEND Xcb_COMPONENTS xcb::${COMPONENT_NAME})
|
||||||
|
list(APPEND Xcb_LIBRARIES ${Xcb_${COMPONENT_NAME}_LIBRARY})
|
||||||
|
list(APPEND Xcb_INCLUDE_DIRS ${Xcb_${COMPONENT_NAME}_INCLUDE_DIR})
|
||||||
|
if(NOT Xcb_VERSION)
|
||||||
|
set(Xcb_VERSION ${Xcb_${COMPONENT_NAME}_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
list(APPEND Xcb_COMPONENTS xcb::${COMPONENT_NAME})
|
||||||
|
set(Xcb_${COMPONENT_NAME}_FOUND TRUE)
|
||||||
|
get_target_property(component_location xcb::${COMPONENT_NAME} IMPORTED_LOCATION)
|
||||||
|
if(NOT component_location)
|
||||||
|
get_target_property(component_location xcb::${COMPONENT_NAME} IMPORTED_LIBNAME)
|
||||||
|
endif()
|
||||||
|
get_target_property(component_include_dir xcb::${COMPONENT_NAME} INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
list(APPEND Xcb_LIBRARIES ${component_location})
|
||||||
|
list(APPEND Xcb_INCLUDE_DIRS ${component_include_dir})
|
||||||
|
unset(component_location)
|
||||||
|
unset(component_include_dir)
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
foreach(component IN LISTS Xcb_FIND_COMPONENTS)
|
||||||
|
list(FIND _Xcb_DEFAULT_COMPONENTS "${component}" valid_component)
|
||||||
|
|
||||||
|
if(valid_component GREATER_EQUAL 0)
|
||||||
|
xcb_find_component(${valid_component})
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unknown XCB component required: ${component}.")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
list(REMOVE_DUPLICATES Xcb_INCLUDE_DIRS)
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Xcb
|
||||||
|
REQUIRED_VARS Xcb_LIBRARIES Xcb_INCLUDE_DIRS
|
||||||
|
VERSION_VAR Xcb_VERSION
|
||||||
|
HANDLE_COMPONENTS REASON_FAILURE_MESSAGE "Ensure xcb is installed on the system.")
|
||||||
|
|
||||||
|
unset(_Xcb_DEFAULT_COMPONENTS)
|
||||||
|
unset(_Xcb_HEADERS)
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Xcb PROPERTIES
|
||||||
|
URL "https://xcb.freedesktop.org"
|
||||||
|
DESCRIPTION
|
||||||
|
"A replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and extensibility."
|
||||||
|
)
|
105
cmake/finders/FindXkbcommon.cmake
Normal file
105
cmake/finders/FindXkbcommon.cmake
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
#[=======================================================================[.rst
|
||||||
|
FindXkbcommon
|
||||||
|
-------------
|
||||||
|
|
||||||
|
FindModule for xkbcommon and associated libraries
|
||||||
|
|
||||||
|
.. versionchanged:: 3.0
|
||||||
|
Updated FindModule to CMake standards
|
||||||
|
|
||||||
|
Imported Targets
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. versionadded:: 2.0
|
||||||
|
|
||||||
|
This module defines the :prop_tgt:`IMPORTED` target ``xkbcommon::xkbcommon``.
|
||||||
|
|
||||||
|
Result Variables
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This module sets the following variables:
|
||||||
|
|
||||||
|
``Xkbcommon_FOUND``
|
||||||
|
True, if all required components and the core library were found.
|
||||||
|
``Xkbcommon_VERSION``
|
||||||
|
Detected version of found xkbcommon libraries.
|
||||||
|
|
||||||
|
Cache variables
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
The following cache variables may also be set:
|
||||||
|
|
||||||
|
``Xkbcommon_LIBRARY``
|
||||||
|
Path to the library component of xkbcommon.
|
||||||
|
``Xkbcommon_INCLUDE_DIR``
|
||||||
|
Directory containing ``xkbcommon.h``.
|
||||||
|
|
||||||
|
#]=======================================================================]
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(PkgConfig QUIET)
|
||||||
|
if(PKG_CONFIG_FOUND)
|
||||||
|
pkg_search_module(PC_Xkbcommon QUIET xkbcommon)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_path(
|
||||||
|
Xkbcommon_INCLUDE_DIR
|
||||||
|
NAMES xkbcommon/xkbcommon.h
|
||||||
|
HINTS ${PC_Xkbcommon_INCLUDE_DIRS}
|
||||||
|
PATHS /usr/include /usr/local/include
|
||||||
|
PATH_SUFFIXES xkbcommon
|
||||||
|
DOC "xkbcommon include directory")
|
||||||
|
|
||||||
|
find_library(
|
||||||
|
Xkbcommon_LIBRARY
|
||||||
|
NAMES xkbcommon libxkbcommon
|
||||||
|
HINTS ${PC_Xkbcommon_LIBRARY_DIRS}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
DOC "xkbcommon location")
|
||||||
|
|
||||||
|
if(PC_Xkbcommon_VERSION VERSION_GREATER 0)
|
||||||
|
set(Xkbcommon_VERSION ${PC_Xkbcommon_VERSION})
|
||||||
|
else()
|
||||||
|
if(NOT Xkbcommon_FIND_QUIETLY)
|
||||||
|
message(AUTHOR_WARNING "Failed to find xkbcommon version.")
|
||||||
|
endif()
|
||||||
|
set(Xkbcommon_VERSION 0.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
Xkbcommon
|
||||||
|
REQUIRED_VARS Xkbcommon_LIBRARY Xkbcommon_INCLUDE_DIR
|
||||||
|
VERSION_VAR Xkbcommon_VERSION REASON_FAILURE_MESSAGE "Ensure that xkbcommon is installed on the system.")
|
||||||
|
mark_as_advanced(Xkbcommon_INCLUDE_DIR Xkbcommon_LIBRARY)
|
||||||
|
|
||||||
|
if(Xkbcommon_FOUND)
|
||||||
|
if(NOT TARGET xkbcommon::xkbcommon)
|
||||||
|
if(IS_ABSOLUTE "${Xkbcommon_LIBRARY}")
|
||||||
|
add_library(xkbcommon::xkbcommon UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET xkbcommon::xkbcommon PROPERTY IMPORTED_LOCATION "${Xkbcommon_LIBRARY}")
|
||||||
|
else()
|
||||||
|
add_library(xkbcommon::xkbcommon INTERFACE IMPORTED)
|
||||||
|
set_property(TARGET xkbcommon::xkbcommon PROPERTY IMPORTED_LIBNAME "${Xkbcommon_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
xkbcommon::xkbcommon
|
||||||
|
PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Xkbcommon_CFLAGS_OTHER}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Xkbcommon_INCLUDE_DIR}"
|
||||||
|
VERSION ${Xkbcommon_VERSION})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FeatureSummary)
|
||||||
|
set_package_properties(
|
||||||
|
Xkbcommon PROPERTIES
|
||||||
|
URL "https://www.xkbcommon.org"
|
||||||
|
DESCRIPTION
|
||||||
|
"A library for handling of keyboard descriptions, including loading them from disk, parsing them and handling their state."
|
||||||
|
)
|
90
cmake/linux/compilerconfig.cmake
Normal file
90
cmake/linux/compilerconfig.cmake
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
# OBS CMake Linux compiler configuration module
|
||||||
|
|
||||||
|
include_guard(GLOBAL)
|
||||||
|
|
||||||
|
include(ccache)
|
||||||
|
include(compiler_common)
|
||||||
|
|
||||||
|
option(ENABLE_COMPILER_TRACE "Enable Clang time-trace (requires Clang and Ninja)" OFF)
|
||||||
|
mark_as_advanced(ENABLE_COMPILER_TRACE)
|
||||||
|
|
||||||
|
# gcc options for C
|
||||||
|
set(_obs_gcc_c_options
|
||||||
|
# cmake-format: sortable
|
||||||
|
$<$<BOOL:${OBS_COMPILE_DEPRECATION_AS_WARNING}>:-Wno-error=deprecated-declarations>
|
||||||
|
-fno-strict-aliasing
|
||||||
|
-fopenmp-simd
|
||||||
|
-Wdeprecated-declarations
|
||||||
|
-Wempty-body
|
||||||
|
-Wenum-conversion
|
||||||
|
-Werror=return-type
|
||||||
|
-Wextra
|
||||||
|
-Wformat
|
||||||
|
-Wformat-security
|
||||||
|
-Wno-conversion
|
||||||
|
-Wno-float-conversion
|
||||||
|
-Wno-implicit-fallthrough
|
||||||
|
-Wno-missing-braces
|
||||||
|
-Wno-missing-field-initializers
|
||||||
|
-Wno-shadow
|
||||||
|
-Wno-sign-conversion
|
||||||
|
-Wno-trigraphs
|
||||||
|
-Wno-unknown-pragmas
|
||||||
|
-Wno-unused-function
|
||||||
|
-Wno-unused-label
|
||||||
|
-Wparentheses
|
||||||
|
-Wuninitialized
|
||||||
|
-Wunreachable-code
|
||||||
|
-Wunused-parameter
|
||||||
|
-Wunused-value
|
||||||
|
-Wunused-variable
|
||||||
|
-Wvla)
|
||||||
|
|
||||||
|
add_compile_options(
|
||||||
|
-fopenmp-simd
|
||||||
|
"$<$<COMPILE_LANG_AND_ID:C,GNU>:${_obs_gcc_c_options}>"
|
||||||
|
"$<$<COMPILE_LANG_AND_ID:C,GNU>:-Wint-conversion;-Wno-missing-prototypes;-Wno-strict-prototypes;-Wpointer-sign>"
|
||||||
|
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:${_obs_gcc_c_options}>"
|
||||||
|
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Winvalid-offsetof;-Wno-overloaded-virtual>"
|
||||||
|
"$<$<COMPILE_LANG_AND_ID:C,Clang>:${_obs_clang_c_options}>"
|
||||||
|
"$<$<COMPILE_LANG_AND_ID:CXX,Clang>:${_obs_clang_cxx_options}>")
|
||||||
|
|
||||||
|
# Add support for color diagnostics and CMake switch for warnings as errors to CMake < 3.24
|
||||||
|
if(CMAKE_VERSION VERSION_LESS 3.24.0)
|
||||||
|
add_compile_options($<$<COMPILE_LANG_AND_ID:C,Clang>:-fcolor-diagnostics>
|
||||||
|
$<$<COMPILE_LANG_AND_ID:CXX,Clang>:-fcolor-diagnostics>)
|
||||||
|
if(CMAKE_COMPILE_WARNING_AS_ERROR)
|
||||||
|
add_compile_options(-Werror)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(CMAKE_COLOR_DIAGNOSTICS ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU)
|
||||||
|
# * Disable false-positive warning in GCC 12.1.0 and later
|
||||||
|
# * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105562
|
||||||
|
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.1.0)
|
||||||
|
add_compile_options(-Wno-error=maybe-uninitialized)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# * Add warning for infinite recursion (added in GCC 12)
|
||||||
|
# * Also disable warnings for stringop-overflow due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106297
|
||||||
|
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0.0)
|
||||||
|
add_compile_options(-Winfinite-recursion -Wno-stringop-overflow)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
|
||||||
|
add_compile_options(-Wno-error=type-limits)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Enable compiler and build tracing (requires Ninja generator)
|
||||||
|
if(ENABLE_COMPILER_TRACE AND CMAKE_GENERATOR STREQUAL "Ninja")
|
||||||
|
add_compile_options($<$<COMPILE_LANG_AND_ID:C,Clang>:-ftime-trace> $<$<COMPILE_LANG_AND_ID:CXX,Clang>:-ftime-trace>)
|
||||||
|
else()
|
||||||
|
set(ENABLE_COMPILER_TRACE
|
||||||
|
OFF
|
||||||
|
CACHE STRING "Enable Clang time-trace (required Clang and Ninja)" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_compile_definitions($<$<CONFIG:DEBUG>:DEBUG> $<$<CONFIG:DEBUG>:_DEBUG> SIMDE_ENABLE_OPENMP)
|
69
cmake/linux/cpackconfig.cmake
Normal file
69
cmake/linux/cpackconfig.cmake
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
# OBS CMake Linux CPack configuration module
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0103
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include_guard(GLOBAL)
|
||||||
|
|
||||||
|
include(cpackconfig_common)
|
||||||
|
|
||||||
|
# Add GPLv2 license file to CPack
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/UI/data/license/gplv2.txt")
|
||||||
|
set(CPACK_PACKAGE_EXECUTABLES "obs")
|
||||||
|
|
||||||
|
if(ENABLE_RELEASE_BUILD)
|
||||||
|
set(CPACK_PACKAGE_VERSION "${OBS_VERSION_CANONICAL}")
|
||||||
|
else()
|
||||||
|
set(CPACK_PACKAGE_VERSION "${OBS_VERSION}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CPACK_SOURCE_PACKAGE_FILE_NAME "obs-studio-${CPACK_PACKAGE_VERSION}-sources")
|
||||||
|
set(CPACK_SOURCE_GENERATOR "TGZ")
|
||||||
|
set(CPACK_SOURCE_IGNORE_FILES "/.git" "/.*build.*" "/.ccache" "/.deps")
|
||||||
|
set(CPACK_ARCHIVE_THREADS 0)
|
||||||
|
|
||||||
|
if(OS_LINUX)
|
||||||
|
set(CPACK_GENERATOR "DEB")
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS TRUE)
|
||||||
|
set(CPACK_SET_DESTDIR TRUE)
|
||||||
|
set(CPACK_DEBIAN_DEBUGINFO_PACKAGE TRUE)
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${OBS_COMPANY_NAME}")
|
||||||
|
elseif(OS_FREEBSD)
|
||||||
|
set(CPACK_GENERATOR "FREEBSD")
|
||||||
|
|
||||||
|
set(CPACK_FREEBSD_PACKAGE_MAINTAINER "${OBS_COMPANY_NAME}")
|
||||||
|
set(CPACK_FREEBSD_PACKAGE_LICENSE "GPLv2")
|
||||||
|
|
||||||
|
set(CPACK_FREEBSD_PACKAGE_DEPS
|
||||||
|
# cmake-format: sortable
|
||||||
|
"audio/alsa-lib"
|
||||||
|
"audio/fdk-aac"
|
||||||
|
"audio/jack"
|
||||||
|
"audio/pulseaudio"
|
||||||
|
"audio/sndio"
|
||||||
|
"devel/jansson"
|
||||||
|
"devel/libpci"
|
||||||
|
"devel/libsysinfo"
|
||||||
|
"devel/nlohmann-json"
|
||||||
|
"devel/qt6-base"
|
||||||
|
"devel/qt6-svg"
|
||||||
|
"devel/swig"
|
||||||
|
"devel/websocketpp"
|
||||||
|
"ftp/curl"
|
||||||
|
"graphics/mesa-libs"
|
||||||
|
"graphics/qr-code-generator"
|
||||||
|
"lang/luajit"
|
||||||
|
"lang/python39"
|
||||||
|
"misc/e2fsprogs-libuuid"
|
||||||
|
"multimedia/ffmpeg"
|
||||||
|
"multimedia/librist"
|
||||||
|
"multimedia/pipewire"
|
||||||
|
"multimedia/v4l_compat"
|
||||||
|
"multimedia/vlc"
|
||||||
|
"net/asio"
|
||||||
|
"www/libdatachannel"
|
||||||
|
"www/srt")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(CPack)
|
41
cmake/linux/defaults.cmake
Normal file
41
cmake/linux/defaults.cmake
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
# OBS CMake Linux defaults module
|
||||||
|
|
||||||
|
include_guard(GLOBAL)
|
||||||
|
|
||||||
|
option(ENABLE_PULSEAUDIO "Enable PulseAudio support" ON)
|
||||||
|
option(ENABLE_WAYLAND "Enable building with support for Wayland" ON)
|
||||||
|
|
||||||
|
option(ENABLE_RELOCATABLE "Enable relocatable build" OFF)
|
||||||
|
|
||||||
|
# Set default installation directories
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
if(CMAKE_INSTALL_LIBDIR MATCHES "(CMAKE_SYSTEM_PROCESSOR)")
|
||||||
|
string(REPLACE "CMAKE_SYSTEM_PROCESSOR" "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ENABLE_RELOCATABLE)
|
||||||
|
set(OBS_EXECUTABLE_RPATH "$ORIGIN/;$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
set(OBS_LIBRARY_RPATH "$ORIGIN/")
|
||||||
|
set(OBS_MODULE_RPATH "$ORIGIN/;$ORIGIN/..")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(OBS_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/rundir")
|
||||||
|
set(OBS_EXECUTABLE_DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||||
|
set(OBS_INCLUDE_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/obs")
|
||||||
|
set(OBS_LIBRARY_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
||||||
|
set(OBS_PLUGIN_DESTINATION "${CMAKE_INSTALL_LIBDIR}/obs-plugins")
|
||||||
|
set(OBS_SCRIPT_PLUGIN_DESTINATION "${CMAKE_INSTALL_LIBDIR}/obs-scripting")
|
||||||
|
set(OBS_DATA_DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/obs")
|
||||||
|
set(OBS_CMAKE_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake")
|
||||||
|
|
||||||
|
# Set additional paths used by OBS for self-discovery
|
||||||
|
set(OBS_PLUGIN_PATH "${CMAKE_INSTALL_LIBDIR}/obs-plugins")
|
||||||
|
set(OBS_SCRIPT_PLUGIN_PATH "${CMAKE_INSTALL_LIBDIR}/obs-scripting")
|
||||||
|
set(OBS_DATA_PATH "${OBS_DATA_DESTINATION}")
|
||||||
|
set(OBS_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||||
|
|
||||||
|
# Enable find_package targets to become globally available targets
|
||||||
|
set(CMAKE_FIND_PACKAGE_TARGETS_GLOBAL TRUE)
|
||||||
|
|
||||||
|
include(cpackconfig)
|
291
cmake/linux/helpers.cmake
Normal file
291
cmake/linux/helpers.cmake
Normal file
|
@ -0,0 +1,291 @@
|
||||||
|
# OBS CMake Linux helper functions module
|
||||||
|
|
||||||
|
# cmake-format: off
|
||||||
|
# cmake-lint: disable=C0301
|
||||||
|
# cmake-format: on
|
||||||
|
|
||||||
|
include_guard(GLOBAL)
|
||||||
|
|
||||||
|
include(helpers_common)
|
||||||
|
|
||||||
|
# set_target_properties_obs: Set target properties for use in obs-studio
|
||||||
|
function(set_target_properties_obs target)
|
||||||
|
set(options "")
|
||||||
|
set(oneValueArgs "")
|
||||||
|
set(multiValueArgs PROPERTIES)
|
||||||
|
cmake_parse_arguments(PARSE_ARGV 0 _STPO "${options}" "${oneValueArgs}" "${multiValueArgs}")
|
||||||
|
|
||||||
|
message(DEBUG "Setting additional properties for target ${target}...")
|
||||||
|
|
||||||
|
while(_STPO_PROPERTIES)
|
||||||
|
list(POP_FRONT _STPO_PROPERTIES key value)
|
||||||
|
set_property(TARGET ${target} PROPERTY ${key} "${value}")
|
||||||
|
endwhile()
|
||||||
|
|
||||||
|
get_target_property(target_type ${target} TYPE)
|
||||||
|
|
||||||
|
if(target_type STREQUAL EXECUTABLE)
|
||||||
|
install(TARGETS ${target} RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}" COMPONENT Runtime)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_EXECUTABLE_DESTINATION}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$<TARGET_FILE:${target}>"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_EXECUTABLE_DESTINATION}"
|
||||||
|
COMMENT "Copy ${target} to binary directory"
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
if(target STREQUAL obs-studio)
|
||||||
|
get_property(obs_executables GLOBAL PROPERTY _OBS_EXECUTABLES)
|
||||||
|
get_property(obs_modules GLOBAL PROPERTY OBS_MODULES_ENABLED)
|
||||||
|
add_dependencies(${target} ${obs_executables} ${obs_modules})
|
||||||
|
|
||||||
|
target_add_resource(${target} "${CMAKE_CURRENT_SOURCE_DIR}/../AUTHORS"
|
||||||
|
"${OBS_DATA_DESTINATION}/obs-studio/authors")
|
||||||
|
elseif(target STREQUAL browser-helper)
|
||||||
|
set_property(GLOBAL APPEND PROPERTY _OBS_EXECUTABLES ${target})
|
||||||
|
return()
|
||||||
|
else()
|
||||||
|
set_property(GLOBAL APPEND PROPERTY _OBS_EXECUTABLES ${target})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(${target} PROPERTIES BUILD_RPATH "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_LIBRARY_DESTINATION}"
|
||||||
|
INSTALL_RPATH "${OBS_EXECUTABLE_RPATH}")
|
||||||
|
elseif(target_type STREQUAL SHARED_LIBRARY)
|
||||||
|
set_target_properties(
|
||||||
|
${target}
|
||||||
|
PROPERTIES VERSION ${OBS_VERSION_MAJOR}
|
||||||
|
SOVERSION ${OBS_VERSION_CANONICAL}
|
||||||
|
BUILD_RPATH "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_LIBRARY_DESTINATION}"
|
||||||
|
INSTALL_RPATH "${OBS_LIBRARY_RPATH}")
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${target}
|
||||||
|
LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}" COMPONENT Runtime
|
||||||
|
PUBLIC_HEADER
|
||||||
|
DESTINATION "${OBS_INCLUDE_DESTINATION}"
|
||||||
|
COMPONENT Development
|
||||||
|
EXCLUDE_FROM_ALL)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_LIBRARY_DESTINATION}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$<TARGET_FILE:${target}>"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_LIBRARY_DESTINATION}/"
|
||||||
|
COMMENT "Copy ${target} to library directory (${OBS_LIBRARY_DESTINATION})"
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
if(target STREQUAL libobs OR target STREQUAL obs-frontend-api)
|
||||||
|
install(
|
||||||
|
FILES "$<TARGET_FILE_DIR:${target}>/$<TARGET_FILE_PREFIX:${target}>$<TARGET_FILE_BASE_NAME:${target}>.so.0"
|
||||||
|
DESTINATION "${OBS_LIBRARY_DESTINATION}")
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND
|
||||||
|
"${CMAKE_COMMAND}" -E create_symlink
|
||||||
|
"$<TARGET_FILE_PREFIX:${target}>$<TARGET_FILE_BASE_NAME:${target}>.so.${OBS_VERSION_MAJOR}"
|
||||||
|
"$<TARGET_FILE_PREFIX:${target}>$<TARGET_FILE_BASE_NAME:${target}>.so.0"
|
||||||
|
COMMAND
|
||||||
|
"${CMAKE_COMMAND}" -E copy_if_different
|
||||||
|
"$<TARGET_FILE_DIR:${target}>/$<TARGET_FILE_PREFIX:${target}>$<TARGET_FILE_BASE_NAME:${target}>.so.0"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_LIBRARY_DESTINATION}"
|
||||||
|
COMMENT "Create symlink for legacy ${target}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
elseif(target_type STREQUAL MODULE_LIBRARY)
|
||||||
|
if(target STREQUAL obs-browser)
|
||||||
|
set_target_properties(${target} PROPERTIES VERSION 0 SOVERSION ${OBS_VERSION_CANONICAL})
|
||||||
|
else()
|
||||||
|
set_target_properties(
|
||||||
|
${target}
|
||||||
|
PROPERTIES VERSION 0
|
||||||
|
SOVERSION ${OBS_VERSION_CANONICAL}
|
||||||
|
BUILD_RPATH "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_LIBRARY_DESTINATION}"
|
||||||
|
INSTALL_RPATH "${OBS_MODULE_RPATH}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(${target} STREQUAL obspython OR ${target} STREQUAL obslua)
|
||||||
|
set(plugin_destination "${OBS_SCRIPT_PLUGIN_DESTINATION}")
|
||||||
|
set_property(TARGET ${target} PROPERTY INSTALL_RPATH "$ORIGIN/;$ORIGIN/..")
|
||||||
|
else()
|
||||||
|
set(plugin_destination "${OBS_PLUGIN_DESTINATION}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${target}
|
||||||
|
LIBRARY DESTINATION "${plugin_destination}"
|
||||||
|
COMPONENT Runtime
|
||||||
|
NAMELINK_COMPONENT Development)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${OBS_OUTPUT_DIR}/$<CONFIG>/${plugin_destination}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$<TARGET_FILE:${target}>"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${plugin_destination}"
|
||||||
|
COMMENT "Copy ${target} to plugin directory (${plugin_destination})"
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
if(${target} STREQUAL obspython)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_SCRIPT_PLUGIN_DESTINATION}/"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "$<TARGET_FILE_DIR:obspython>/obspython.py"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_SCRIPT_PLUGIN_DESTINATION}/"
|
||||||
|
COMMENT "Add obspython import module")
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "$<TARGET_FILE_DIR:obspython>/obspython.py"
|
||||||
|
DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}"
|
||||||
|
COMPONENT Runtime)
|
||||||
|
elseif(${target} STREQUAL obs-browser)
|
||||||
|
message(DEBUG "Add Chromium Embedded Framework to project for obs-browser plugin...")
|
||||||
|
if(TARGET CEF::Library)
|
||||||
|
get_target_property(imported_location CEF::Library IMPORTED_LOCATION_RELEASE)
|
||||||
|
|
||||||
|
if(imported_location)
|
||||||
|
cmake_path(GET imported_location PARENT_PATH cef_location)
|
||||||
|
cmake_path(GET cef_location PARENT_PATH cef_root_location)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_PLUGIN_DESTINATION}/"
|
||||||
|
COMMAND
|
||||||
|
"${CMAKE_COMMAND}" -E copy_if_different "${imported_location}" "${cef_location}/chrome-sandbox"
|
||||||
|
"${cef_location}/libEGL.so" "${cef_location}/libGLESv2.so" "${cef_location}/libvk_swiftshader.so"
|
||||||
|
"${cef_location}/libvulkan.so.1" "${cef_location}/snapshot_blob.bin"
|
||||||
|
"${cef_location}/v8_context_snapshot.bin" "${cef_location}/vk_swiftshader_icd.json"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_PLUGIN_DESTINATION}/"
|
||||||
|
COMMAND
|
||||||
|
"${CMAKE_COMMAND}" -E copy_if_different "${cef_root_location}/Resources/chrome_100_percent.pak"
|
||||||
|
"${cef_root_location}/Resources/chrome_200_percent.pak" "${cef_root_location}/Resources/icudtl.dat"
|
||||||
|
"${cef_root_location}/Resources/resources.pak" "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_PLUGIN_DESTINATION}/"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${cef_root_location}/Resources/locales"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_PLUGIN_DESTINATION}/locales"
|
||||||
|
COMMENT "Add Chromium Embedded Framwork to library directory")
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "${imported_location}"
|
||||||
|
"${cef_location}/chrome-sandbox"
|
||||||
|
"${cef_location}/libEGL.so"
|
||||||
|
"${cef_location}/libGLESv2.so"
|
||||||
|
"${cef_location}/libvk_swiftshader.so"
|
||||||
|
"${cef_location}/libvulkan.so.1"
|
||||||
|
"${cef_location}/snapshot_blob.bin"
|
||||||
|
"${cef_location}/v8_context_snapshot.bin"
|
||||||
|
"${cef_location}/vk_swiftshader_icd.json"
|
||||||
|
"${cef_root_location}/Resources/chrome_100_percent.pak"
|
||||||
|
"${cef_root_location}/Resources/chrome_200_percent.pak"
|
||||||
|
"${cef_root_location}/Resources/icudtl.dat"
|
||||||
|
"${cef_root_location}/Resources/resources.pak"
|
||||||
|
DESTINATION "${OBS_PLUGIN_DESTINATION}"
|
||||||
|
COMPONENT Runtime)
|
||||||
|
|
||||||
|
install(
|
||||||
|
DIRECTORY "${cef_root_location}/Resources/locales"
|
||||||
|
DESTINATION "${OBS_PLUGIN_DESTINATION}"
|
||||||
|
USE_SOURCE_PERMISSIONS
|
||||||
|
COMPONENT Runtime)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(GLOBAL APPEND PROPERTY OBS_MODULES_ENABLED ${target})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_install_resources(${target})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Helper function to add resources into bundle
|
||||||
|
function(target_install_resources target)
|
||||||
|
message(DEBUG "Installing resources for target ${target}...")
|
||||||
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/data")
|
||||||
|
file(GLOB_RECURSE data_files "${CMAKE_CURRENT_SOURCE_DIR}/data/*")
|
||||||
|
foreach(data_file IN LISTS data_files)
|
||||||
|
cmake_path(RELATIVE_PATH data_file BASE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/data/" OUTPUT_VARIABLE
|
||||||
|
relative_path)
|
||||||
|
cmake_path(GET relative_path PARENT_PATH relative_path)
|
||||||
|
target_sources(${target} PRIVATE "${data_file}")
|
||||||
|
source_group("Resources/${relative_path}" FILES "${data_file}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
get_property(obs_module_list GLOBAL PROPERTY OBS_MODULES_ENABLED)
|
||||||
|
if(target IN_LIST obs_module_list)
|
||||||
|
set(target_destination "${OBS_DATA_DESTINATION}/obs-plugins/${target}")
|
||||||
|
elseif(target STREQUAL obs)
|
||||||
|
set(target_destination "${OBS_DATA_DESTINATION}/obs-studio")
|
||||||
|
else()
|
||||||
|
set(target_destination "${OBS_DATA_DESTINATION}/${target}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(
|
||||||
|
DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/data/"
|
||||||
|
DESTINATION "${target_destination}"
|
||||||
|
USE_SOURCE_PERMISSIONS
|
||||||
|
COMPONENT Runtime)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${OBS_OUTPUT_DIR}/$<CONFIG>/${target_destination}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/data"
|
||||||
|
"${OBS_OUTPUT_DIR}/$<CONFIG>/${target_destination}"
|
||||||
|
COMMENT "Copy ${target} resources to data directory (${target_destination})"
|
||||||
|
VERBATIM)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Helper function to add a specific resource to a bundle
|
||||||
|
function(target_add_resource target resource)
|
||||||
|
get_property(obs_module_list GLOBAL PROPERTY OBS_MODULES_ENABLED)
|
||||||
|
if(${ARGN})
|
||||||
|
set(target_destination "${ARGN}")
|
||||||
|
elseif(${target} IN_LIST obs_module_list)
|
||||||
|
set(target_destination "${OBS_DATA_DESTINATION}/obs-plugins/${target}")
|
||||||
|
elseif(target STREQUAL obs)
|
||||||
|
set(target_destination "${OBS_DATA_DESTINATION}/obs-studio")
|
||||||
|
else()
|
||||||
|
set(target_destination "${OBS_DATA_DESTINATION}/${target}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
message(DEBUG "Add resource ${resource} to target ${target} at destination ${target_destination}...")
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "${resource}"
|
||||||
|
DESTINATION "${target_destination}"
|
||||||
|
COMPONENT Runtime)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${target}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${OBS_OUTPUT_DIR}/$<CONFIG>/${target_destination}/"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy "${resource}" "${OBS_OUTPUT_DIR}/$<CONFIG>/${target_destination}/"
|
||||||
|
COMMENT "Copy ${target} resource ${resource} to library directory (${target_destination})"
|
||||||
|
VERBATIM)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# target_export: Helper function to export target as CMake package
|
||||||
|
function(target_export target)
|
||||||
|
set(exclude_variant "")
|
||||||
|
_target_export(${target})
|
||||||
|
|
||||||
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux/${target}.pc.in")
|
||||||
|
message(DEBUG "Generating pkgconfig file ${target}.pc.in...")
|
||||||
|
|
||||||
|
install(CODE "set(OBS_VERSION_CANONICAL ${OBS_VERSION_CANONICAL})" COMPONENT Development)
|
||||||
|
install(CODE "set(CMAKE_C_STANDARD ${CMAKE_C_STANDARD})" COMPONENT Development)
|
||||||
|
install(
|
||||||
|
CODE "configure_file(\"${CMAKE_CURRENT_SOURCE_DIR}/cmake/linux/${target}.pc.in\" \"${CMAKE_CURRENT_BINARY_DIR}/${target}.pc\" @ONLY)"
|
||||||
|
COMPONENT Development)
|
||||||
|
|
||||||
|
install(
|
||||||
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}.pc"
|
||||||
|
DESTINATION "${OBS_LIBRARY_DESTINATION}/pkgconfig"
|
||||||
|
COMPONENT Development)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
11
cmake/linux/toolchain-aarch64-clang.cmake
Normal file
11
cmake/linux/toolchain-aarch64-clang.cmake
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR arm64)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER clang)
|
||||||
|
set(CMAKE_C_COMPILER_TARGET aarch64-linux-gnu)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_COMPILER clang++)
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET aarch64-linux-gnu)
|
||||||
|
|
||||||
|
set(CMAKE_ASM_COMPILER clang)
|
||||||
|
set(CMAKE_ASM_COMPILER_TARGET aarch64-linux-gnu)
|
18
cmake/linux/toolchain-aarch64-gcc.cmake
Normal file
18
cmake/linux/toolchain-aarch64-gcc.cmake
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR arm64)
|
||||||
|
|
||||||
|
if(CROSS STREQUAL "")
|
||||||
|
set(CROSS aarch64-linux-gnu-)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_C_COMPILER)
|
||||||
|
set(CMAKE_C_COMPILER ${CROSS}gcc)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_CXX_COMPILER)
|
||||||
|
set(CMAKE_CXX_COMPILER ${CROSS}g++)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_ASM_COMPILER)
|
||||||
|
set(CMAKE_ASM_COMPILER ${CROSS}as)
|
||||||
|
endif()
|
18
cmake/linux/toolchain-x86_64-gcc.cmake
Normal file
18
cmake/linux/toolchain-x86_64-gcc.cmake
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||||
|
|
||||||
|
if(CROSS STREQUAL "")
|
||||||
|
set(CROSS x86_64-linux-gnu-)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_C_COMPILER)
|
||||||
|
set(CMAKE_C_COMPILER ${CROSS}gcc)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_CXX_COMPILER)
|
||||||
|
set(CMAKE_CXX_COMPILER ${CROSS}g++)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT CMAKE_ASM_COMPILER)
|
||||||
|
set(CMAKE_ASM_COMPILER ${CROSS}as)
|
||||||
|
endif()
|
Loading…
Reference in a new issue