diff options
Diffstat (limited to 'cmake/gtk.cmake')
-rw-r--r-- | cmake/gtk.cmake | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/cmake/gtk.cmake b/cmake/gtk.cmake new file mode 100644 index 00000000..13ff7705 --- /dev/null +++ b/cmake/gtk.cmake @@ -0,0 +1,89 @@ +# 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() |