#----------------------------------------------------------------------------- # 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) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # 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) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # 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 #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Sources files FILE(GLOB SOURCES "." "*.cxx" "*.cpp") FILE(GLOB SOURCES_H "." "*.h" ) #----------------------------------------------------------------------------- # lib definition ADD_LIBRARY(bbtk SHARED ${SOURCES} ${SOURCES_H}) #----------------------------------------------------------------------------- TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_LIBRARIES}) #----------------------------------------------------------------------------- #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 #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- INSTALL_FILES(/include/bbtk "\\.h$") INSTALL_TARGETS(/lib bbtk) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # TO DO : create FindBBTK.cmake #INCLUDE(InstallFindBBTK.cmake) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # EO bbtk library installation #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # EOF #-----------------------------------------------------------------------------