# --------------------------------------------------------------------- # # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image # pour la SantÈ) # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton # Previous Authors : Laurent Guigues, Jean-Pierre Roux # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil # # This software is governed by the CeCILL-B license under French law and # abiding by the rules of distribution of free software. You can use, # modify and/ or redistribute the software under the terms of the CeCILL-B # license as circulated by CEA, CNRS and INRIA at the following URL # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html # or in the file LICENSE.txt. # # As a counterpart to the access to the source code and rights to copy, # modify and redistribute granted by the license, users are provided only # with a limited warranty and the software's author, the holder of the # economic rights, and the successive licensors have only limited # liability. # # The fact that you are presently reading this means that you have had # knowledge of the CeCILL-B license and that you accept its terms. # ------------------------------------------------------------------------ */ #----------------------------------------------------------------------------- # BUILDS AND INSTALLS THE LIBRARY BBTK #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Tests #----------------------------------------------------------------------------- MESSAGE(STATUS "") MESSAGE(STATUS "=======================================") MESSAGE(STATUS "CONFIGURING bbtk LIBRARY") #----------------------------------------------------------------------------- # Test if compiler defines the pseudo-macro __FUNCTION__ IF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$") MESSAGE(STATUS "Checking support for __FUNCTION__ in compiler") TRY_COMPILE(BBTK_COMPILER_HAS_FUNCTION ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/Function ${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkTestFUNCTION.cxx OUTPUT_VARIABLE OUTPUT) IF(BBTK_COMPILER_HAS_FUNCTION) MESSAGE(STATUS "Checking support for __FUNCTION__ -- yes") SET(BBTK_COMPILER_HAS_FUNCTION 1 CACHE INTERNAL "Support for extension C __FUNCTION__") WRITE_FILE(${CMAKE_CURRENT_BINARY_DIR}/CMakeOutput.log "Determining if the C compiler supports __FUNCTION__ " "passed with the following output:\n" "${OUTPUT}\n" APPEND) ELSE(BBTK_COMPILER_HAS_FUNCTION) MESSAGE(STATUS "Checking support for __FUNCTION__ -- no") SET(BBTK_COMPILER_HAS_FUNCTION 0 CACHE INTERNAL "Support for extension C __FUNCTION__") WRITE_FILE(${CMAKE_CURRENT_BINARY_DIR}/CMakeError.log "Determining if the C compiler supports __FUNCTION__ " "failed with the following output:\n" "${OUTPUT}\n" APPEND) ENDIF(BBTK_COMPILER_HAS_FUNCTION) ENDIF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$") #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Test is compiler support istringstream IF("BBTK_TEST_ISTRINGSTREAM" MATCHES "^BBTK_TEST_ISTRINGSTREAM$") MESSAGE(STATUS "Checking istringstream") TRY_RUN(BBTK_TEST_ISTRINGSTREAM BBTK_TEST_ISTRINGSTREAM_COMPILED ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkTestIstringStream.cxx) IF(BBTK_TEST_ISTRINGSTREAM_COMPILED) IF(BBTK_TEST_ISTRINGSTREAM) MESSAGE(STATUS "Checking istringstream works -- yes") SET(BBTK_TEST_ISTRINGSTREAM 1 CACHE INTERNAL "Whether istringstream works.") ELSE(BBTK_TEST_ISTRINGSTREAM) MESSAGE(STATUS "Checking istringstream works -- no") SET(BBTK_TEST_ISTRINGSTREAM 0 CACHE INTERNAL "Whether istringstream works.") ENDIF(BBTK_TEST_ISTRINGSTREAM) ELSE(BBTK_TEST_ISTRINGSTREAM_COMPILED) MESSAGE(STATUS "Checking istringstream -- failed") ENDIF(BBTK_TEST_ISTRINGSTREAM_COMPILED) ENDIF("BBTK_TEST_ISTRINGSTREAM" MATCHES "^BBTK_TEST_ISTRINGSTREAM$") #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) CHECK_INCLUDE_FILE("stdint.h" CMAKE_HAVE_STDINT_H) IF(UNIX) #Avoid polluting Win32 cmakecache CHECK_INCLUDE_FILE("inttypes.h" CMAKE_HAVE_INTTYPES_H) # termios CHECK_INCLUDE_FILE("termios.h" CMAKE_HAVE_TERMIOS_H) ENDIF(UNIX) # Special Time support, two conventions: *NIX vs Win32 CHECK_INCLUDE_FILE("sys/times.h" CMAKE_HAVE_SYS_TIMES_H) CHECK_INCLUDE_FILE("sys/timeb.h" CMAKE_HAVE_SYS_TIMEB_H) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Generates the bbtkConfigure.h file #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkConfigure.h.in ${CMAKE_CURRENT_BINARY_DIR}/bbtkConfigure.h @ONLY IMMEDIATE ) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- IF(NOT BBTK_INSTALL_NO_DEVELOPMENT) INSTALL_FILES(/include/bbtk FILES bbtkConfigure.h) ENDIF(NOT BBTK_INSTALL_NO_DEVELOPMENT) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Add the path to current dir for apps to find bbtkConfigure.h # LG : already done in upper dir #INCLUDE_DIRECTORIES( # ${CMAKE_CURRENT_BINARY_DIR} #for bbtkConfigure.h #) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # EO Generates the bbtkConfigure.h file #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # bbtk library creation #----------------------------------------------------------------------------- # Symbols must be exported (Windows) CREA_DEFINE(BBTK_EXPORT_SYMBOLS) #ADD_DEFINITIONS(-DCHECKBOXVIEW=1) #----------------------------------------------------------------------------- # Sources files FILE(GLOB SOURCES "." "*.cxx" "*.cpp") # "ThirdParty/wx/treemultictrl/*.cpp") FILE(GLOB SOURCES_H "." "*.h" "*.txx" ) #----------------------------------------------------------------------------- IF(BBTK_USE_KWWIDGETS) IF(KWWidgets_FOUND) include("${KWWidgets_CMAKE_DIR}/KWWidgetsWrappingMacros.cmake") kwwidgets_wrap_tcl(bbtk LIB_TCL_SRCS "vtkKWBlackBoxDialog.cxx" "") SET(SOURCES ${SOURCES} ${LIB_TCL_SRCS}) ENDIF(KWWidgets_FOUND) ENDIF(BBTK_USE_KWWIDGETS) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- IF(BBTK_USE_QT) IF(QT_FOUND) #--------------------------------------------------------------------------- # MOC SET(QT4_HEADERS_TO_WRAP bbtkQtBlackBoxDialog.h ) QT4_WRAP_CPP(MOC_SOURCES ${QT4_HEADERS_TO_WRAP} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED) #--------------------------------------------------------------------------- # UI QT4_WRAP_UI(UI_SOURCES bbtkQtBlackBoxDialog.ui ) SET(SOURCES ${SOURCES} ${MOC_SOURCES} ${UI_SOURCES}) ENDIF(QT_FOUND) # JFGA 03/12/2014 -- Temporal configuration of WT # *********Missing if conditional Wt******** #find_package(Boost COMPONENTS system thread signals) #find_library(wt wt) #find_library(wthttp wthttp) INCLUDE_DIRECTORIES(/usr/local/include/Wt) ENDIF(BBTK_USE_QT) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # lib definition ADD_LIBRARY(bbtk SHARED ${SOURCES} ${SOURCES_H}) #----------------------------------------------------------------------------- TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_LIBRARIES} ${BOOST_LIBRARIES} ${crea_LIBRARIES} ${WT_LIBRARIES}) #----------------------------------------------------------------------------- IF(UNIX) SET_TARGET_PROPERTIES(bbtk PROPERTIES COMPILE_FLAGS -Wall) ENDIF(UNIX) #IF(UNIX) # for gnu linker : version script used to define exported symbols #SET_TARGET_PROPERTIES(bbtk PROPERTIES # LINK_FLAGS_DEBUG -Wl,--version-script=bbtk.map) #SET_TARGET_PROPERTIES(bbtk PROPERTIES # LINK_FLAGS_RELEASE -Wl,--version-script=bbtk.map) #ENDIF(UNIX) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # EO bbtk library creation #----------------------------------------------------------------------------- #============================================================================= # bbtk library installation #============================================================================= #----------------------------------------------------------------------------- FILE(GLOB BBTK_HEADERS "*.h" "*.txx") INSTALL(FILES ${BBTK_HEADERS} DESTINATION include/bbtk) INSTALL(TARGETS bbtk DESTINATION ${BBTK_LIB_PATH}) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Code installing the files needed to find the lib by FIND_PACKAGE # Uses CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # - Set the variable LIBRARY_NAME to the name of your library SET(LIBRARY_NAME BBTK) SET(${LIBRARY_NAME}_INSTALL_FOLDER bbtk) SET(${LIBRARY_NAME}_LIBRARIES bbtk) SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS kernel/src) #kernel/src/ThirdParty) #IF(BBTK_USE_SHIPPED_BOOST) # SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS # ${${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS} # kernel/src/ThirdParty/${BBTK_SHIPPED_BOOST} # ) #ENDIF(BBTK_USE_SHIPPED_BOOST) IF(UNIX) SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS ${EXECUTABLE_OUTPUT_REL_PATH}) ELSE(UNIX) SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS ${EXECUTABLE_OUTPUT_REL_PATH} . ) #${EXECUTABLE_OUTPUT_REL_PATH})/Debug #${EXECUTABLE_OUTPUT_REL_PATH}/Release) ENDIF(UNIX) SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/bbtk) # include/bbtk/ThirdParty) SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS ${BBTK_LIB_PATH}) # OPTIONAL # - Set the version of your library # SET YOUR LIB VERSION #SET(${LIBRARY_NAME}_MAJOR_VERSION 1) #SET(${LIBRARY_NAME}_MINOR_VERSION 0) #SET(${LIBRARY_NAME}_BUILD_VERSION 0) # REQUIRED BUILD FLAGS #SET(${LIBRARY_NAME}_REQUIRED_C_FLAGS "") #SET(${LIBRARY_NAME}_REQUIRED_CXX_FLAGS "") #SET(${LIBRARY_NAME}_REQUIRED_LINK_FLAGS "") # ADDITIONAL CONFIG FILE # HERE WE USE ONE TO EXPORT testLib_EXPORTED_VALUE # SET(${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE TRUE) SET(${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalBBTKConfig.cmake.in) SET(${LIBRARY_NAME}_ADDITIONAL_USE_FILE ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalUseBBTK.cmake.in) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME}) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # EO bbtk library installation #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Recurse in EditorGraphicBBS to build the needed libs #EED ADD_SUBDIRECTORY(EditorGraphicBBS) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Recurse in ThirdParty to build the needed libs #ADD_SUBDIRECTORY(ThirdParty) #----------------------------------------------------------------------------- MESSAGE(STATUS "=======================================") MESSAGE(STATUS "") #----------------------------------------------------------------------------- # EOF #-----------------------------------------------------------------------------