mirror of
https://github.com/reactos/CMake.git
synced 2025-03-01 16:37:14 +00:00
FindFreetype: Add imported target, docs, and test
This commit is contained in:
parent
b7b9bae54a
commit
457c202196
@ -5,24 +5,41 @@
|
||||
# FindFreetype
|
||||
# ------------
|
||||
#
|
||||
# Locate FreeType library
|
||||
# Find the FreeType font renderer includes and library.
|
||||
#
|
||||
# This module defines
|
||||
# Imported Targets
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# ::
|
||||
# This module defines the following :prop_tgt:`IMPORTED` target:
|
||||
#
|
||||
# FREETYPE_LIBRARIES, the library to link against
|
||||
# FREETYPE_FOUND, if false, do not try to link to FREETYPE
|
||||
# FREETYPE_INCLUDE_DIRS, where to find headers.
|
||||
# FREETYPE_VERSION_STRING, the version of freetype found (since CMake 2.8.8)
|
||||
# This is the concatenation of the paths:
|
||||
# FREETYPE_INCLUDE_DIR_ft2build
|
||||
# FREETYPE_INCLUDE_DIR_freetype2
|
||||
# ``Freetype::Freetype``
|
||||
# The Freetype ``freetype`` library, if found
|
||||
#
|
||||
# Result Variables
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module will set the following variables in your project:
|
||||
#
|
||||
# $FREETYPE_DIR is an environment variable that would correspond to the
|
||||
# ./configure --prefix=$FREETYPE_DIR used in building FREETYPE.
|
||||
# ``FREETYPE_FOUND``
|
||||
# true if the Freetype headers and libraries were found
|
||||
# ``FREETYPE_INCLUDE_DIRS``
|
||||
# directories containing the Freetype headers. This is the
|
||||
# concatenation of the variables:
|
||||
#
|
||||
# ``FREETYPE_INCLUDE_DIR_ft2build``
|
||||
# directory holding the main Freetype API configuration header
|
||||
# ``FREETYPE_INCLUDE_DIR_freetype2``
|
||||
# directory holding Freetype public headers
|
||||
# ``FREETYPE_LIBRARIES``
|
||||
# the library to link against
|
||||
# ``FREETYPE_VERSION_STRING``
|
||||
# the version of freetype found (since CMake 2.8.8)
|
||||
#
|
||||
# Hints
|
||||
# ^^^^^
|
||||
#
|
||||
# The user may set the environment variable ``FREETYPE_DIR`` to the root
|
||||
# directory of a Freetype installation.
|
||||
|
||||
# Created by Eric Wing.
|
||||
# Modifications by Alexander Neundorf.
|
||||
@ -150,3 +167,33 @@ mark_as_advanced(
|
||||
FREETYPE_INCLUDE_DIR_freetype2
|
||||
FREETYPE_INCLUDE_DIR_ft2build
|
||||
)
|
||||
|
||||
if(Freetype_FOUND)
|
||||
if(NOT TARGET Freetype::Freetype)
|
||||
add_library(Freetype::Freetype UNKNOWN IMPORTED)
|
||||
set_target_properties(Freetype::Freetype PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${FREETYPE_INCLUDE_DIRS}")
|
||||
|
||||
if(FREETYPE_LIBRARY_RELEASE)
|
||||
set_property(TARGET Freetype::Freetype APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(Freetype::Freetype PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
|
||||
IMPORTED_LOCATION_RELEASE "${FREETYPE_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
|
||||
if(FREETYPE_LIBRARY_DEBUG)
|
||||
set_property(TARGET Freetype::Freetype APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(Freetype::Freetype PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
|
||||
IMPORTED_LOCATION_DEBUG "${FREETYPE_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
|
||||
if(NOT FREETYPE_LIBRARY_RELEASE AND NOT FREETYPE_LIBRARY_DEBUG)
|
||||
set_target_properties(Freetype::Freetype PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||
IMPORTED_LOCATION "${FREETYPE_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@ -1435,6 +1435,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
||||
add_subdirectory(FindEXPAT)
|
||||
endif()
|
||||
|
||||
if(CMake_TEST_FindFreetype)
|
||||
add_subdirectory(FindFreetype)
|
||||
endif()
|
||||
|
||||
if(CMake_TEST_FindGSL)
|
||||
add_subdirectory(FindGSL)
|
||||
endif()
|
||||
|
10
Tests/FindFreetype/CMakeLists.txt
Normal file
10
Tests/FindFreetype/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
||||
add_test(NAME FindFreetype.Test COMMAND
|
||||
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/FindFreetype/Test"
|
||||
"${CMake_BINARY_DIR}/Tests/FindFreetype/Test"
|
||||
${build_generator_args}
|
||||
--build-project TestFindFreetype
|
||||
--build-options ${build_options}
|
||||
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
|
||||
)
|
16
Tests/FindFreetype/Test/CMakeLists.txt
Normal file
16
Tests/FindFreetype/Test/CMakeLists.txt
Normal file
@ -0,0 +1,16 @@
|
||||
cmake_minimum_required(VERSION 3.9)
|
||||
project(TestFindFreetype C)
|
||||
include(CTest)
|
||||
|
||||
find_package(Freetype REQUIRED)
|
||||
|
||||
add_definitions(-DCMAKE_EXPECTED_FREETYPE_VERSION="${FREETYPE_VERSION_STRING}")
|
||||
|
||||
add_executable(testfreetype_tgt main.c)
|
||||
target_link_libraries(testfreetype_tgt Freetype::Freetype)
|
||||
add_test(NAME testfreetype_tgt COMMAND testfreetype_tgt)
|
||||
|
||||
add_executable(testfreetype_var main.c)
|
||||
target_include_directories(testfreetype_var PRIVATE ${FREETYPE_INCLUDE_DIRS})
|
||||
target_link_libraries(testfreetype_var PRIVATE ${FREETYPE_LIBRARIES})
|
||||
add_test(NAME testfreetype_var COMMAND testfreetype_var)
|
34
Tests/FindFreetype/Test/main.c
Normal file
34
Tests/FindFreetype/Test/main.c
Normal file
@ -0,0 +1,34 @@
|
||||
#include <ft2build.h>
|
||||
#include <stdlib.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include <string.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
FT_Library library;
|
||||
FT_Error error;
|
||||
|
||||
error = FT_Init_FreeType(&library);
|
||||
if (error) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
FT_Int major = 0;
|
||||
FT_Int minor = 0;
|
||||
FT_Int patch = 0;
|
||||
FT_Library_Version(library, &major, &minor, &patch);
|
||||
|
||||
char ft_version_string[16];
|
||||
snprintf(ft_version_string, 16, "%i.%i.%i", major, minor, patch);
|
||||
|
||||
if (strcmp(ft_version_string, CMAKE_EXPECTED_FREETYPE_VERSION) != 0) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
error = FT_Done_FreeType(library);
|
||||
if (error) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user