From 720b84ef9d086245f5119d143202a2661a78ca53 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sat, 13 Jun 2020 15:19:27 +0200 Subject: CMake: refactor and reformat CMake files - raise minimum CMake version from 2.6.3 to 3.2.3 (Jun 01, 2015) - indent all CMake files according to the CMP (2 col.) - refactor FLTK version number definitions and usage - unify CMake and autoconf/configure variable names: - FL_VERSION -> FLTK_VERSION - FL_MAJOR_VERSION -> FLTK_VERSION_MAJOR - etc. for _MINOR_ and _PATCH_, respectively - note: this does not affect FL_VERSION etc. in source code - generate "export headers" for all libraries (experimental: OFF) - port some forgotten goodies from branch-1.3 to master - merge and improve macro 'create_example' (WIP) - remove "temporary" options and code for older CMake versions - include and use 'GenerateExportHeader' (experimental, WIP: OFF) - note: created header files are not yet used - build only *one* DLL with Visual Studio (tested, works) - similar to the bundled IDE projects in 1.3.x - add some dynamically linked test/demo programs ('*-shared') if shared libraries are built (WIP) - split 'macros.cmake': use one file per macro --- src/CMakeLists.txt | 233 ++++++++++++++++++++++++++++++----------------------- src/Makefile | 2 +- 2 files changed, 131 insertions(+), 104 deletions(-) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b7597f74c..d3ef3940c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -173,7 +173,7 @@ list (APPEND HEADER_FILES ${CMAKE_CURRENT_BINARY_DIR}/../config.h ) -set (GL_HEADER_FILES) # FIXME: not (yet?) defined +set (GL_HEADER_FILES) # FIXME: not (yet?) defined if ((USE_X11 OR USE_SDL) AND NOT OPTION_PRINT_SUPPORT) set (PSFILES @@ -221,6 +221,7 @@ if (USE_X11) drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx ) endif (USE_XFT) + set (DRIVER_HEADER_FILES drivers/Posix/Fl_Posix_System_Driver.H drivers/X11/Fl_X11_Screen_Driver.H @@ -294,7 +295,7 @@ elseif (ANDROID) # Android - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set (DRIVER_FILES drivers/Android/Fl_Android_Application.cxx @@ -361,7 +362,7 @@ set (CPPFILES ${DRIVER_FILES} ) -set (FLCPPFILES +set (FORMS_FILES forms_compatibility.cxx forms_bitmap.cxx forms_free.cxx @@ -453,15 +454,15 @@ if (WIN32) endif (WIN32) if (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL)) - set (MMFILES - Fl_cocoa.mm - drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm - Fl_Native_File_Chooser_MAC.mm - Fl_MacOS_Sys_Menu_Bar.mm - ) + set (MMFILES + Fl_cocoa.mm + drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm + Fl_Native_File_Chooser_MAC.mm + Fl_MacOS_Sys_Menu_Bar.mm + ) else() - set (MMFILES - ) + set (MMFILES + ) endif (APPLE AND (NOT OPTION_APPLE_X11) AND (NOT OPTION_APPLE_SDL)) @@ -475,7 +476,7 @@ list (APPEND SHARED_FILES ${HEADER_FILES} ${DRIVER_HEADER_FILES}) set (STATIC_FILES ${SHARED_FILES}) if (WIN32) - list (APPEND STATIC_FILES fl_call_main.c) + list (APPEND STATIC_FILES fl_call_main.c) endif (WIN32) add_definitions(-DFL_LIBRARY) @@ -487,162 +488,188 @@ add_definitions(-DFL_LIBRARY) set (OPTIONAL_LIBS) if (LIB_dl) - list (APPEND OPTIONAL_LIBS ${LIB_dl}) + list (APPEND OPTIONAL_LIBS ${LIB_dl}) endif (LIB_dl) if (USE_THREADS) - list (APPEND OPTIONAL_LIBS ${CMAKE_THREAD_LIBS_INIT}) + list (APPEND OPTIONAL_LIBS ${CMAKE_THREAD_LIBS_INIT}) endif (USE_THREADS) if (USE_X11) - list (APPEND OPTIONAL_LIBS ${X11_LIBRARIES}) + list (APPEND OPTIONAL_LIBS ${X11_LIBRARIES}) endif (USE_X11) if (USE_SDL) - list (APPEND OPTIONAL_LIBS ${SDL2_LIBRARY}) -endif(USE_SDL) + list (APPEND OPTIONAL_LIBS ${SDL2_LIBRARY}) +endif (USE_SDL) if (WIN32) - list (APPEND OPTIONAL_LIBS comctl32 ws2_32) + list (APPEND OPTIONAL_LIBS comctl32 ws2_32) endif (WIN32) if (FLTK_HAVE_CAIRO) - list (APPEND OPTIONAL_LIBS fltk_cairo ${PKG_CAIRO_LIBRARIES}) + list (APPEND OPTIONAL_LIBS fltk_cairo ${PKG_CAIRO_LIBRARIES}) ENDif (FLTK_HAVE_CAIRO) if (HAVE_XINERAMA) - list (APPEND OPTIONAL_LIBS ${X11_Xinerama_LIB}) + list (APPEND OPTIONAL_LIBS ${X11_Xinerama_LIB}) endif (HAVE_XINERAMA) if (HAVE_XFIXES) - list (APPEND OPTIONAL_LIBS ${X11_Xfixes_LIB}) + list (APPEND OPTIONAL_LIBS ${X11_Xfixes_LIB}) endif (HAVE_XFIXES) if (HAVE_XCURSOR) - list (APPEND OPTIONAL_LIBS ${X11_Xcursor_LIB}) + list (APPEND OPTIONAL_LIBS ${X11_Xcursor_LIB}) endif (HAVE_XCURSOR) if (HAVE_XRENDER) - list (APPEND OPTIONAL_LIBS ${X11_Xrender_LIB}) + list (APPEND OPTIONAL_LIBS ${X11_Xrender_LIB}) endif (HAVE_XRENDER) if (USE_PANGO) list (APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGO} ${HAVE_LIB_PANGOXFT}) - if(NOT APPLE) - list (APPEND OPTIONAL_LIBS ${HAVE_LIB_GOBJECT} ) - endif(NOT APPLE) -endif(USE_PANGO) + if (NOT APPLE) + list (APPEND OPTIONAL_LIBS ${HAVE_LIB_GOBJECT} ) + endif (NOT APPLE) +endif (USE_PANGO) if (USE_XFT) - list (APPEND OPTIONAL_LIBS ${X11_Xft_LIB}) - if (LIB_fontconfig) - list (APPEND OPTIONAL_LIBS ${LIB_fontconfig}) - endif (LIB_fontconfig) + list (APPEND OPTIONAL_LIBS ${X11_Xft_LIB}) + if (LIB_fontconfig) + list (APPEND OPTIONAL_LIBS ${LIB_fontconfig}) + endif (LIB_fontconfig) endif (USE_XFT) ####################################################################### -FL_ADD_LIBRARY(fltk STATIC "${STATIC_FILES}") -target_link_libraries(fltk ${OPTIONAL_LIBS}) +FL_ADD_LIBRARY (fltk STATIC "${STATIC_FILES}") +target_link_libraries (fltk ${OPTIONAL_LIBS}) ####################################################################### -FL_ADD_LIBRARY(fltk_forms STATIC "${FLCPPFILES}") -target_link_libraries(fltk_forms fltk) +FL_ADD_LIBRARY (fltk_forms STATIC "${FORMS_FILES}") +target_link_libraries (fltk_forms fltk) ####################################################################### -FL_ADD_LIBRARY(fltk_images STATIC "${IMGCPPFILES}") -target_link_libraries(fltk_images fltk) +FL_ADD_LIBRARY (fltk_images STATIC "${IMGCPPFILES}") +target_link_libraries (fltk_images fltk) if (OPTION_USE_SYSTEM_LIBJPEG) - target_link_libraries(fltk_images ${FLTK_JPEG_LIBRARIES}) + target_link_libraries (fltk_images ${FLTK_JPEG_LIBRARIES}) else() - target_link_libraries(fltk_images fltk_jpeg) + target_link_libraries (fltk_images fltk_jpeg) endif (OPTION_USE_SYSTEM_LIBJPEG) if (OPTION_USE_SYSTEM_ZLIB) - target_link_libraries(fltk_images ${FLTK_ZLIB_LIBRARIES}) + target_link_libraries (fltk_images ${FLTK_ZLIB_LIBRARIES}) else() - target_link_libraries(fltk_images fltk_z) + target_link_libraries (fltk_images fltk_z) endif (OPTION_USE_SYSTEM_ZLIB) if (OPTION_USE_SYSTEM_LIBPNG) - target_link_libraries(fltk_images ${FLTK_PNG_LIBRARIES}) + target_link_libraries (fltk_images ${FLTK_PNG_LIBRARIES}) else() - target_link_libraries(fltk_images fltk_png) + target_link_libraries (fltk_images fltk_png) endif (OPTION_USE_SYSTEM_LIBPNG) ####################################################################### if (OPENGL_FOUND) - FL_ADD_LIBRARY(fltk_gl STATIC "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}") - target_link_libraries(fltk_gl fltk ${OPENGL_LIBRARIES}) + FL_ADD_LIBRARY (fltk_gl STATIC "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}") + target_link_libraries (fltk_gl fltk ${OPENGL_LIBRARIES}) endif (OPENGL_FOUND) ####################################################################### # Build shared libraries (optional) ####################################################################### +# Shared libraries, part 1: everything except Visual Studio (MSVC) +####################################################################### + +if (OPTION_BUILD_SHARED_LIBS AND NOT MSVC) + + FL_ADD_LIBRARY (fltk SHARED "${SHARED_FILES}") + target_link_libraries (fltk_SHARED ${OPTIONAL_LIBS}) + + ################################################################### + + FL_ADD_LIBRARY (fltk_forms SHARED "${FORMS_FILES}") + target_link_libraries (fltk_forms_SHARED fltk_SHARED) + + ################################################################### + + FL_ADD_LIBRARY (fltk_images SHARED "${IMGCPPFILES}") + target_link_libraries (fltk_images_SHARED fltk_SHARED) + + if (OPTION_USE_SYSTEM_LIBJPEG) + target_link_libraries (fltk_images_SHARED ${FLTK_JPEG_LIBRARIES}) + else() + target_link_libraries (fltk_images_SHARED fltk_jpeg_SHARED) + endif (OPTION_USE_SYSTEM_LIBJPEG) + + if (OPTION_USE_SYSTEM_LIBPNG) + target_link_libraries (fltk_images_SHARED ${FLTK_PNG_LIBRARIES}) + else() + target_link_libraries (fltk_images_SHARED fltk_png_SHARED) + endif (OPTION_USE_SYSTEM_LIBPNG) + + if (OPTION_USE_SYSTEM_ZLIB) + target_link_libraries (fltk_images_SHARED ${FLTK_ZLIB_LIBRARIES}) + else() + target_link_libraries (fltk_images_SHARED fltk_z_SHARED) + endif (OPTION_USE_SYSTEM_ZLIB) + + ################################################################### + + if (OPENGL_FOUND) + FL_ADD_LIBRARY (fltk_gl SHARED "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}") + target_link_libraries (fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES}) + endif (OPENGL_FOUND) + +endif (OPTION_BUILD_SHARED_LIBS AND NOT MSVC) + +####################################################################### +# Shared libraries, part 2: Visual Studio (MSVC) +####################################################################### -# Note to devs: As of 08 Aug 2016 we can build shared libs (dlls) -# under Windows with Visual Studio (MSVC) but we can't link for instance -# fltk_images_SHARED with fltk_SHARED - we have to use fltk, i.e. the -# "static" object library instead. I don't know how to fix this, but -# at least we can build shared libraries (dlls) with Visual Studio. +# Note to devs: As of June 2020 we can't build separate shared libs (DLL's) +# under Windows with Visual Studio (MSVC) but we can build one big DLL +# that comprises all FLTK and optional PNG, JPEG, and ZLIB libs. # AlbrechtS -if (OPTION_BUILD_SHARED_LIBS) - - FL_ADD_LIBRARY(fltk SHARED "${SHARED_FILES}") - target_link_libraries(fltk_SHARED ${OPTIONAL_LIBS}) - - ################################################################### - - FL_ADD_LIBRARY(fltk_forms SHARED "${FLCPPFILES}") - if (MSVC) - target_link_libraries(fltk_forms_SHARED fltk) - else () - target_link_libraries(fltk_forms_SHARED fltk_SHARED) - endif (MSVC) - - ################################################################### - - FL_ADD_LIBRARY(fltk_images SHARED "${IMGCPPFILES}") - if (MSVC) - target_link_libraries(fltk_images_SHARED fltk) - else () - target_link_libraries(fltk_images_SHARED fltk_SHARED) - endif (MSVC) - - if (OPTION_USE_SYSTEM_LIBJPEG) - target_link_libraries(fltk_images_SHARED ${FLTK_JPEG_LIBRARIES}) - else() - target_link_libraries(fltk_images_SHARED fltk_jpeg_SHARED) - endif (OPTION_USE_SYSTEM_LIBJPEG) - - if (OPTION_USE_SYSTEM_LIBPNG) - target_link_libraries(fltk_images_SHARED ${FLTK_PNG_LIBRARIES}) - else() - target_link_libraries(fltk_images_SHARED fltk_png_SHARED) - endif (OPTION_USE_SYSTEM_LIBPNG) - - if (OPTION_USE_SYSTEM_ZLIB) - target_link_libraries(fltk_images_SHARED ${FLTK_ZLIB_LIBRARIES}) - else() - target_link_libraries(fltk_images_SHARED fltk_z_SHARED) - endif (OPTION_USE_SYSTEM_ZLIB) - - ################################################################### - - if (OPENGL_FOUND) - FL_ADD_LIBRARY(fltk_gl SHARED "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}") - if (MSVC) - target_link_libraries(fltk_gl_SHARED fltk ${OPENGL_LIBRARIES}) - else () - target_link_libraries(fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES}) - endif (MSVC) - endif (OPENGL_FOUND) - -endif (OPTION_BUILD_SHARED_LIBS) +if (OPTION_BUILD_SHARED_LIBS AND MSVC) + + set (SOURCES ${SHARED_FILES} ${FORMS_FILES} ${IMGCPPFILES}) + if (OPENGL_FOUND) + list (APPEND SOURCES ${GLCPPFILES} ${GL_HEADER_FILES} ${GL_DRIVER_HEADER_FILES}) + endif (OPENGL_FOUND) + + FL_ADD_LIBRARY (fltk SHARED "${SOURCES}") + target_link_libraries (fltk_SHARED ${OPTIONAL_LIBS}) + + if (OPTION_USE_SYSTEM_LIBJPEG) + target_link_libraries (fltk_SHARED ${FLTK_JPEG_LIBRARIES}) + else() + target_link_libraries (fltk_SHARED fltk_jpeg_SHARED) + endif (OPTION_USE_SYSTEM_LIBJPEG) + + if (OPTION_USE_SYSTEM_LIBPNG) + target_link_libraries (fltk_SHARED ${FLTK_PNG_LIBRARIES}) + else() + target_link_libraries (fltk_SHARED fltk_png_SHARED) + endif (OPTION_USE_SYSTEM_LIBPNG) + + if (OPTION_USE_SYSTEM_ZLIB) + target_link_libraries (fltk_SHARED ${FLTK_ZLIB_LIBRARIES}) + else() + target_link_libraries (fltk_SHARED fltk_z_SHARED) + endif (OPTION_USE_SYSTEM_ZLIB) + + if (OPENGL_FOUND) + target_link_libraries (fltk_SHARED ${OPENGL_LIBRARIES}) + endif (OPENGL_FOUND) + +endif (OPTION_BUILD_SHARED_LIBS AND MSVC) ####################################################################### diff --git a/src/Makefile b/src/Makefile index 0cbde688f..bb4b6af79 100644 --- a/src/Makefile +++ b/src/Makefile @@ -14,7 +14,7 @@ # https://www.fltk.org/bugs.php # -# Note: see ../configure.in and/or ../makeinclude for definition of +# Note: see ../configure.ac and/or ../makeinclude for definition of # FL_VERSION (x.y.z), FL_ABI_VERSION (x.y.0), and FL_DSO_VERSION (x.y) CPPFILES = \ -- cgit v1.2.3