mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 17:38:00 +00:00
864b4c27fa
On FreeBSD, the GTK libraries aren't stored on the standard library path, so pkg-config has to emit a -L option as well as -l options. This worked fine during the main build, but the -L option wasn't being passed through to check_symbol_exists() for the tests of Pango API function availability.
90 lines
2.8 KiB
CMake
90 lines
2.8 KiB
CMake
# Look for GTK, of any version.
|
|
|
|
set(PUTTY_GTK_VERSION "ANY"
|
|
CACHE STRING "Which major version of GTK to build with")
|
|
set_property(CACHE PUTTY_GTK_VERSION
|
|
PROPERTY STRINGS ANY 3 2 1 NONE)
|
|
|
|
set(GTK_FOUND FALSE)
|
|
|
|
macro(try_pkg_config_gtk VER PACKAGENAME)
|
|
if(NOT GTK_FOUND AND
|
|
(PUTTY_GTK_VERSION STREQUAL ANY OR PUTTY_GTK_VERSION STREQUAL ${VER}))
|
|
find_package(PkgConfig)
|
|
pkg_check_modules(GTK ${PACKAGENAME})
|
|
if(GTK_FOUND)
|
|
set(GTK_VERSION ${VER})
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
try_pkg_config_gtk(3 gtk+-3.0)
|
|
try_pkg_config_gtk(2 gtk+-2.0)
|
|
|
|
if(NOT GTK_FOUND AND
|
|
(PUTTY_GTK_VERSION STREQUAL ANY OR PUTTY_GTK_VERSION STREQUAL 1))
|
|
message("-- Checking for GTK1 (via gtk-config)")
|
|
find_program(GTK_CONFIG gtk-config)
|
|
if(GTK_CONFIG)
|
|
execute_process(COMMAND ${GTK_CONFIG} --cflags
|
|
OUTPUT_VARIABLE gtk_config_cflags
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE gtk_config_cflags_result)
|
|
execute_process(COMMAND ${GTK_CONFIG} --libs
|
|
OUTPUT_VARIABLE gtk_config_libs
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE gtk_config_libs_result)
|
|
|
|
if(gtk_config_cflags_result EQUAL 0 AND gtk_config_libs_result EQUAL 0)
|
|
|
|
set(GTK_INCLUDE_DIRS)
|
|
set(GTK_LIBRARY_DIRS)
|
|
set(GTK_LIBRARIES)
|
|
|
|
separate_arguments(gtk_config_cflags NATIVE_COMMAND
|
|
${gtk_config_cflags})
|
|
foreach(opt ${gtk_config_cflags})
|
|
string(REGEX MATCH "^-I" ok ${opt})
|
|
if(ok)
|
|
string(REGEX REPLACE "^-I" "" optval ${opt})
|
|
list(APPEND GTK_INCLUDE_DIRS ${optval})
|
|
endif()
|
|
endforeach()
|
|
|
|
separate_arguments(gtk_config_libs NATIVE_COMMAND
|
|
${gtk_config_libs})
|
|
foreach(opt ${gtk_config_libs})
|
|
string(REGEX MATCH "^-l" ok ${opt})
|
|
if(ok)
|
|
list(APPEND GTK_LIBRARIES ${opt})
|
|
endif()
|
|
string(REGEX MATCH "^-L" ok ${opt})
|
|
if(ok)
|
|
string(REGEX REPLACE "^-L" "" optval ${opt})
|
|
list(APPEND GTK_LIBRARY_DIRS ${optval})
|
|
endif()
|
|
endforeach()
|
|
|
|
message("-- Found GTK1")
|
|
set(GTK_FOUND TRUE)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(GTK_FOUND)
|
|
# Check for some particular Pango functions.
|
|
function(pango_check_subscope)
|
|
set(CMAKE_REQUIRED_INCLUDES ${GTK_INCLUDE_DIRS})
|
|
set(CMAKE_REQUIRED_LINK_OPTIONS ${GTK_LDFLAGS})
|
|
set(CMAKE_REQUIRED_LIBRARIES ${GTK_LIBRARIES})
|
|
check_symbol_exists(pango_font_family_is_monospace "pango/pango.h"
|
|
HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE)
|
|
check_symbol_exists(pango_font_map_list_families "pango/pango.h"
|
|
HAVE_PANGO_FONT_MAP_LIST_FAMILIES)
|
|
set(HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE
|
|
${HAVE_PANGO_FONT_FAMILY_IS_MONOSPACE} PARENT_SCOPE)
|
|
set(HAVE_PANGO_FONT_MAP_LIST_FAMILIES
|
|
${HAVE_PANGO_FONT_MAP_LIST_FAMILIES} PARENT_SCOPE)
|
|
endfunction()
|
|
pango_check_subscope()
|
|
endif()
|