Improve CMake's Cairo detection and issue error message...

... if Cairo was requested (OPTION_CAIRO or OPTION_CAIROEXT) but
Cairo was not found. CMake generation is terminated with a fatal error.

The user has two choices: install Cairo libs and headers or disable
OPTION_CAIRO and OPTION_CAIROEXT.
This commit is contained in:
Albrecht Schlosser 2018-12-20 19:12:50 +01:00
parent a46695b7fc
commit 88129db051

View File

@ -157,27 +157,33 @@ include(FindPkgConfig)
option(OPTION_CAIRO "use lib Cairo" OFF)
option(OPTION_CAIROEXT
"use FLTK code instrumentation for cairo extended use" OFF
"use FLTK code instrumentation for Cairo extended use" OFF
)
if(OPTION_CAIRO OR OPTION_CAIROEXT AND LIB_CAIRO)
if ((OPTION_CAIRO OR OPTION_CAIROEXT) AND LIB_CAIRO)
pkg_search_module(PKG_CAIRO cairo)
endif(OPTION_CAIRO OR OPTION_CAIROEXT AND LIB_CAIRO)
endif ((OPTION_CAIRO OR OPTION_CAIROEXT) AND LIB_CAIRO)
if(PKG_CAIRO_FOUND)
set(FLTK_HAVE_CAIRO 1)
if (PKG_CAIRO_FOUND)
set (FLTK_HAVE_CAIRO 1)
add_subdirectory(cairo)
list(APPEND FLTK_LDLIBS -lcairo -lpixman-1)
include_directories(${PKG_CAIRO_INCLUDE_DIRS})
string(REPLACE ";" " " CAIROFLAGS "${PKG_CAIRO_CFLAGS}")
endif(PKG_CAIRO_FOUND)
endif (PKG_CAIRO_FOUND)
if(LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND)
if (LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND)
set(FLTK_USE_CAIRO 1)
set(FLTK_CAIRO_FOUND TRUE)
else()
set(FLTK_CAIRO_FOUND FALSE)
endif(LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND)
endif (LIB_CAIRO AND OPTION_CAIROEXT AND PKG_CAIRO_FOUND)
if ((OPTION_CAIRO OR OPTION_CAIROEXT) AND NOT PKG_CAIRO_FOUND)
message(STATUS "*** Cairo was requested but not found - please install Cairo ...")
message(STATUS "*** or disable options OPTION_CAIRO and OPTION_CAIRO_EXT")
message(FATAL_ERROR "*** Terminating: missing Cairo libs or headers")
endif ((OPTION_CAIRO OR OPTION_CAIROEXT) AND NOT PKG_CAIRO_FOUND)
#######################################################################
option(OPTION_USE_NANOSVG "support SVG images" ON)