#----------------------------------------------------------------------------- # BUILDS AND INSTALLS THE LIBRARY BBTK #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Tests #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # 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) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # bbtk library dependencies #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # WXWIDGETS OPTION(BBTK_USE_WXWIDGETS "Build bbtk library and applications in graphical mode using the wxWidgets library" OFF) IF(BBTK_USE_WXWIDGETS) SET(USE_WXWIDGETS ON CACHE BOOL "Use WxWidgets" FORCE) # INCLUDE(cmake/FIND_AND_USE_WXWIDGETS.cmake) # FIND_AND_USE_WXWIDGETS() # ADD_DEF( _USE_WXWIDGETS_ ) SET(BBTK_LINK_LIBRARIES ${BBTK_LINK_LIBRARIES} ${BBTK_WXWIDGETS_LIBRARIES} ) ENDIF(BBTK_USE_WXWIDGETS) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # BOOST SET(BBTK_USE_BOOST TRUE) IF(BBTK_USE_BOOST) SET(USE_BOOST ON CACHE BOOL "Use boost C++ library" FORCE) SET(BBTK_LINK_LIBRARIES ${BBTK_LINK_LIBRARIES} ${BBTK_BOOST_LIBRARIES} ) ENDIF(BBTK_USE_BOOST) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # On unix systems, need to link against dl for dynamic librairies open/close IF(UNIX) SET(BBTK_LINK_LIBRARIES ${BBTK_LINK_LIBRARIES} dl) ENDIF(UNIX) #----------------------------------------------------------------------------- MESSAGE(STATUS "bbtk link libraries = ${BBTK_LINK_LIBRARIES}") #----------------------------------------------------------------------------- # EO bbtk library dependencies #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # 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) ADD_DEF(BBTK_EXPORT_SYMBOLS) #ADD_DEFINITIONS(-DCHECKBOXVIEW=1) #----------------------------------------------------------------------------- # Sources files FILE(GLOB SOURCES "." "*.cxx" "*.cpp") # "ThirdParty/wx/treemultictrl/*.cpp") FILE(GLOB SOURCES_H "." "*.h" ) #----------------------------------------------------------------------------- # lib definition ADD_LIBRARY(bbtk SHARED ${SOURCES} ${SOURCES_H}) #----------------------------------------------------------------------------- TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_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") 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 CMakeCreateFindPackage #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # - 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}/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) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Includes CMakeCreateFindPackage INCLUDE(${CMakeCreateFindPackage_DIR}/CMakeCreateFindPackage.cmake) CMAKE_CREATE_FIND_PACKAGE(${LIBRARY_NAME}) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # EO bbtk library installation #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Recurse in ThirdParty to build the needed libs SUBDIRS(ThirdParty) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # EOF #-----------------------------------------------------------------------------