diff --git a/CMakeLists.txt b/CMakeLists.txt index 858c48620a14716fa17e14f016efa094892045eb..145dde52fcf2c5d89080d90776ab18497820ecbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -302,56 +302,84 @@ if(ENABLE_PARSER) endif(ENABLE_PARSER) if(ENABLE_FLTK) - set(FLTK_SKIP_FORMS TRUE) - set(FLTK_SKIP_FLUID TRUE) - find_package(FLTK) - if(FLTK_FOUND) + # try first to use fltk-config (FindFLTK is buggy on Unix, where + # e.g. xft and xinerama options are not dealt with) + find_program(FLTK_CONFIG_SCRIPT fltk-config) + if(FLTK_CONFIG_SCRIPT) add_subdirectory(Fltk) set_config_option(HAVE_FLTK "Fltk") + execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version + OUTPUT_VARIABLE FLTK_VERSION) + string(STRIP ${FLTK_VERSION} FLTK_VERSION) + message(STATUS "Found fltk-config script for FLTK " ${FLTK_VERSION}) + execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --includedir + OUTPUT_VARIABLE FLTK_INCLUDE_DIR) + string(STRIP ${FLTK_INCLUDE_DIR} FLTK_INCLUDE_DIR) list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}) - if(FLTK_CONFIG_SCRIPT) - execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --api-version - OUTPUT_VARIABLE FLTK_VERSION) - string(STRIP ${FLTK_VERSION} FLTK_VERSION) - message(STATUS "Found fltk-config script for FLTK " ${FLTK_VERSION}) - endif(FLTK_CONFIG_SCRIPT) - if(ENABLE_NATIVE_FILE_CHOOSER) - if(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) - add_subdirectory(contrib/NativeFileChooser) - include_directories(contrib/NativeFileChooser) - add_definitions(-DFLTK1) - endif(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) - set_config_option(HAVE_NATIVE_FILE_CHOOSER "NativeFileChooser") - endif(ENABLE_NATIVE_FILE_CHOOSER) - if(ENABLE_FL_TREE) - if(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) - add_subdirectory(contrib/Fl_Tree) - include_directories(contrib/Fl_Tree) - endif(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) - set_config_option(HAVE_FL_TREE "FlTree") - endif(ENABLE_FL_TREE) - if(APPLE AND FLTK_VERSION EQUAL 1.3) - # required for system sounds (until cmake updates find_package(FLTK)) - list(APPEND FLTK_LIBRARIES "-framework AudioToolbox") - endif(APPLE AND FLTK_VERSION EQUAL 1.3) - if(UNIX AND FLTK_CONFIG_SCRIPT) - # missing Xft/Xinerama (until cmake updates find_package(FLTK)) - execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --ldflags - OUTPUT_VARIABLE FLTK_LDFLAGS) - if(X11_Xft_FOUND) - string(REGEX MATCH ".*Xft.*" ${FLTK_LDFLAGS} FLTK_HAVE_XFT) - if(FLTK_HAVE_XFT) - list(APPEND FLTK_LIBRARIES ${X11_Xft_LIB}) - endif(FLTK_HAVE_XFT) - endif(X11_Xft_FOUND) - if(X11_Xinerama_FOUND) - string(REGEX MATCH ".*Xinerama.*" ${FLTK_LDFLAGS} FLTK_HAVE_XINERAMA) - if(FLTK_HAVE_XINERAMA) - list(APPEND FLTK_LIBRARIES ${X11_Xinerama_LIB}) - endif(FLTK_HAVE_XINERAMA) - endif(X11_Xinerama_FOUND) - endif(UNIX AND FLTK_CONFIG_SCRIPT) - endif(FLTK_FOUND) + execute_process(COMMAND ${FLTK_CONFIG_SCRIPT} --use-gl --use-images --ldflags + OUTPUT_VARIABLE FLTK_LIBRARIES) + string(STRIP ${FLTK_LIBRARIES} FLTK_LIBRARIES) + string(REGEX MATCH "fltk[_ ]jpeg" FLTK_JPEG ${FLTK_LIBRARIES}) + string(REGEX MATCH "fltk[_ ]z" FLTK_Z ${FLTK_LIBRARIES}) + string(REGEX MATCH "fltk[_ ]png" FLTK_PNG ${FLTK_LIBRARIES}) + else(FLTK_CONFIG_SCRIPT) + set(FLTK_SKIP_FORMS TRUE) + set(FLTK_SKIP_FLUID TRUE) + find_package(FLTK) + if(FLTK_FOUND) + add_subdirectory(Fltk) + set_config_option(HAVE_FLTK "Fltk") + list(APPEND EXTERNAL_INCLUDES ${FLTK_INCLUDE_DIR}) + # find fltk jpeg + find_library(FLTK_JPEG fltk_jpeg) + if(NOT FLTK_JPEG) + find_library(FLTK_JPEG fltkjpeg) + endif(NOT FLTK_JPEG) + if(FLTK_JPEG) + list(APPEND EXTERNAL_LIBRARIES ${FLTK_JPEG}) + foreach(DIR ${FLTK_INCLUDE_DIR}) + list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/jpeg) + endforeach(DIR) + endif(FLTK_JPEG) + # find fltk zlib + find_library(FLTK_Z fltk_z) + if(NOT FLTK_Z) + find_library(FLTK_Z fltkz) + endif(NOT FLTK_Z) + if(FLTK_Z) + list(APPEND EXTERNAL_LIBRARIES ${FLTK_Z}) + foreach(DIR ${FLTK_INCLUDE_DIR}) + list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/zlib) + endforeach(DIR) + endif(FLTK_Z) + # find fltk png + find_library(FLTK_PNG fltk_png) + if(NOT FLTK_PNG) + find_library(FLTK_PNG fltkpng) + endif(NOT FLTK_PNG) + if(FLTK_PNG) + list(APPEND EXTERNAL_LIBRARIES ${FLTK_PNG}) + foreach(DIR ${FLTK_INCLUDE_DIR}) + list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/png) + endforeach(DIR) + endif(FLTK_PNG) + endif(FLTK_FOUND) + endif(FLTK_CONFIG_SCRIPT) + if(ENABLE_NATIVE_FILE_CHOOSER) + if(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) + add_subdirectory(contrib/NativeFileChooser) + include_directories(contrib/NativeFileChooser) + add_definitions(-DFLTK1) + endif(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) + set_config_option(HAVE_NATIVE_FILE_CHOOSER "NativeFileChooser") + endif(ENABLE_NATIVE_FILE_CHOOSER) + if(ENABLE_FL_TREE) + if(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) + add_subdirectory(contrib/Fl_Tree) + include_directories(contrib/Fl_Tree) + endif(NOT FLTK_VERSION OR FLTK_VERSION EQUAL 1.1) + set_config_option(HAVE_FL_TREE "FlTree") + endif(ENABLE_FL_TREE) elseif(ENABLE_QT) find_package(Qt4) set(QT_USE_QTOPENGL TRUE) @@ -368,72 +396,39 @@ if(HAVE_FLTK OR HAVE_QT OR ENABLE_GRAPHICS) message(SEND_ERROR "Cannot compile GUI without Mesh, Post or Plugin modules") endif(NOT HAVE_MESH OR NOT HAVE_POST OR NOT HAVE_PLUGINS) # get jpeg lib (if we have fltk first try to get the local jpeg lib) - if(HAVE_FLTK) - find_library(FLTK_JPEG fltk_jpeg) - if(NOT FLTK_JPEG) - find_library(FLTK_JPEG fltkjpeg) - endif(NOT FLTK_JPEG) - if(FLTK_JPEG) - set_config_option(HAVE_LIBJPEG "Jpeg(Fltk)") - list(APPEND EXTERNAL_LIBRARIES ${FLTK_JPEG}) - foreach(DIR ${FLTK_INCLUDE_DIR}) - list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/jpeg) - endforeach(DIR) - endif(FLTK_JPEG) - endif(HAVE_FLTK) - if(NOT FLTK_JPEG) + if(FLTK_JPEG) + set_config_option(HAVE_LIBJPEG "Jpeg(Fltk)") + else(FLTK_JPEG) find_package(JPEG) if(JPEG_FOUND) set_config_option(HAVE_LIBJPEG "Jpeg") list(APPEND EXTERNAL_LIBRARIES ${JPEG_LIBRARIES}) list(APPEND EXTERNAL_INCLUDES ${JPEG_INCLUDE_DIR}) endif(JPEG_FOUND) - endif(NOT FLTK_JPEG) + endif(FLTK_JPEG) # get zlib (if we have fltk first try to get the local zlib) - if(HAVE_FLTK) - find_library(FLTK_Z fltk_z) - if(NOT FLTK_Z) - find_library(FLTK_Z fltkz) - endif(NOT FLTK_Z) - if(FLTK_Z) - set_config_option(HAVE_LIBZ "Zlib(Fltk)") - list(APPEND EXTERNAL_LIBRARIES ${FLTK_Z}) - foreach(DIR ${FLTK_INCLUDE_DIR}) - list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/zlib) - endforeach(DIR) - endif(FLTK_Z) - endif(HAVE_FLTK) - if(NOT FLTK_Z) + if(FLTK_Z) + set_config_option(HAVE_LIBZ "Zlib(Fltk)") + else(FLTK_Z) find_package(ZLIB) if(ZLIB_FOUND) set_config_option(HAVE_LIBZ "Zlib") list(APPEND EXTERNAL_LIBRARIES ${ZLIB_LIBRARIES}) list(APPEND EXTERNAL_INCLUDES ${ZLIB_INCLUDE_DIR}) endif(ZLIB_FOUND) - endif(NOT FLTK_Z) + endif(FLTK_Z) # get png lib (if we have fltk first try to get the local png lib) if(HAVE_LIBZ) - if(HAVE_FLTK) - find_library(FLTK_PNG fltk_png) - if(NOT FLTK_PNG) - find_library(FLTK_PNG fltkpng) - endif(NOT FLTK_PNG) - if(FLTK_PNG) - set_config_option(HAVE_LIBPNG "Png(Fltk)") - list(APPEND EXTERNAL_LIBRARIES ${FLTK_PNG}) - foreach(DIR ${FLTK_INCLUDE_DIR}) - list(APPEND EXTERNAL_INCLUDES ${DIR}/FL/images ${DIR}/png) - endforeach(DIR) - endif(FLTK_PNG) - endif(HAVE_FLTK) - if(NOT FLTK_PNG) + if(FLTK_PNG) + set_config_option(HAVE_LIBPNG "Png(Fltk)") + else(FLTK_PNG) find_package(PNG) if(PNG_FOUND) set_config_option(HAVE_LIBPNG "Png") list(APPEND EXTERNAL_LIBRARIES ${PNG_LIBRARIES}) list(APPEND EXTERNAL_INCLUDES ${PNG_INCLUDE_DIR}) endif(PNG_FOUND) - endif(NOT FLTK_PNG) + endif(FLTK_PNG) endif(HAVE_LIBZ) find_package(OpenGL REQUIRED) if(OPENGL_GLU_FOUND) @@ -1160,4 +1155,3 @@ message("") mark_as_advanced(BISON FLEX GMP_LIB GMSH_EXTRA_VERSION HDF5_LIB MAKEINFO MED_LIB OCC_INC SZ_LIB TAUCS_LIB ACIS_LIB TEXI2PDF) -