From cb7bb736c70afa7e7dfc90545ad52992a35dc082 Mon Sep 17 00:00:00 2001 From: hasufell Date: Sun, 8 Dec 2013 21:05:25 +0100 Subject: BUILD: prefer pkg-config for freetype2 detection This can solve numerous problems such as: http://www.cmake.org/Bug/view.php?id=13959 http://www.cmake.org/Bug/view.php?id=14601 If pkg-config or freetype2.pc is not found, then fall back to the FindFreetype.cmake module logic. Restrict to UNIX since I only tested it here. --- src/CMakeLists.txt | 20 +++++++++++++++++++- src/cguittfont/CMakeLists.txt | 32 ++++++++++++++++++++++---------- 2 files changed, 41 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6418b3b26..f2c1e166a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -178,7 +178,19 @@ if(ENABLE_GLES) endif(ENABLE_GLES) if(USE_FREETYPE) - find_package(Freetype REQUIRED) + if(UNIX) + include(FindPkgConfig) + if(PKG_CONFIG_FOUND) + pkg_check_modules(FREETYPE QUIET freetype2) + if(FREETYPE_FOUND) + SET(FREETYPE_PKGCONFIG_FOUND TRUE) + SET(FREETYPE_LIBRARY ${FREETYPE_LIBRARIES}) + endif(FREETYPE_FOUND) + endif(PKG_CONFIG_FOUND) + endif(UNIX) + if(NOT FREETYPE_FOUND) + find_package(Freetype REQUIRED) + endif(NOT FREETYPE_FOUND) set(CGUITTFONT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/cguittfont") set(CGUITTFONT_LIBRARY cguittfont) endif(USE_FREETYPE) @@ -451,6 +463,12 @@ if(BUILD_CLIENT) ) endif(USE_CURL) if(USE_FREETYPE) + if(FREETYPE_PKGCONFIG_FOUND) + set_target_properties(${PROJECT_NAME} + PROPERTIES + COMPILE_FLAGS "${FREETYPE_CFLAGS}" + ) + endif(FREETYPE_PKGCONFIG_FOUND) target_link_libraries( ${PROJECT_NAME} ${FREETYPE_LIBRARY} diff --git a/src/cguittfont/CMakeLists.txt b/src/cguittfont/CMakeLists.txt index 94d061462..d2647ba69 100644 --- a/src/cguittfont/CMakeLists.txt +++ b/src/cguittfont/CMakeLists.txt @@ -1,17 +1,29 @@ -include_directories( - ${IRRLICHT_INCLUDE_DIR} - ${FREETYPE_INCLUDE_DIRS} -) - # CGUITTFont authors, y u no include headers you use? # Do not add CGUITTFont.cpp to the line below. # xCGUITTFont.cpp is a wrapper file that includes # additional required headers. add_library(cguittfont xCGUITTFont.cpp) +if(FREETYPE_PKGCONFIG_FOUND) + set_target_properties(cguittfont + PROPERTIES + COMPILE_FLAGS "${FREETYPE_CFLAGS}" + LINK_FLAGS "${FREETYPE_LDFLAGS}" + ) + + include_directories( + ${IRRLICHT_INCLUDE_DIR} + ) +else(FREETYPE_PKGCONFIG_FOUND) + include_directories( + ${IRRLICHT_INCLUDE_DIR} + ${FREETYPE_INCLUDE_DIRS} + ) +endif(FREETYPE_PKGCONFIG_FOUND) + target_link_libraries( - cguittfont - ${IRRLICHT_LIBRARY} - ${FREETYPE_LIBRARY} - ${ZLIB_LIBRARIES} # needed by freetype, repeated here for safety -) + cguittfont + ${IRRLICHT_LIBRARY} + ${FREETYPE_LIBRARY} + ${ZLIB_LIBRARIES} # needed by freetype, repeated here for safety + ) -- cgit v1.2.3