CMake: Improve fltk-config generation
- set executable permissions on MinGW and more platforms - add missing link libraries - improve code formatting (indent) - mark some variables as advanced - simplify search for glib-2.0
This commit is contained in:
parent
14e1954859
commit
59e028a3a7
@ -82,11 +82,21 @@ configure_file(
|
||||
@ONLY
|
||||
)
|
||||
|
||||
if (UNIX)
|
||||
execute_process(COMMAND chmod 755 fltk-config
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
)
|
||||
endif (UNIX)
|
||||
# Set execute permissions on fltk-config in build dir
|
||||
# Note: file(CHMOD) available since CMake 3.19,
|
||||
# use fallback before CMake 3.19
|
||||
|
||||
if (CMAKE_VERSION VERSION_LESS 3.19)
|
||||
if (UNIX OR MSYS OR MINGW)
|
||||
execute_process(COMMAND chmod 755 fltk-config
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif ()
|
||||
else (CMAKE_VERSION VERSION_LESS 3.19)
|
||||
file (CHMOD "${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE)
|
||||
endif (CMAKE_VERSION VERSION_LESS 3.19)
|
||||
|
||||
# prepare some variables for config.h
|
||||
|
||||
@ -123,6 +133,5 @@ if (OPTION_CREATE_LINKS)
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake"
|
||||
@ONLY
|
||||
)
|
||||
@ONLY)
|
||||
endif (OPTION_CREATE_LINKS)
|
||||
|
@ -105,18 +105,15 @@ configure_file(
|
||||
@ONLY
|
||||
)
|
||||
|
||||
if (UNIX)
|
||||
execute_process (COMMAND chmod 755 fltk-config
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
|
||||
)
|
||||
endif (UNIX)
|
||||
# Install fltk-config
|
||||
# Note: no need to set execute perms, install (PROGRAMS) does this
|
||||
|
||||
install (PROGRAMS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config
|
||||
DESTINATION ${FLTK_BINDIR}
|
||||
)
|
||||
|
||||
if (UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
|
||||
if (UNIX OR MSYS OR MINGW)
|
||||
macro(INSTALL_MAN FILE LEVEL)
|
||||
install(FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/documentation/src/${FILE}.man
|
||||
@ -132,4 +129,4 @@ if (UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
|
||||
INSTALL_MAN (checkers 6)
|
||||
INSTALL_MAN (sudoku 6)
|
||||
|
||||
endif (UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
|
||||
endif (UNIX OR MSYS OR MINGW)
|
||||
|
@ -1,8 +1,8 @@
|
||||
#
|
||||
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
|
||||
# Written by Michael Surette
|
||||
# Originally written by Michael Surette
|
||||
#
|
||||
# Copyright 1998-2020 by Bill Spitzak and others.
|
||||
# Copyright 1998-2022 by Bill Spitzak and others.
|
||||
#
|
||||
# This library is free software. Distribution and use rights are outlined in
|
||||
# the file "COPYING" which should have been included with this file. If this
|
||||
@ -517,67 +517,90 @@ endif (OPTION_USE_PANGO AND NOT OPTION_USE_WAYLAND)
|
||||
|
||||
#######################################################################
|
||||
if ((X11_Xft_FOUND OR OPTION_USE_WAYLAND) AND OPTION_USE_PANGO)
|
||||
pkg_check_modules(CAIRO cairo)
|
||||
pkg_check_modules(PANGOXFT pangoxft)
|
||||
pkg_check_modules(PANGOCAIRO pangocairo)
|
||||
pkg_check_modules(CAIRO cairo)
|
||||
# message (STATUS "PANGOXFT_FOUND=" ${PANGOXFT_FOUND})
|
||||
|
||||
if (PANGOXFT_FOUND AND PANGOCAIRO_FOUND AND CAIRO_FOUND)
|
||||
include_directories (${PANGOXFT_INCLUDE_DIRS} ${CAIRO_INCLUDE_DIRS})
|
||||
find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library(HAVE_LIB_PANGOCAIRO pangocairo-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library(HAVE_LIB_CAIRO cairo ${CMAKE_LIBRARY_PATH})
|
||||
find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH})
|
||||
|
||||
find_library (HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library (HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library (HAVE_LIB_PANGOCAIRO pangocairo-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library (HAVE_LIB_CAIRO cairo ${CMAKE_LIBRARY_PATH})
|
||||
find_library (HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH})
|
||||
|
||||
mark_as_advanced (HAVE_LIB_PANGO)
|
||||
mark_as_advanced (HAVE_LIB_PANGOXFT)
|
||||
mark_as_advanced (HAVE_LIB_PANGOCAIRO)
|
||||
mark_as_advanced (HAVE_LIB_CAIRO)
|
||||
mark_as_advanced (HAVE_LIB_GOBJECT)
|
||||
|
||||
set (USE_PANGO TRUE)
|
||||
list (APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lpangocairo-1.0 -lcairo -lgobject-2.0)
|
||||
|
||||
# add required libraries to fltk-config ...
|
||||
list (APPEND FLTK_LDLIBS ${PANGOXFT_LDFLAGS})
|
||||
list (APPEND FLTK_LDLIBS ${PANGOCAIRO_LDFLAGS})
|
||||
list (APPEND FLTK_LDLIBS ${CAIRO_LDFLAGS})
|
||||
|
||||
# *FIXME* Libraries should not be added explicitly if possible
|
||||
if (OPTION_USE_WAYLAND)
|
||||
list (APPEND FLTK_LDLIBS -lgtk-3 -lgdk-3 -lgio-2.0)
|
||||
endif (OPTION_USE_WAYLAND)
|
||||
|
||||
if (APPLE)
|
||||
get_filename_component(PANGO_L_PATH ${HAVE_LIB_PANGO} PATH)
|
||||
set (LDFLAGS "${LDFLAGS} -L${PANGO_L_PATH}")
|
||||
endif (APPLE)
|
||||
else(PANGOXFT_FOUND AND PANGOCAIRO_FOUND AND CAIRO_FOUND)
|
||||
|
||||
# this covers Debian, Ubuntu, FreeBSD, NetBSD, Darwin
|
||||
if (APPLE AND OPTION_APPLE_X11)
|
||||
find_file(FINK_PREFIX NAMES /opt/sw /sw)
|
||||
list (APPEND CMAKE_INCLUDE_PATH ${FINK_PREFIX}/include)
|
||||
include_directories (${FINK_PREFIX}/include/cairo)
|
||||
list (APPEND CMAKE_LIBRARY_PATH ${FINK_PREFIX}/lib)
|
||||
endif (APPLE AND OPTION_APPLE_X11)
|
||||
find_file(HAVE_PANGO_H pango-1.0/pango/pango.h ${CMAKE_INCLUDE_PATH})
|
||||
find_file(HAVE_PANGOXFT_H pango-1.0/pango/pangoxft.h ${CMAKE_INCLUDE_PATH})
|
||||
else (PANGOXFT_FOUND AND PANGOCAIRO_FOUND AND CAIRO_FOUND)
|
||||
|
||||
if (HAVE_PANGO_H AND HAVE_PANGOXFT_H)
|
||||
find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
if (APPLE)
|
||||
set (HAVE_LIB_GOBJECT TRUE)
|
||||
else()
|
||||
find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH})
|
||||
endif (APPLE)
|
||||
endif (HAVE_PANGO_H AND HAVE_PANGOXFT_H)
|
||||
if (HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
|
||||
set (USE_PANGO TRUE)
|
||||
# message (STATUS "USE_PANGO=" ${USE_PANGO})
|
||||
# remove last 3 components of HAVE_PANGO_H and put in PANGO_H_PREFIX
|
||||
get_filename_component(PANGO_H_PREFIX ${HAVE_PANGO_H} PATH)
|
||||
get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH)
|
||||
get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH)
|
||||
# this covers Debian, Ubuntu, FreeBSD, NetBSD, Darwin
|
||||
if (APPLE AND OPTION_APPLE_X11)
|
||||
find_file(FINK_PREFIX NAMES /opt/sw /sw)
|
||||
list (APPEND CMAKE_INCLUDE_PATH ${FINK_PREFIX}/include)
|
||||
include_directories (${FINK_PREFIX}/include/cairo)
|
||||
list (APPEND CMAKE_LIBRARY_PATH ${FINK_PREFIX}/lib)
|
||||
endif (APPLE AND OPTION_APPLE_X11)
|
||||
|
||||
find_file(HAVE_PANGO_H pango-1.0/pango/pango.h ${CMAKE_INCLUDE_PATH})
|
||||
find_file(HAVE_PANGOXFT_H pango-1.0/pango/pangoxft.h ${CMAKE_INCLUDE_PATH})
|
||||
|
||||
if (HAVE_PANGO_H AND HAVE_PANGOXFT_H)
|
||||
find_library(HAVE_LIB_PANGO pango-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
find_library(HAVE_LIB_PANGOXFT pangoxft-1.0 ${CMAKE_LIBRARY_PATH})
|
||||
if (APPLE)
|
||||
set (HAVE_LIB_GOBJECT TRUE)
|
||||
else()
|
||||
find_library(HAVE_LIB_GOBJECT gobject-2.0 ${CMAKE_LIBRARY_PATH})
|
||||
endif (APPLE)
|
||||
endif (HAVE_PANGO_H AND HAVE_PANGOXFT_H)
|
||||
|
||||
if (HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
|
||||
set (USE_PANGO TRUE)
|
||||
# remove last 3 components of HAVE_PANGO_H and put in PANGO_H_PREFIX
|
||||
get_filename_component(PANGO_H_PREFIX ${HAVE_PANGO_H} PATH)
|
||||
get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH)
|
||||
get_filename_component(PANGO_H_PREFIX ${PANGO_H_PREFIX} PATH)
|
||||
|
||||
get_filename_component(PANGOLIB_DIR ${HAVE_LIB_PANGO} PATH)
|
||||
# glib.h is usually in ${PANGO_H_PREFIX}/glib-2.0/ ...
|
||||
find_path(GLIB_H_PATH glib.h
|
||||
PATHS ${PANGO_H_PREFIX}/glib-2.0
|
||||
${PANGO_H_PREFIX}/glib/glib-2.0)
|
||||
include_directories (${PANGO_H_PREFIX}/pango-1.0 ${GLIB_H_PATH} ${PANGOLIB_DIR}/glib-2.0/include)
|
||||
|
||||
# *FIXME* Libraries should not be added explicitly if possible
|
||||
list (APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0)
|
||||
|
||||
endif (HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
|
||||
endif (PANGOXFT_FOUND AND PANGOCAIRO_FOUND AND CAIRO_FOUND)
|
||||
|
||||
get_filename_component(PANGOLIB_DIR ${HAVE_LIB_PANGO} PATH)
|
||||
# glib.h is usually in ${PANGO_H_PREFIX}/glib-2.0/ ...
|
||||
find_path(GLIB_H_PATH glib.h ${PANGO_H_PREFIX}/glib-2.0)
|
||||
if (NOT GLIB_H_PATH) # ... but not under NetBSD
|
||||
find_path(GLIB_H_PATH glib.h ${PANGO_H_PREFIX}/glib/glib-2.0)
|
||||
endif (NOT GLIB_H_PATH)
|
||||
include_directories (${PANGO_H_PREFIX}/pango-1.0 ${GLIB_H_PATH} ${PANGOLIB_DIR}/glib-2.0/include)
|
||||
list (APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0)
|
||||
endif (HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
|
||||
endif (PANGOXFT_FOUND AND PANGOCAIRO_FOUND AND CAIRO_FOUND)
|
||||
endif ((X11_Xft_FOUND OR OPTION_USE_WAYLAND) AND OPTION_USE_PANGO)
|
||||
|
||||
if (OPTION_USE_WAYLAND AND NOT OPTION_USE_SYSTEM_LIBDECOR)
|
||||
pkg_check_modules(GTK gtk+-3.0)
|
||||
#set (GTK_FOUND 0) #use this to get cairo titlebars rather than GTK
|
||||
# set (GTK_FOUND 0) # use this to get cairo titlebars rather than GTK
|
||||
if (GTK_FOUND)
|
||||
include_directories (${GTK_INCLUDE_DIRS})
|
||||
endif (GTK_FOUND)
|
||||
|
Loading…
x
Reference in New Issue
Block a user