Commit a3a1e69f authored by Brad King's avatar Brad King 💬

FindFontconfig: Convert module variables to camel case

Our documented standard for find module variable names is to match the
case of the find module package name.  This was overlooked when the
module was added by commit 84e7920b (FindFontconfig: Add module to
find Fontconfig, 2018-09-27, v3.14.0-rc1~523^2).

The module was released with the upper case names in CMake 3.14.0, so
fix it to have camel case names in 3.14.1.  This is incompatible but
anyone using a given release series should be using the latest patch on
it and we've made breaking fixups on newly released features like this
before.
Reported-by: Christophe Giboudeaux's avatarChristophe Giboudeaux <christophe@krop.fr>
Fixes: #19094
parent bf02d625
......@@ -377,3 +377,17 @@ Other Changes
* CMake no longer issues a warning if a target listed in an
:command:`install(TARGETS)` command has its :prop_tgt:`EXCLUDE_FROM_ALL`
property set to true.
Updates
=======
Changes made since CMake 3.14.0 include the following.
3.14.1
------
* The :module:`FindFontconfig` module added by 3.14.0 accidentally
used uppercase ``FONTCONFIG_*`` variable names that do not match
our conventions. 3.14.1 revises the module to use ``Fontconfig_*``
variable names. This is incompatible with 3.14.0 but since the
module is new in the 3.14 series usage should not yet be widespread.
......@@ -18,15 +18,15 @@ Result Variables
This will define the following variables in your project:
``FONTCONFIG_FOUND``
``Fontconfig_FOUND``
true if (the requested version of) Fontconfig is available.
``FONTCONFIG_VERSION``
``Fontconfig_VERSION``
the version of Fontconfig.
``FONTCONFIG_LIBRARIES``
``Fontconfig_LIBRARIES``
the libraries to link against to use Fontconfig.
``FONTCONFIG_INCLUDE_DIRS``
``Fontconfig_INCLUDE_DIRS``
where to find the Fontconfig headers.
``FONTCONFIG_COMPILE_OPTIONS``
``Fontconfig_COMPILE_OPTIONS``
this should be passed to target_compile_options(), if the
target is not used for linking
......@@ -37,10 +37,10 @@ This will define the following variables in your project:
# 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})
set(Fontconfig_COMPILE_OPTIONS ${PKG_FONTCONFIG_CFLAGS_OTHER})
set(Fontconfig_VERSION ${PKG_FONTCONFIG_VERSION})
find_path( FONTCONFIG_INCLUDE_DIR
find_path( Fontconfig_INCLUDE_DIR
NAMES
fontconfig/fontconfig.h
HINTS
......@@ -48,24 +48,24 @@ find_path( FONTCONFIG_INCLUDE_DIR
/usr/X11/include
)
find_library( FONTCONFIG_LIBRARY
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)
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}")
set(Fontconfig_VERSION_PART "${CMAKE_MATCH_1}")
if(Fontconfig_VERSION)
string(APPEND Fontconfig_VERSION ".${Fontconfig_VERSION_PART}")
else()
set(FONTCONFIG_VERSION "${FONTCONFIG_VERSION_PART}")
set(Fontconfig_VERSION "${Fontconfig_VERSION_PART}")
endif()
endif()
endforeach()
......@@ -75,27 +75,27 @@ endif ()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Fontconfig
FOUND_VAR
FONTCONFIG_FOUND
Fontconfig_FOUND
REQUIRED_VARS
FONTCONFIG_LIBRARY
FONTCONFIG_INCLUDE_DIR
Fontconfig_LIBRARY
Fontconfig_INCLUDE_DIR
VERSION_VAR
FONTCONFIG_VERSION
Fontconfig_VERSION
)
if(FONTCONFIG_FOUND AND NOT TARGET Fontconfig::Fontconfig)
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}"
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)
mark_as_advanced(Fontconfig_LIBRARY Fontconfig_INCLUDE_DIR)
if(FONTCONFIG_FOUND)
set(FONTCONFIG_LIBRARIES ${FONTCONFIG_LIBRARY})
set(FONTCONFIG_INCLUDE_DIRS ${FONTCONFIG_INCLUDE_DIR})
if(Fontconfig_FOUND)
set(Fontconfig_LIBRARIES ${Fontconfig_LIBRARY})
set(Fontconfig_INCLUDE_DIRS ${Fontconfig_INCLUDE_DIR})
endif()
......@@ -206,7 +206,7 @@ if (UNIX)
if(X11_Xft_LIB AND X11_Xft_INCLUDE_PATH)
find_package(Freetype QUIET)
find_package(Fontconfig QUIET)
if (FREETYPE_FOUND AND FONTCONFIG_FOUND)
if (FREETYPE_FOUND AND Fontconfig_FOUND)
set(X11_Xft_FOUND TRUE)
endif ()
list(APPEND X11_INCLUDE_DIR ${X11_Xft_INCLUDE_PATH})
......
......@@ -4,13 +4,13 @@ include(CTest)
find_package(Fontconfig REQUIRED)
add_definitions(-DCMAKE_EXPECTED_FONTCONFIG_VERSION="${FONTCONFIG_VERSION}")
add_definitions(-DCMAKE_EXPECTED_FONTCONFIG_VERSION="${Fontconfig_VERSION}")
add_executable(test_tgt main.c)
target_link_libraries(test_tgt Fontconfig::Fontconfig)
add_test(NAME test_tgt COMMAND test_tgt)
add_executable(test_var main.c)
target_include_directories(test_var PRIVATE ${FONTCONFIG_INCLUDE_DIRS})
target_link_libraries(test_var PRIVATE ${FONTCONFIG_LIBRARIES})
target_include_directories(test_var PRIVATE ${Fontconfig_INCLUDE_DIRS})
target_link_libraries(test_var PRIVATE ${Fontconfig_LIBRARIES})
add_test(NAME test_var COMMAND test_var)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment