X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fcmake%2FBBTKConfigurePackage.cmake;h=f9451b89e7b82c14a6d3d8b08b0958aae77872f8;hb=fe455ba4df3ec334ad809d82a51f261f1edcd343;hp=0e5fe48af918f772599a35f35f0065951a16d78c;hpb=a26195c366a89795288009cf7e20f11afa494970;p=bbtk.git diff --git a/kernel/cmake/BBTKConfigurePackage.cmake b/kernel/cmake/BBTKConfigurePackage.cmake index 0e5fe48..f9451b8 100644 --- a/kernel/cmake/BBTKConfigurePackage.cmake +++ b/kernel/cmake/BBTKConfigurePackage.cmake @@ -1,68 +1,162 @@ #--------------------------------------------------------------------------- +# If not a core package must include necessary cmake scripts +IF(NOT BBTK_CORE_PACKAGE) + # + INCLUDE(${BBTK_CMAKE_DIR}/BBTKBuildAllOption.cmake) + INCLUDE(${BBTK_CMAKE_DIR}/BBTKMacros.cmake) + INCLUDE(${BBTK_CMAKE_DIR}/BBTKFindLibraries.cmake) + #------------------------------------------------------------------------- + # Configure bbtk_config_build.xml.in for bbi to find the bbs + INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigureBbtkConfigXmlForBuildTree.cmake) + #------------------------------------------------------------------------- + # +ENDIF(NOT BBTK_CORE_PACKAGE) +#--------------------------------------------------------------------------- + + +#----------------------------------------------------------------------------- +SET(${BBTK_PACKAGE_NAME}_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +#----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# DOES THE USER WANT TO BUILD THE PACKAGE ? +OPTION(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME} + "Build the bbtk package ${BBTK_PACKAGE_NAME} ?" OFF) +SWITCH_ON_IF_BUILD_ALL(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME}) +#----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- # Package dependencies -IF(${BBTK_PACKAGE_NAME}_USE_VTK) - SET(USE_VTK ON CACHE BOOL "Use VTK" FORCE) - SET(BBTK_PACKAGE_LIBS - ${BBTK_PACKAGE_LIBS} - ${BBTK_VTK_LIBRARIES} - ) -ENDIF(${BBTK_PACKAGE_NAME}_USE_VTK) - -IF(${BBTK_PACKAGE_NAME}_USE_ITK) - SET(USE_ITK ON CACHE BOOL "Use ITK" FORCE) - SET(BBTK_PACKAGE_LIBS - ${BBTK_PACKAGE_LIBS} - ${BBTK_ITK_LIBRARIES} - ) -ENDIF(${BBTK_PACKAGE_NAME}_USE_ITK) - -IF(${BBTK_PACKAGE_NAME}_USE_GDCM) - SET(USE_GDCM ON CACHE BOOL "Use GDCM" FORCE) - SET(BBTK_PACKAGE_LIBS - ${BBTK_PACKAGE_LIBS} - ${BBTK_GDCM_LIBRARIES} - ) -ENDIF(${BBTK_PACKAGE_NAME}_USE_GDCM) - -IF(${BBTK_PACKAGE_NAME}_USE_GSMIS) - SET(USE_GSMIS ON CACHE BOOL "Use GSMIS" FORCE) - SET(BBTK_PACKAGE_LIBS - ${BBTK_PACKAGE_LIBS} - ${BBTK_GSMIS_LIBRARIES} - ) -ENDIF(${BBTK_PACKAGE_NAME}_USE_GSMIS) - -IF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS) - SET(BBTK_USE_WXWIDGETS ON CACHE BOOL "Use wxWidgets" FORCE) - MESSAGE(STATUS "BBTK_USE_WXWIDGETS forced to ON by the compilation of the package ${BBTK_PACKAGE_NAME}") - # bbtk already links against wx ... - # SET(BBTK_PACKAGE_LIBS - # ${BBTK_PACKAGE_LIBS} - # ${BBTK_WXWIDGETS_LIBRARIES} - # ) -ENDIF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS) +SET(${BBTK_PACKAGE_NAME}_DEPS bb${BBTK_PACKAGE_NAME}) +STRING(REGEX MATCH "${${BBTK_PACKAGE_NAME}_DEPS}" + ${BBTK_PACKAGE_NAME}_IN_DEPS + "${BBTK_PACKAGES_DEPS}") +ENDIF(UNIX) +#----------------------------------------------------------------------------- +#SET(BBTK_PACKAGES_DEPS "" CACHE INTERNAL "bbtk packages dependencies" FORCE) +#----------------------------------------------------------------------------- +# IF THE USER HAS CHOSEN TO BUILD THE PACKAGE +IF(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME}) + #--------------------------------------------------------------------------- -#--------------------------------------------------------------------------- + #---------------------------------------------------------------------------- + # VARS CONFIGURED IN bbPackage.h AND IN doc/bbdoc/header.html.in + SET(BBTK_PACKAGE_AUTHOR "${${BBTK_PACKAGE_NAME}_AUTHOR}") + SET(BBTK_PACKAGE_DESCRIPTION "${${BBTK_PACKAGE_NAME}_DESCRIPTION}") + SET(BBTK_PACKAGE_MAJOR_VERSION ${${BBTK_PACKAGE_NAME}_MAJOR_VERSION}) + SET(BBTK_PACKAGE_MINOR_VERSION ${${BBTK_PACKAGE_NAME}_MINOR_VERSION}) + SET(BBTK_PACKAGE_BUILD_VERSION ${${BBTK_PACKAGE_NAME}_BUILD_VERSION}) + SET(BBTK_PACKAGE_VERSION + "\"${${BBTK_PACKAGE_NAME}_MAJOR_VERSION}.${${BBTK_PACKAGE_NAME}_MINOR_VERSION}.${${BBTK_PACKAGE_NAME}_BUILD_VERSION}\"") + #---------------------------------------------------------------------------- + + + #--------------------------------------------------------------------------- + # If package deps not in global deps : add them + IF(NOT ${BBTK_PACKAGE_NAME}_IN_DEPS) + SET(BBTK_PACKAGES_DEPS "${${BBTK_PACKAGE_NAME}_DEPS};${BBTK_PACKAGES_DEPS}" + CACHE INTERNAL "bbtk packages dependencies" FORCE) + # MESSAGE(STATUS "Packages=${BBTK_PACKAGES_DEPS}") + ENDIF(NOT ${BBTK_PACKAGE_NAME}_IN_DEPS) + #--------------------------------------------------------------------------- + #--------------------------------------------------------------------------- + # Package dependencies + IF(${BBTK_PACKAGE_NAME}_USE_VTK) + SET(USE_VTK ON CACHE BOOL "Use VTK" FORCE) + SET(${BBTK_PACKAGE_NAME}_LIBS + ${${BBTK_PACKAGE_NAME}_LIBS} + ${BBTK_VTK_LIBRARIES} + ) + ENDIF(${BBTK_PACKAGE_NAME}_USE_VTK) + + IF(${BBTK_PACKAGE_NAME}_USE_ITK) + SET(USE_ITK ON CACHE BOOL "Use ITK" FORCE) + SET(${BBTK_PACKAGE_NAME}_LIBS + ${${BBTK_PACKAGE_NAME}_LIBS} + ${BBTK_ITK_LIBRARIES} + ) + ENDIF(${BBTK_PACKAGE_NAME}_USE_ITK) + + IF(${BBTK_PACKAGE_NAME}_USE_GDCM) + SET(USE_GDCM ON CACHE BOOL "Use GDCM" FORCE) + SET(${BBTK_PACKAGE_NAME}_LIBS + ${${BBTK_PACKAGE_NAME}_LIBS} + ${BBTK_GDCM_LIBRARIES} + ) + ENDIF(${BBTK_PACKAGE_NAME}_USE_GDCM) + + IF(${BBTK_PACKAGE_NAME}_USE_GSMIS) + SET(USE_GSMIS ON CACHE BOOL "Use GSMIS" FORCE) + SET(${BBTK_PACKAGE_NAME}_LIBS + ${${BBTK_PACKAGE_NAME}_LIBS} + ${BBTK_GSMIS_LIBRARIES} + ) + ENDIF(${BBTK_PACKAGE_NAME}_USE_GSMIS) + + IF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS) + IF(BBTK_CORE_PACKAGE) + SET(BBTK_USE_WXWIDGETS ON CACHE BOOL "Use wxWidgets" FORCE) + MESSAGE(STATUS "BBTK_USE_WXWIDGETS forced to ON by the compilation of the package ${BBTK_PACKAGE_NAME}") + # bbtk already links against wx ... + # SET(${BBTK_PACKAGE_NAME}_LIBS + # ${${BBTK_PACKAGE_NAME}_LIBS} + # ${BBTK_WXWIDGETS_LIBRARIES} + # ) + ELSE(BBTK_CORE_PACKAGE) + # If linking against a non-wx bbtk : problem + IF(NOT BBTK_USE_WXWIDGETS) + MESSAGE(FATAL_ERROR "The bbtk package ${BBTK_PACKAGE_NAME} needs wxWidgets however the bbtk library which was found on your system was not compiled with wxWidgets : recompile it and rebuild the package.") + ELSE(NOT BBTK_USE_WXWIDGETS) + SET(USE_WXWIDGETS ON CACHE BOOL "Use wxWidgets" FORCE) + ENDIF(NOT BBTK_USE_WXWIDGETS) + ENDIF(BBTK_CORE_PACKAGE) + ENDIF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS) -#---------------------------------------------------------------------------- -# DEFINES ${PACKAGE_NAME}_AUTHOR -# ADD_DEFINITIONS( -D${PACKAGE_NAME}_AUTHOR="${PACKAGE_AUTHOR}") -#---------------------------------------------------------------------------- -#---------------------------------------------------------------------------- -# DEFINES ${PACKAGE_NAME}_DESCRIPTION -# ADD_DEFINITIONS( -D${PACKAGE_NAME}_DESCRIPTION="${PACKAGE_DESCRIPTION}") -#---------------------------------------------------------------------------- -#---------------------------------------------------------------------------- -# DEFINES ${BBTK_PACKAGE_NAME}_VERSION -SET(BBTK_PACKAGE_VERSION - "${BBTK_PACKAGE_MAJOR_VERSION}.${BBTK_PACKAGE_MINOR_VERSION}.${BBTK_PACKAGE_BUILD_VERSION}") -#ADD_DEFINITIONS( -D${BBTK_PACKAGE_NAME}_VERSION=${BBTK_PACKAGE_VERSION}) -#---------------------------------------------------------------------------- + #--------------------------------------------------------------------------- + + + #--------------------------------------------------------------------------- + # Recurse into subdirs + SUBDIRS(src) + SUBDIRS(doc) + SUBDIRS(bbs) +#--------------------------------------------------------------------------- + +#--------------------------------------------------------------------------- +ELSE(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME}) + #------------------------------------------------------------------------- + + #----------------------------------------------------------------------- + # If package deps in global deps : reset global deps + IF(${BBTK_PACKAGE_NAME}_IN_DEPS) + SET(BBTK_PACKAGES_DEPS "" CACHE INTERNAL + "bbtk packages dependencies" FORCE) +# STRING(REPLACE "${${BBTK_PACKAGE_NAME}_DEPS};" +# "" TEMP +# ${BBTK_PACKAGES_DEPS}) +# +# SET(BBTK_PACKAGES_DEPS ${TEMP} +# CACHE INTERNAL "bbtk packages dependencies" FORCE) + ENDIF(${BBTK_PACKAGE_NAME}_IN_DEPS) + #----------------------------------------------------------------------- + + #----------------------------------------------------------------------- + # Remove the package include scripts to avoid loading it by include * + FILE(REMOVE ${BBTK_BBS_BUILD_PATH}/${BBTK_PACKAGE_NAME}.bbs) + FILE(REMOVE ${BBTK_BBS_BUILD_PATH}/${BBTK_PACKAGE_NAME}-appli.bbs) + #----------------------------------------------------------------------- + + +#--------------------------------------------------------------------------- +ENDIF(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME}) +#----------------------------------------------------------------------------- +# EOF +#-----------------------------------------------------------------------------