Browse Source
Revert "Modernizes search for Cairo, Fontconfig, Freetype, HarfBuzz and Pixman"
Revert "Modernizes search for Cairo, Fontconfig, Freetype, HarfBuzz and Pixman"
This reverts commit 9efd24a69d.
Breaks MSW builds, so this is a non-starter for now
newinvert
7 changed files with 421 additions and 224 deletions
-
4CMakeLists.txt
-
230cmake/FindCairo.cmake
-
103cmake/FindFontconfig.cmake
-
87cmake/FindHarfBuzz.cmake
-
197cmake/FindPixman.cmake
-
6common/CMakeLists.txt
-
18common/gal/CMakeLists.txt
@ -0,0 +1,103 @@ |
|||
# 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,109 +1,148 @@ |
|||
# - Try to find the Pixman library |
|||
# - Try to find the PIXMAN library |
|||
# Once done this will define |
|||
# |
|||
# PIXMAN_ROOT_DIR - Set this variable to the root installation of PIXMAN |
|||
# |
|||
# 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) |
|||
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() |
|||
pkg_check_modules(_PIXMAN pixman-1) |
|||
endif (PKG_CONFIG_FOUND) |
|||
|
|||
message(CHECK_START "Searching for pixman library") |
|||
FIND_LIBRARY(Pixman_LIBRARIES |
|||
pixman |
|||
pixman-1 |
|||
pixman-1.0 |
|||
PATH_SUFFIXES |
|||
lib |
|||
VC |
|||
lib/VC |
|||
) |
|||
if (Pixman_LIBRARIES_FOUND) |
|||
message(CHECK_PASS "found ${Pixman_LIBRARIES}") |
|||
else() |
|||
message(CHECK_FAIL "not found") |
|||
endif() |
|||
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 include dirs") |
|||
find_path(Pixman_INCLUDE_DIRS |
|||
pixman-version.h |
|||
FIND_PATH(PIXMAN_INCLUDE_DIR |
|||
NAMES |
|||
pixman.h |
|||
HINTS |
|||
${_PIXMAN_INCLUDEDIR} |
|||
${_PIXMAN_ROOT_HINTS_AND_PATHS} |
|||
PATH_SUFFIXES |
|||
include |
|||
include/pixman-1 |
|||
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} |
|||
|
|||
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} |
|||
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_DIRS |
|||
PIXMAN_LIBRARIES |
|||
PIXMAN_INCLUDE_DIR |
|||
VERSION_VAR |
|||
Pixman_VERSION |
|||
HANDLE_VERSION_RANGE |
|||
PIXMAN_VERSION |
|||
) |
|||
|
|||
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() |
|||
MARK_AS_ADVANCED(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARIES) |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue