summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2021-07-12 19:26:28 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2021-07-12 20:05:07 +0200
commit787c67afea179735f2fea12f95ad04c80b3717e7 (patch)
treebdb1e19fcd21250991692274cde38114c23a0c60
parent26c46cc022fb097b76d394f482afe231871c2fc2 (diff)
macOS: fix fltk_cairo shared library (issue #250)
- add missing dependencies to build the shared libfltk_cairo(.dylib) - remove incorrect dependency on cairo from libfltk - add cairo_test-shared demo (linked with shared libs)
-rw-r--r--CMakeLists.txt2
-rw-r--r--cairo/CMakeLists.txt24
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--test/CMakeLists.txt6
4 files changed, 23 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7a05f6c49..58e75be31 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -211,7 +211,7 @@ feature_summary (WHAT ALL DESCRIPTION "Configuration Summary for ${_descr} --\n"
message (STATUS "Static libraries will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib")
if (OPTION_BUILD_SHARED_LIBS)
- message (STATUS "Shared libraries will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib")
+ message (STATUS "Shared libraries will be built in ${CMAKE_CURRENT_BINARY_DIR}/lib")
else ()
message (STATUS "Shared libraries will not be built (set OPTION_BUILD_SHARED_LIBS=ON to build)")
endif ()
diff --git a/cairo/CMakeLists.txt b/cairo/CMakeLists.txt
index 2cfa912fd..181f30ed5 100644
--- a/cairo/CMakeLists.txt
+++ b/cairo/CMakeLists.txt
@@ -1,17 +1,27 @@
-include_directories(${PKG_CAIRO_INCLUDE_DIRS})
+include_directories (${PKG_CAIRO_INCLUDE_DIRS})
# source files for cairo
-set(cairo_SRCS Fl_Cairo.cxx)
+set (cairo_SRCS Fl_Cairo.cxx)
#######################################################################
-FL_ADD_LIBRARY(fltk_cairo STATIC "${cairo_SRCS}")
+FL_ADD_LIBRARY (fltk_cairo STATIC "${cairo_SRCS}")
#######################################################################
-if(OPTION_BUILD_SHARED_LIBS)
+# Build shared library (optional)
#######################################################################
-FL_ADD_LIBRARY(fltk_cairo SHARED "${cairo_SRCS}")
-#######################################################################
-endif(OPTION_BUILD_SHARED_LIBS)
+if (OPTION_BUILD_SHARED_LIBS)
+
+ FL_ADD_LIBRARY (fltk_cairo SHARED "${cairo_SRCS}")
+ target_link_libraries (fltk_cairo_SHARED fltk_SHARED ${PKG_CAIRO_LIBRARIES})
+
+ if (CMAKE_VERSION VERSION_LESS "3.13")
+ link_directories (${PKG_CAIRO_LIBRARY_DIRS})
+ else()
+ target_link_directories (fltk_cairo_SHARED PRIVATE ${PKG_CAIRO_LIBRARY_DIRS})
+ endif()
+
+endif (OPTION_BUILD_SHARED_LIBS)
+
#######################################################################
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1a614bee4..274df8e02 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -519,10 +519,6 @@ if (WIN32)
list (APPEND OPTIONAL_LIBS comctl32 ws2_32)
endif (WIN32)
-if (FLTK_HAVE_CAIRO)
- list (APPEND OPTIONAL_LIBS fltk_cairo ${PKG_CAIRO_LIBRARIES})
-endif (FLTK_HAVE_CAIRO)
-
if (HAVE_XINERAMA)
list (APPEND OPTIONAL_LIBS ${X11_Xinerama_LIB})
endif (HAVE_XINERAMA)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 9c602ce7a..33df73a62 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -147,7 +147,7 @@ endif (OPENGL_FOUND)
# Cairo demo - must also be built w/o Cairo (displays a message box)
if (FLTK_HAVE_CAIRO)
- CREATE_EXAMPLE (cairo_test cairo_test.cxx "fltk_cairo;fltk")
+ CREATE_EXAMPLE (cairo_test cairo_test.cxx "fltk_cairo;fltk;cairo")
else ()
CREATE_EXAMPLE (cairo_test cairo_test.cxx fltk)
endif (FLTK_HAVE_CAIRO)
@@ -206,6 +206,10 @@ if (OPTION_BUILD_SHARED_LIBS)
CREATE_EXAMPLE (shape-shared shape.cxx "fltk_gl_SHARED;fltk_SHARED;${OPENGL_LIBRARIES}")
endif (OPENGL_FOUND)
+ if (FLTK_HAVE_CAIRO)
+ CREATE_EXAMPLE (cairo_test-shared cairo_test.cxx "fltk_cairo_SHARED;fltk_SHARED;cairo")
+ endif ()
+
endif (MSVC) # (not MSVC)
endif (OPTION_BUILD_SHARED_LIBS)