[CMake] Add Fontconfig::Fontconfig target
authordon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Feb 2020 14:42:31 +0000 (14:42 +0000)
committerdon.olmstead@sony.com <don.olmstead@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Feb 2020 14:42:31 +0000 (14:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=207730

Reviewed by Adrian Perez de Castro.

.:

Redo the Fontconfig find module to export a target.

* Source/cmake/FindFontconfig.cmake:

Source/WebCore:

Use the Fontconfig::Fontconfig target.

* platform/FreeType.cmake:

Tools:

Use the Fontconfig::Fontconfig target.

* WebKitTestRunner/PlatformGTK.cmake:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256601 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
Source/WebCore/ChangeLog
Source/WebCore/platform/FreeType.cmake
Source/cmake/FindFontconfig.cmake
Tools/ChangeLog
Tools/WebKitTestRunner/PlatformGTK.cmake

index 8e4cb12..8df0984 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2020-02-14  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] Add Fontconfig::Fontconfig target
+        https://bugs.webkit.org/show_bug.cgi?id=207730
+
+        Reviewed by Adrian Perez de Castro.
+
+        Redo the Fontconfig find module to export a target.
+
+        * Source/cmake/FindFontconfig.cmake:
+
 2020-02-10  Michael Catanzaro  <mcatanzaro@gnome.org>
 
         [CMake] Prepend -Wno-noexcept-type only to global CXX flags
index 745c670..b0f402d 100644 (file)
@@ -1,3 +1,14 @@
+2020-02-14  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] Add Fontconfig::Fontconfig target
+        https://bugs.webkit.org/show_bug.cgi?id=207730
+
+        Reviewed by Adrian Perez de Castro.
+
+        Use the Fontconfig::Fontconfig target.
+
+        * platform/FreeType.cmake:
+
 2020-02-13  Fujii Hironori  <Hironori.Fujii@sony.com>
 
         Unreviewed build fix for WebCore shared library builds.
index 76217d9..bf482b2 100644 (file)
@@ -29,13 +29,12 @@ if (USE_CAIRO)
 endif ()
 
 list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES
-    ${FONTCONFIG_INCLUDE_DIRS}
     ${FREETYPE_INCLUDE_DIRS}
 )
 
 list(APPEND WebCore_LIBRARIES
+    ${FREETYPE_LIBRARIES}
+    Fontconfig::Fontconfig
     HarfBuzz::HarfBuzz
     HarfBuzz::ICU
-    ${FONTCONFIG_LIBRARIES}
-    ${FREETYPE_LIBRARIES}
 )
index 2f3acaf..03063dc 100644 (file)
-# - Try to find the  Fontconfig
-# Once done this will define
-#
-#  FONTCONFIG_FOUND - system has Fontconfig
-#  FONTCONFIG_INCLUDE_DIR - The include directory to use for the fontconfig headers
-#  FONTCONFIG_LIBRARIES - Link these to use FONTCONFIG
-#  FONTCONFIG_DEFINITIONS - Compiler switches required for using FONTCONFIG
-
-# Copyright (c) 2006,2007 Laurent Montel, <montel@kde.org>
+# Copyright (C) 2020 Sony Interactive Entertainment Inc.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
 # are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
 #
-# 1. Redistributions of source code must retain the copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
+# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-if (FONTCONFIG_LIBRARIES AND FONTCONFIG_INCLUDE_DIR)
+#[=======================================================================[.rst:
+FindFontconfig
+--------------
 
-    # in cache already
-    set(FONTCONFIG_FOUND TRUE)
+Find Fontconfig headers and libraries.
 
-else (FONTCONFIG_LIBRARIES AND FONTCONFIG_INCLUDE_DIR)
+Imported Targets
+^^^^^^^^^^^^^^^^
 
-    if (NOT WIN32)
-        # use pkg-config to get the directories and then use these values
-        # in the find_path() and find_library() calls
-        find_package(PkgConfig)
-        pkg_check_modules(PC_FONTCONFIG fontconfig)
+``Fontconfig::Fontconfig``
+  The Fontconfig library, if found.
 
-      set(FONTCONFIG_DEFINITIONS ${PC_FONTCONFIG_CFLAGS_OTHER})
-    endif (NOT WIN32)
+Result Variables
+^^^^^^^^^^^^^^^^
 
-    find_path(FONTCONFIG_INCLUDE_DIR fontconfig/fontconfig.h
-        HINTS ${PC_FONTCONFIG_INCLUDEDIR} ${PC_FONTCONFIG_INCLUDE_DIRS}
-        PATHS /usr/X11/include
-    )
+This will define the following variables in your project:
 
-    find_library(FONTCONFIG_LIBRARIES NAMES fontconfig
-        HINTS ${PC_FONTCONFIG_LIBDIR} ${PC_FONTCONFIG_LIBRARY_DIRS}
-    )
+``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
+
+#]=======================================================================]
 
-    include(FindPackageHandleStandardArgs)
-    FIND_PACKAGE_HANDLE_STANDARD_ARGS(Fontconfig DEFAULT_MSG FONTCONFIG_LIBRARIES FONTCONFIG_INCLUDE_DIR)
+# TODO: Remove when cmake_minimum_version bumped to 3.14.
+
+include(FindPkgConfig)
+pkg_check_modules(PC_FONTCONFIG QUIET fontconfig)
+set(Fontconfig_COMPILE_OPTIONS ${PC_FONTCONFIG_CFLAGS_OTHER})
+set(Fontconfig_VERSION ${PC_FONTCONFIG_CFLAGS_VERSION})
+
+find_path(Fontconfig_INCLUDE_DIR
+    NAMES fontconfig/fontconfig.h
+    HINTS ${PC_FONTCONFIG_INCLUDEDIR} ${PC_FONTCONFIG_INCLUDE_DIRS} /usr/X11/include
+)
+
+find_library(Fontconfig_LIBRARY
+    NAMES ${Fontconfig_NAMES} fontconfig
+    HINTS ${PC_FONTCONFIG_LIBDIR} ${PC_FONTCONFIG_LIBRARY_DIRS}
+)
+
+# Taken from CMake's FindFontconfig.cmake
+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_LIBRARY AND NOT TARGET Fontconfig::Fontconfig)
+    add_library(Fontconfig::Fontconfig UNKNOWN IMPORTED GLOBAL)
+    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_LIBRARIES FONTCONFIG_INCLUDE_DIR)
+mark_as_advanced(Fontconfig_INCLUDE_DIR Fontconfig_LIBRARIES)
 
-endif (FONTCONFIG_LIBRARIES AND FONTCONFIG_INCLUDE_DIR)
+if (Fontconfig_FOUND)
+    set(Fontconfig_LIBRARIES ${Fontconfig_LIBRARY})
+    set(Fontconfig_INCLUDE_DIRS ${Fontconfig_INCLUDE_DIR})
+endif ()
index f01477b..453d404 100644 (file)
@@ -1,3 +1,14 @@
+2020-02-14  Don Olmstead  <don.olmstead@sony.com>
+
+        [CMake] Add Fontconfig::Fontconfig target
+        https://bugs.webkit.org/show_bug.cgi?id=207730
+
+        Reviewed by Adrian Perez de Castro.
+
+        Use the Fontconfig::Fontconfig target.
+
+        * WebKitTestRunner/PlatformGTK.cmake:
+
 2020-02-13  Kate Cheney  <katherine_cheney@apple.com>
 
          Expose prevalent domains on a per-page basis
index e9ac26d..42a8ec9 100644 (file)
@@ -34,9 +34,9 @@ list(APPEND WebKitTestRunner_LIBRARIES
 
 set(WebKitTestRunnerInjectedBundle_LIBRARIES
     ${ATK_LIBRARIES}
-    ${FONTCONFIG_LIBRARIES}
     ${GLIB_LIBRARIES}
     ${GTK3_LIBRARIES}
+    Fontconfig::Fontconfig
     WebCoreTestSupport
     WebKit
 )