committed by
Seth Hillbrand
7 changed files with 224 additions and 421 deletions
-
4CMakeLists.txt
-
230cmake/FindCairo.cmake
-
103cmake/FindFontconfig.cmake
-
87cmake/FindHarfBuzz.cmake
-
197cmake/FindPixman.cmake
-
6common/CMakeLists.txt
-
18common/gal/CMakeLists.txt
@ -1,103 +0,0 @@ |
|||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
|||
# file Copyright.txt or https://cmake.org/licensing for details. |
|||
|
|||
#[=======================================================================[.rst: |
|||
FindFontconfig |
|||
-------------- |
|||
|
|||
.. versionadded:: 3.14 |
|||
|
|||
Find Fontconfig headers and library. |
|||
|
|||
Imported Targets |
|||
^^^^^^^^^^^^^^^^ |
|||
|
|||
``Fontconfig::Fontconfig`` |
|||
The Fontconfig library, if found. |
|||
|
|||
Result Variables |
|||
^^^^^^^^^^^^^^^^ |
|||
|
|||
This will define the following variables in your project: |
|||
|
|||
``Fontconfig_FOUND`` |
|||
true if (the requested version of) Fontconfig is available. |
|||
``Fontconfig_VERSION`` |
|||
the version of Fontconfig. |
|||
``Fontconfig_LIBRARIES`` |
|||
the libraries to link against to use Fontconfig. |
|||
``Fontconfig_INCLUDE_DIRS`` |
|||
where to find the Fontconfig headers. |
|||
``Fontconfig_COMPILE_OPTIONS`` |
|||
this should be passed to target_compile_options(), if the |
|||
target is not used for linking |
|||
|
|||
#]=======================================================================] |
|||
|
|||
|
|||
# use pkg-config to get the directories and then use these values |
|||
# in the FIND_PATH() and FIND_LIBRARY() calls |
|||
find_package(PkgConfig QUIET) |
|||
pkg_check_modules(PKG_FONTCONFIG QUIET fontconfig) |
|||
set(Fontconfig_COMPILE_OPTIONS ${PKG_FONTCONFIG_CFLAGS_OTHER}) |
|||
set(Fontconfig_VERSION ${PKG_FONTCONFIG_VERSION}) |
|||
|
|||
find_path( Fontconfig_INCLUDE_DIR |
|||
NAMES |
|||
fontconfig/fontconfig.h |
|||
HINTS |
|||
${PKG_FONTCONFIG_INCLUDE_DIRS} |
|||
/usr/X11/include |
|||
) |
|||
|
|||
find_library( Fontconfig_LIBRARY |
|||
NAMES |
|||
fontconfig |
|||
PATHS |
|||
${PKG_FONTCONFIG_LIBRARY_DIRS} |
|||
) |
|||
|
|||
if (Fontconfig_INCLUDE_DIR AND NOT Fontconfig_VERSION) |
|||
file(STRINGS ${Fontconfig_INCLUDE_DIR}/fontconfig/fontconfig.h _contents REGEX "^#define[ \t]+FC_[A-Z]+[ \t]+[0-9]+$") |
|||
unset(Fontconfig_VERSION) |
|||
foreach(VPART MAJOR MINOR REVISION) |
|||
foreach(VLINE ${_contents}) |
|||
if(VLINE MATCHES "^#define[\t ]+FC_${VPART}[\t ]+([0-9]+)$") |
|||
set(Fontconfig_VERSION_PART "${CMAKE_MATCH_1}") |
|||
if(Fontconfig_VERSION) |
|||
string(APPEND Fontconfig_VERSION ".${Fontconfig_VERSION_PART}") |
|||
else() |
|||
set(Fontconfig_VERSION "${Fontconfig_VERSION_PART}") |
|||
endif() |
|||
endif() |
|||
endforeach() |
|||
endforeach() |
|||
endif () |
|||
|
|||
include(FindPackageHandleStandardArgs) |
|||
find_package_handle_standard_args(Fontconfig |
|||
FOUND_VAR |
|||
Fontconfig_FOUND |
|||
REQUIRED_VARS |
|||
Fontconfig_LIBRARY |
|||
Fontconfig_INCLUDE_DIR |
|||
VERSION_VAR |
|||
Fontconfig_VERSION |
|||
) |
|||
|
|||
|
|||
if(Fontconfig_FOUND AND NOT TARGET Fontconfig::Fontconfig) |
|||
add_library(Fontconfig::Fontconfig UNKNOWN IMPORTED) |
|||
set_target_properties(Fontconfig::Fontconfig PROPERTIES |
|||
IMPORTED_LOCATION "${Fontconfig_LIBRARY}" |
|||
INTERFACE_COMPILE_OPTIONS "${Fontconfig_COMPILE_OPTIONS}" |
|||
INTERFACE_INCLUDE_DIRECTORIES "${Fontconfig_INCLUDE_DIR}" |
|||
) |
|||
endif() |
|||
|
|||
mark_as_advanced(Fontconfig_LIBRARY Fontconfig_INCLUDE_DIR) |
|||
|
|||
if(Fontconfig_FOUND) |
|||
set(Fontconfig_LIBRARIES ${Fontconfig_LIBRARY}) |
|||
set(Fontconfig_INCLUDE_DIRS ${Fontconfig_INCLUDE_DIR}) |
|||
endif() |
|||
@ -1,148 +1,109 @@ |
|||
# - Try to find the PIXMAN library |
|||
# Once done this will define |
|||
# |
|||
# PIXMAN_ROOT_DIR - Set this variable to the root installation of PIXMAN |
|||
# - Try to find the Pixman library |
|||
# |
|||
# Read-Only variables: |
|||
# PIXMAN_FOUND - system has the PIXMAN library |
|||
# PIXMAN_INCLUDE_DIR - the PIXMAN include directory |
|||
# PIXMAN_LIBRARIES - The libraries needed to use PIXMAN |
|||
# PIXMAN_VERSION - This is set to $major.$minor.$revision (eg. 0.9.8) |
|||
# Pixman_FOUND - system has the Pixman library |
|||
# Pixman_INCLUDE_DIR - the Pixman include directory |
|||
# Pixman_LIBRARIES - The libraries needed to use Pixman |
|||
# Pixman_VERSION - This is set to $major.$minor.$revision (eg. 0.9.8) |
|||
|
|||
#============================================================================= |
|||
# ============================================================================= |
|||
# Copyright 2012 Dmitry Baryshnikov <polimax at mail dot ru> |
|||
# Copyright 2017 Simon Richter <Simon.Richter at hogyros dot de> |
|||
# |
|||
# Copyright 2023 Nimish Telang <nimish@telang.net> |
|||
|
|||
# Distributed under the OSI-approved BSD License (the "License"); |
|||
# see accompanying file Copyright.txt for details. |
|||
# |
|||
# This software is distributed WITHOUT ANY WARRANTY; without even the |
|||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|||
# See the License for more information. |
|||
#============================================================================= |
|||
# ============================================================================= |
|||
# (To distribute this file outside of CMake, substitute the full |
|||
# License text for the above reference.) |
|||
# License text for the above reference.) |
|||
|
|||
find_package(PkgConfig) |
|||
cmake_policy(SET CMP0074 NEW) |
|||
|
|||
if(PKG_CONFIG_FOUND) |
|||
pkg_check_modules(_PIXMAN pixman-1) |
|||
endif (PKG_CONFIG_FOUND) |
|||
|
|||
SET(_PIXMAN_ROOT_HINTS |
|||
$ENV{PIXMAN} |
|||
${PIXMAN_ROOT_DIR} |
|||
) |
|||
SET(_PIXMAN_ROOT_PATHS |
|||
$ENV{PIXMAN}/src |
|||
/usr |
|||
/usr/local |
|||
) |
|||
SET(_PIXMAN_ROOT_HINTS_AND_PATHS |
|||
HINTS ${_PIXMAN_ROOT_HINTS} |
|||
PATHS ${_PIXMAN_ROOT_PATHS} |
|||
) |
|||
message(CHECK_START "Looking for pixman using pkg-config") |
|||
pkg_check_modules(Pixman pixman-1 IMPORTED_TARGET) |
|||
if (Pixman_FOUND) |
|||
message(CHECK_PASS "found by pkg-config") |
|||
else() |
|||
message(CHECK_FAIL "not found by pkg-config") |
|||
endif() |
|||
endif() |
|||
|
|||
FIND_PATH(PIXMAN_INCLUDE_DIR |
|||
NAMES |
|||
pixman.h |
|||
HINTS |
|||
${_PIXMAN_INCLUDEDIR} |
|||
${_PIXMAN_ROOT_HINTS_AND_PATHS} |
|||
message(CHECK_START "Searching for pixman library") |
|||
FIND_LIBRARY(Pixman_LIBRARIES |
|||
pixman |
|||
pixman-1 |
|||
pixman-1.0 |
|||
PATH_SUFFIXES |
|||
include |
|||
"include/pixman-1" |
|||
lib |
|||
VC |
|||
lib/VC |
|||
) |
|||
if (Pixman_LIBRARIES_FOUND) |
|||
message(CHECK_PASS "found ${Pixman_LIBRARIES}") |
|||
else() |
|||
message(CHECK_FAIL "not found") |
|||
endif() |
|||
|
|||
IF(NOT PKGCONFIG_FOUND AND WIN32 AND NOT CYGWIN) |
|||
# MINGW should go here too |
|||
IF(MSVC) |
|||
# Implementation details: |
|||
# We are using the libraries located in the VC subdir instead of the parent directory eventhough : |
|||
FIND_LIBRARY(PIXMAN |
|||
NAMES |
|||
pixman-1 |
|||
${_PIXMAN_ROOT_HINTS_AND_PATHS} |
|||
PATH_SUFFIXES |
|||
"lib" |
|||
"VC" |
|||
"lib/VC" |
|||
) |
|||
|
|||
MARK_AS_ADVANCED(PIXMAN) |
|||
set( PIXMAN_LIBRARIES ${PIXMAN}) |
|||
ELSEIF(MINGW) |
|||
# same player, for MingW |
|||
FIND_LIBRARY(PIXMAN |
|||
NAMES |
|||
pixman-1 |
|||
${_PIXMAN_ROOT_HINTS_AND_PATHS} |
|||
PATH_SUFFIXES |
|||
"lib" |
|||
"lib/MinGW" |
|||
) |
|||
|
|||
MARK_AS_ADVANCED(PIXMAN) |
|||
set( PIXMAN_LIBRARIES ${PIXMAN}) |
|||
ELSE(MSVC) |
|||
# Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues: |
|||
FIND_LIBRARY(PIXMAN |
|||
NAMES |
|||
pixman-1 |
|||
HINTS |
|||
${_PIXMAN_LIBDIR} |
|||
${_PIXMAN_ROOT_HINTS_AND_PATHS} |
|||
PATH_SUFFIXES |
|||
lib |
|||
) |
|||
|
|||
MARK_AS_ADVANCED(PIXMAN) |
|||
set( PIXMAN_LIBRARIES ${PIXMAN} ) |
|||
ENDIF(MSVC) |
|||
ELSE() |
|||
|
|||
FIND_LIBRARY(PIXMAN_LIBRARY |
|||
NAMES |
|||
pixman-1 |
|||
HINTS |
|||
${_PIXMAN_LIBDIR} |
|||
${_PIXMAN_ROOT_HINTS_AND_PATHS} |
|||
PATH_SUFFIXES |
|||
"lib" |
|||
"local/lib" |
|||
) |
|||
|
|||
MARK_AS_ADVANCED(PIXMAN_LIBRARY) |
|||
|
|||
# compat defines |
|||
SET(PIXMAN_LIBRARIES ${PIXMAN_LIBRARY}) |
|||
|
|||
ENDIF() |
|||
|
|||
#message( STATUS "Pixman_FIND_VERSION=${Pixman_FIND_VERSION}.") |
|||
#message( STATUS "PIXMAN_INCLUDE_DIR=${PIXMAN_INCLUDE_DIR}.") |
|||
|
|||
# Fetch version from pixman-version.h if a version was requested by find_package() |
|||
if(PIXMAN_INCLUDE_DIR AND Pixman_FIND_VERSION) |
|||
file(READ "${PIXMAN_INCLUDE_DIR}/pixman-version.h" _PIXMAN_VERSION_H_CONTENTS) |
|||
string(REGEX REPLACE "^(.*\n)?#define[ \t]+PIXMAN_VERSION_MAJOR[ \t]+([0-9]+).*" |
|||
"\\2" PIXMAN_VERSION_MAJOR ${_PIXMAN_VERSION_H_CONTENTS}) |
|||
string(REGEX REPLACE "^(.*\n)?#define[ \t]+PIXMAN_VERSION_MINOR[ \t]+([0-9]+).*" |
|||
"\\2" PIXMAN_VERSION_MINOR ${_PIXMAN_VERSION_H_CONTENTS}) |
|||
string(REGEX REPLACE "^(.*\n)?#define[ \t]+PIXMAN_VERSION_MICRO[ \t]+([0-9]+).*" |
|||
"\\2" PIXMAN_VERSION_MICRO ${_PIXMAN_VERSION_H_CONTENTS}) |
|||
set(PIXMAN_VERSION ${PIXMAN_VERSION_MAJOR}.${PIXMAN_VERSION_MINOR}.${PIXMAN_VERSION_MICRO} |
|||
message(CHECK_START "Looking for pixman include dirs") |
|||
find_path(Pixman_INCLUDE_DIRS |
|||
pixman-version.h |
|||
PATH_SUFFIXES |
|||
include |
|||
include/pixman-1 |
|||
) |
|||
if(Pixman_INCLUDE_DIRS) |
|||
message(CHECK_PASS "Found: ${Pixman_INCLUDE_DIRS}") |
|||
message(CHECK_START "Extracting Pixman version") |
|||
find_file(Pixman_VERSION_H pixman-version.h HINTS ${Pixman_INCLUDE_DIRS}) |
|||
if(Pixman_VERSION_H_FOUND) |
|||
file(READ "${Pixman_VERSION_H}" _Pixman_VERSION_H_CONTENTS) |
|||
string(REGEX REPLACE "^(.*\n)?#define[ \t]+CAIRO_VERSION_MAJOR[ \t]+([0-9]+).*" |
|||
"\\2" Pixman_VERSION_MAJOR ${_Pixman_VERSION_H_CONTENTS}) |
|||
string(REGEX REPLACE "^(.*\n)?#define[ \t]+CAIRO_VERSION_MINOR[ \t]+([0-9]+).*" |
|||
"\\2" Pixman_VERSION_MINOR ${_Pixman_VERSION_H_CONTENTS}) |
|||
string(REGEX REPLACE "^(.*\n)?#define[ \t]+CAIRO_VERSION_MICRO[ \t]+([0-9]+).*" |
|||
"\\2" Pixman_VERSION_MICRO ${_Pixman_VERSION_H_CONTENTS}) |
|||
set(Pixman_VERSION ${Pixman_VERSION_MAJOR}.${Pixman_VERSION_MINOR}.${Pixman_VERSION_MICRO} |
|||
CACHE INTERNAL "The version number for Pixman libraries") |
|||
endif() |
|||
if (Pixman_VERSION) |
|||
message(CHECK_PASS "found Pixman version ${Pixman_VERSION}") |
|||
else() |
|||
message(CHECK_FAIL "failed") |
|||
endif() |
|||
|
|||
else() |
|||
message(CHECK_FAIL "none found") |
|||
endif() |
|||
|
|||
include(FindPackageHandleStandardArgs) |
|||
|
|||
find_package_handle_standard_args(Pixman |
|||
REQUIRED_VARS |
|||
PIXMAN_LIBRARIES |
|||
PIXMAN_INCLUDE_DIR |
|||
Pixman_LIBRARIES |
|||
Pixman_INCLUDE_DIRS |
|||
VERSION_VAR |
|||
PIXMAN_VERSION |
|||
Pixman_VERSION |
|||
HANDLE_VERSION_RANGE |
|||
) |
|||
|
|||
MARK_AS_ADVANCED(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARIES) |
|||
MARK_AS_ADVANCED(Pixman_INCLUDE_DIRS Pixman_LIBRARIES) |
|||
|
|||
if(Pixman_FOUND AND NOT TARGET Pixman::Pixman) |
|||
if(TARGET PkgConfig::Pixman) |
|||
add_library(Pixman::Pixman ALIAS PkgConfig::Pixman) |
|||
else() |
|||
add_library(Pixman::Pixman IMPORTED SHARED) |
|||
target_include_directories(Pixman::Pixman INTERFACE ${Pixman_INCLUDE_DIRS}) |
|||
target_link_libraries(Pixman::Pixman INTERFACE ${Pixman_LIBRARIES}) |
|||
set_target_properties(Pixman::Pixman PROPERTIES |
|||
IMPORTED_LOCATION ${Pixman_LIBRARIES} |
|||
) |
|||
endif() |
|||
endif() |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue