From 8ab3078737deb219443554b0df6be43b3bd82d11 Mon Sep 17 00:00:00 2001 From: guigues Date: Fri, 1 Feb 2008 12:05:47 +0000 Subject: [PATCH] Install Mechanism --- kernel/CMakeLists.txt | 7 + ...Options.cmake => BBTKAddDefinitions.cmake} | 5 + kernel/cmake/BBTKConfigurePackage.cmake | 5 +- kernel/cmake/BBTKConfigurePackagePaths.cmake | 8 + kernel/cmake/BBTKConfigurePackage_bbs.cmake | 2 +- kernel/cmake/BBTKConfigurePackage_doc.cmake | 4 +- kernel/cmake/BBTKConfigurePackage_src.cmake | 4 +- kernel/cmake/BBTKFindLibraries.cmake | 65 +---- ...WIN.cmake => BBTKFindWxWidgetsWIN32.cmake} | 0 ...NWANTED.cmake => BBTKMarkAsAdvanced.cmake} | 0 ...BBTKPaths.cmake => BBTKSetBasePaths.cmake} | 43 ++- kernel/cmake/BBTKSetDeducedPaths.cmake | 29 ++ kernel/cmake/BBTKSingleOutputPath.cmake | 6 - kernel/cmake/BBTKWxWidgets.cmake | 80 ++++++ kernel/cmake/CMakeCreateFindPackage.cmake | 254 ++++++++++++++++++ ...MakeCreateFindPackage_FindLibrary.cmake.in | 106 ++++++++ ...keCreateFindPackage_LibraryConfig.cmake.in | 123 +++++++++ ...CMakeCreateFindPackage_UseLibrary.cmake.in | 34 +++ kernel/doc/bbtkDoxygen/CMakeLists.txt | 2 +- kernel/src/CMakeLists.txt | 62 ++++- packages/std/Configure.cmake | 2 +- packages/std/bbs/CMakeLists.txt | 2 +- packages/std/doc/CMakeLists.txt | 2 +- packages/std/doc/bbdoc/CMakeLists.txt | 2 +- packages/std/doc/doxygen/CMakeLists.txt | 2 +- packages/std/src/CMakeLists.txt | 2 +- packages/void-bbtk-package.tgz | Bin 11783 -> 11825 bytes packages/wx/Configure.cmake | 2 +- packages/wx/bbs/CMakeLists.txt | 2 +- packages/wx/doc/CMakeLists.txt | 2 +- packages/wx/doc/bbdoc/CMakeLists.txt | 2 +- packages/wx/doc/doxygen/CMakeLists.txt | 2 +- packages/wx/src/CMakeLists.txt | 2 +- 33 files changed, 742 insertions(+), 121 deletions(-) rename kernel/cmake/{BBTKResolveOptions.cmake => BBTKAddDefinitions.cmake} (75%) create mode 100644 kernel/cmake/BBTKConfigurePackagePaths.cmake rename kernel/cmake/{BBTKFindWX_WIN.cmake => BBTKFindWxWidgetsWIN32.cmake} (100%) rename kernel/cmake/{MARK_AS_ADVANCED_UNWANTED.cmake => BBTKMarkAsAdvanced.cmake} (100%) rename kernel/cmake/{BBTKPaths.cmake => BBTKSetBasePaths.cmake} (55%) create mode 100644 kernel/cmake/BBTKSetDeducedPaths.cmake delete mode 100644 kernel/cmake/BBTKSingleOutputPath.cmake create mode 100644 kernel/cmake/BBTKWxWidgets.cmake create mode 100644 kernel/cmake/CMakeCreateFindPackage.cmake create mode 100644 kernel/cmake/CMakeCreateFindPackage_FindLibrary.cmake.in create mode 100644 kernel/cmake/CMakeCreateFindPackage_LibraryConfig.cmake.in create mode 100644 kernel/cmake/CMakeCreateFindPackage_UseLibrary.cmake.in diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index e3c70b7..4f223b1 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -41,3 +41,10 @@ ELSE(UNIX) ) ENDIF(UNIX) #----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# Recurse into cmake folder to install files +SUBDIRS(cmake) +#----------------------------------------------------------------------------- + + diff --git a/kernel/cmake/BBTKResolveOptions.cmake b/kernel/cmake/BBTKAddDefinitions.cmake similarity index 75% rename from kernel/cmake/BBTKResolveOptions.cmake rename to kernel/cmake/BBTKAddDefinitions.cmake index bc784da..e537dda 100644 --- a/kernel/cmake/BBTKResolveOptions.cmake +++ b/kernel/cmake/BBTKAddDefinitions.cmake @@ -1,3 +1,8 @@ +# Set C preprocessor definitions +ADD_DEF_WITH_VAL(BBTK_SHARE_REL_PATH ${BBTK_SHARE_REL_PATH}) +ADD_DEF_WITH_VAL(BBTK_DOC_REL_PATH ${BBTK_DOC_REL_PATH}) +ADD_DEF_WITH_VAL(BBTK_BBS_REL_PATH ${BBTK_BBS_REL_PATH}) + #----------------------------------------------------------------------------- # messages compilation options IF (BBTK_COMPILE_MESSAGES) diff --git a/kernel/cmake/BBTKConfigurePackage.cmake b/kernel/cmake/BBTKConfigurePackage.cmake index f752ef4..7c4ce86 100644 --- a/kernel/cmake/BBTKConfigurePackage.cmake +++ b/kernel/cmake/BBTKConfigurePackage.cmake @@ -2,8 +2,9 @@ # If not a core package must include necessary cmake scripts IF(NOT BBTK_CORE_PACKAGE) ## TO DO -# INCLUDE(${BBTK_DIR}/BBTKMacros.cmake) -# INCLUDE(${BBTK_DIR}/BBTKFindLibraries.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKBuildAllOption.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKMacros.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKFindLibraries.cmake) # etc. ENDIF(NOT BBTK_CORE_PACKAGE) #--------------------------------------------------------------------------- diff --git a/kernel/cmake/BBTKConfigurePackagePaths.cmake b/kernel/cmake/BBTKConfigurePackagePaths.cmake new file mode 100644 index 0000000..e388c04 --- /dev/null +++ b/kernel/cmake/BBTKConfigurePackagePaths.cmake @@ -0,0 +1,8 @@ +# Use the installed appli +# TO DO : use computed path for build/install tree +SET(BBTK_BBI bbi) +SET(BBTK_BBFY bbfy) +SET(BBTK_BBDOC bbdoc) + +INCLUDE(${BBTK_CMAKE_DIR}/BBTKSetDeducedPaths.cmake) + diff --git a/kernel/cmake/BBTKConfigurePackage_bbs.cmake b/kernel/cmake/BBTKConfigurePackage_bbs.cmake index 6d2f40a..a33abab 100644 --- a/kernel/cmake/BBTKConfigurePackage_bbs.cmake +++ b/kernel/cmake/BBTKConfigurePackage_bbs.cmake @@ -27,7 +27,7 @@ IF(BBTK_PACKAGE_INCLUDE_ALL_BBS_APPLI) ENDIF(BBTK_PACKAGE_INCLUDE_ALL_BBS_APPLI) #---------------------------------------------------------------------------- -INCLUDE(${BBTK_DIR}/BBTKCreatePackageIncludeScript.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKCreatePackageIncludeScript.cmake) BBTK_CREATE_PACKAGE_INCLUDE_SCRIPT( "${BBTK_PACKAGE_NAME}" diff --git a/kernel/cmake/BBTKConfigurePackage_doc.cmake b/kernel/cmake/BBTKConfigurePackage_doc.cmake index cb5d55f..453bb78 100644 --- a/kernel/cmake/BBTKConfigurePackage_doc.cmake +++ b/kernel/cmake/BBTKConfigurePackage_doc.cmake @@ -4,8 +4,8 @@ # and include necessary cmake scripts IF(NOT BBTK_CORE_PACKAGE) ## TO DO -# INCLUDE(${BBTK_DIR}/BBTKMacros.cmake) -# INCLUDE(${BBTK_DIR}/BBTKFindLibraries.cmake) +# INCLUDE(${BBTK_CMAKE_DIR}/BBTKMacros.cmake) +# INCLUDE(${BBTK_CMAKE_DIR}/BBTKFindLibraries.cmake) # etc. OPTION(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME}_HTML_DOC "Build the bbtk package ${BBTK_PACKAGE_NAME} html documentation ?" OFF) diff --git a/kernel/cmake/BBTKConfigurePackage_src.cmake b/kernel/cmake/BBTKConfigurePackage_src.cmake index ab6cfbd..cb8d812 100644 --- a/kernel/cmake/BBTKConfigurePackage_src.cmake +++ b/kernel/cmake/BBTKConfigurePackage_src.cmake @@ -11,7 +11,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ) #---------------------------------------------------------------------------- # CREATES bb${BBTK_PACKAGE_NAME}Package.h CONFIGURE_FILE( - ${BBTK_DIR}/bbPackage.h.in + ${BBTK_CMAKE_DIR}/bbPackage.h.in ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.h @ONLY IMMEDIATE ) @@ -24,7 +24,7 @@ INSTALL_FILES( #---------------------------------------------------------------------------- # CREATES bb${BBTK_PACKAGE_NAME}Package.cxx CONFIGURE_FILE( - ${BBTK_DIR}/bbPackage.cxx.in + ${BBTK_CMAKE_DIR}/bbPackage.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.cxx @ONLY IMMEDIATE ) diff --git a/kernel/cmake/BBTKFindLibraries.cmake b/kernel/cmake/BBTKFindLibraries.cmake index 5f4346c..5a86dd3 100644 --- a/kernel/cmake/BBTKFindLibraries.cmake +++ b/kernel/cmake/BBTKFindLibraries.cmake @@ -112,69 +112,10 @@ ENDIF(USE_GDCM) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- -#OPTION(USE_WXWIDGETS "Build wxWidgets-based black boxes" OFF) IF(USE_WXWIDGETS) - -IF(WIN32) - # Search WXWIDGETS - - # WXWINDOWS_LIBRARY = full path to the wxWindows library and linker flags on unix - # CMAKE_WX_CXX_FLAGS = compiler flags for building wxWindows - # WXWINDOWS_INCLUDE_PATH = include path of wxWindows - SET(WXWINDOWS_USE_GL 1) - - #wxWidgets build related stuff - SET(WXW_USE_DEBUG ON) - SET(WXW_USE_UNICODE OFF) - SET(WXW_USE_SHARED ON) - SET(WXW_USE_UNIV OFF) - SET(WXW_USE_MONO OFF) - SET(WXW_FILE_VERSION "28") - SET(WXW_VERSION "2.8") - - #CMake Options - # Why forcing verbosity ? - # SET(CMAKE_VERBOSE_MAKEFILE TRUE) - - INCLUDE (${BBTK_DIR}/BBTKFindWX_WIN.cmake) - # - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${WXWIDGETS_CXX_FLAGS}") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}${WXWIDGETS_EXE_LINKER_FLAGS}") - ADD_DEFINITIONS( ${WXWIDGETS_DEFINITIONS} ) - # - INCLUDE_DIRECTORIES(${WXWIDGETS_INCLUDE_DIR}) - LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} ) - SET(THE_WXWIDGETS_LIBRARIES - ${WXWIDGETS_LIBRARIES} - debug msvcrtd - debug msvcprtd - optimized msvcrt - optimized msvcprt - ) -ENDIF(WIN32) -IF(UNIX) - # GTK2 - INCLUDE(${BBTK_DIR}/BBTKFindGTK2.cmake) - INCLUDE_DIRECTORIES(${GTK2_INCLUDE_DIRS}) - LINK_DIRECTORIES(${GTK2_LIBRARY_DIRS}) - LINK_LIBRARIES(${GTK2_LIBRARIES}) - # WX - # LG : Do not force but use what is installed ! - # SET(wxWidgets_USE_LIBS base core gl) - FIND_PACKAGE( wxWidgets REQUIRED) - INCLUDE( ${wxWidgets_USE_FILE} ) - MARK_AS_ADVANCED(wxWidgets_CONFIG_EXECUTABLE) - SET(THE_WXWIDGETS_LIBRARIES - ${GTK2_LIBRARIES} - ${wxWidgets_LIBRARIES} - ) -ENDIF(UNIX) - -ADD_DEF( _USE_WXWIDGETS_ ) -SET(BBTK_WXWIDGETS_LIBRARIES - ${THE_WXWIDGETS_LIBRARIES} - ) - + INCLUDE(${BBTK_CMAKE_DIR}/BBTKWxWidgets.cmake) + BBTK_FIND_WXWIDGETS() + BBTK_USE_WXWIDGETS() ENDIF(USE_WXWIDGETS) #----------------------------------------------------------------------------- diff --git a/kernel/cmake/BBTKFindWX_WIN.cmake b/kernel/cmake/BBTKFindWxWidgetsWIN32.cmake similarity index 100% rename from kernel/cmake/BBTKFindWX_WIN.cmake rename to kernel/cmake/BBTKFindWxWidgetsWIN32.cmake diff --git a/kernel/cmake/MARK_AS_ADVANCED_UNWANTED.cmake b/kernel/cmake/BBTKMarkAsAdvanced.cmake similarity index 100% rename from kernel/cmake/MARK_AS_ADVANCED_UNWANTED.cmake rename to kernel/cmake/BBTKMarkAsAdvanced.cmake diff --git a/kernel/cmake/BBTKPaths.cmake b/kernel/cmake/BBTKSetBasePaths.cmake similarity index 55% rename from kernel/cmake/BBTKPaths.cmake rename to kernel/cmake/BBTKSetBasePaths.cmake index 97fe461..c0d27b4 100644 --- a/kernel/cmake/BBTKPaths.cmake +++ b/kernel/cmake/BBTKSetBasePaths.cmake @@ -1,9 +1,24 @@ +#----------------------------------------------------------------------------- +# Path for binaries +SET (EXECUTABLE_OUTPUT_REL_PATH bin) +SET (LIBRARY_OUTPUT_REL_PATH bin) +SET (EXECUTABLE_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/${EXECUTABLE_OUTPUT_REL_PATH}) +SET (LIBRARY_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/${LIBRARY_OUTPUT_REL_PATH}) +#----------------------------------------------------------------------------- + + + #----------------------------------------------------------------------------- # The var BBTK_BIN_PATH # gives the system-dependent path to output binaries # BBTK_BBI, BBTK_BBFY and BBTK_BBDOC # point to the system-dependent applications # (.exe on win / no extension on lin) +# WARNING : +# On WIN32, these paths will only be right at *BUILD TIME* in VS6 or .net +# Cannot be used at cmake run time ! IF(WIN32) IF(CMAKE_GENERATOR STREQUAL "Visual Studio 6") SET(BBTK_BIN_PATH ${EXECUTABLE_OUTPUT_PATH}/$(IntDir)) @@ -28,6 +43,7 @@ ENDIF(WIN32) # from build tree root or install tree root # (different on win/lin) IF(WIN32) + SET(BBTK_SHARE_REL_PATH) SET(BBTK_DOC_REL_PATH doc) SET(BBTK_BBS_REL_PATH bbs) ELSE(WIN32) @@ -35,31 +51,4 @@ ELSE(WIN32) SET(BBTK_DOC_REL_PATH share/bbtk/doc) SET(BBTK_BBS_REL_PATH share/bbtk/bbs) ENDIF(WIN32) -# Set C preprocessor definitions -ADD_DEF_WITH_VAL(BBTK_DOC_REL_PATH ${BBTK_DOC_REL_PATH}) -ADD_DEF_WITH_VAL(BBTK_BBS_REL_PATH ${BBTK_BBS_REL_PATH}) -# Black box docs relative path -SET(BBTK_BBDOC_REL_PATH ${BBTK_DOC_REL_PATH}/bbdoc) -# Doxygen docs relative path -SET(BBTK_DOXYGEN_REL_PATH ${BBTK_DOC_REL_PATH}/doxygen) - -# Now compute BUILD TREE and INSTALL TREE **ABSOLUTE PATHS** -SET(BBTK_DOC_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_DOC_REL_PATH}) -SET(BBTK_BBDOC_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_BBDOC_REL_PATH}) -SET(BBTK_DOXYGEN_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_DOXYGEN_REL_PATH}) -SET(BBTK_BBS_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_BBS_REL_PATH}) - -SET(BBTK_DOC_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_DOC_REL_PATH}) -SET(BBTK_BBDOC_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_BBDOC_REL_PATH}) -SET(BBTK_DOXYGEN_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_DOXYGEN_REL_PATH}) -SET(BBTK_BBS_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_BBS_REL_PATH}) - -# Create build directories if necessary -MKDIR(${BBTK_DOC_BUILD_PATH}) -MKDIR(${BBTK_BBDOC_BUILD_PATH}) -MKDIR(${BBTK_DOXYGEN_BUILD_PATH}) -MKDIR(${BBTK_DOXYGEN_BUILD_PATH}) -MKDIR(${BBTK_BBS_BUILD_PATH}) - -#MESSAGE(STATUS "doc='${BBTK_DOC_INSTALL_PATH}'") #----------------------------------------------------------------------------- diff --git a/kernel/cmake/BBTKSetDeducedPaths.cmake b/kernel/cmake/BBTKSetDeducedPaths.cmake new file mode 100644 index 0000000..30d9c4f --- /dev/null +++ b/kernel/cmake/BBTKSetDeducedPaths.cmake @@ -0,0 +1,29 @@ +# Black box docs relative path +SET(BBTK_BBDOC_REL_PATH ${BBTK_DOC_REL_PATH}/bbdoc) +# Doxygen docs relative path +SET(BBTK_DOXYGEN_REL_PATH ${BBTK_DOC_REL_PATH}/doxygen) + +# Now compute BUILD TREE and INSTALL TREE **ABSOLUTE PATHS** +SET(BBTK_DOC_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_DOC_REL_PATH}) +SET(BBTK_BBDOC_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_BBDOC_REL_PATH}) +SET(BBTK_DOXYGEN_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_DOXYGEN_REL_PATH}) +SET(BBTK_BBS_BUILD_PATH ${PROJECT_BINARY_DIR}/${BBTK_BBS_REL_PATH}) + +SET(BBTK_DOC_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_DOC_REL_PATH}) +SET(BBTK_BBDOC_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_BBDOC_REL_PATH}) +SET(BBTK_DOXYGEN_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_DOXYGEN_REL_PATH}) +SET(BBTK_BBS_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/${BBTK_BBS_REL_PATH}) + +# Create build directories if necessary +MKDIR(${BBTK_DOC_BUILD_PATH}) +MKDIR(${BBTK_BBDOC_BUILD_PATH}) +MKDIR(${BBTK_DOXYGEN_BUILD_PATH}) +MKDIR(${BBTK_DOXYGEN_BUILD_PATH}) +MKDIR(${BBTK_BBS_BUILD_PATH}) + +#----------------------------------------------------------------------------- +SET (EXECUTABLE_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/${EXECUTABLE_OUTPUT_REL_PATH}) +SET (LIBRARY_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/${LIBRARY_OUTPUT_REL_PATH}) +#----------------------------------------------------------------------------- diff --git a/kernel/cmake/BBTKSingleOutputPath.cmake b/kernel/cmake/BBTKSingleOutputPath.cmake deleted file mode 100644 index 15f63a7..0000000 --- a/kernel/cmake/BBTKSingleOutputPath.cmake +++ /dev/null @@ -1,6 +0,0 @@ -#----------------------------------------------------------------------------- -# Path for binaries : default = bin -SET (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.") -SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single output directory for building all libraries.") -MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH) -#----------------------------------------------------------------------------- diff --git a/kernel/cmake/BBTKWxWidgets.cmake b/kernel/cmake/BBTKWxWidgets.cmake new file mode 100644 index 0000000..4de976b --- /dev/null +++ b/kernel/cmake/BBTKWxWidgets.cmake @@ -0,0 +1,80 @@ +#======================================================================= +# Looks for WxWidgets +# sets BBTK_WXWIDGETS_FOUND to true if found +#======================================================================= +MACRO(BBTK_FIND_WXWIDGETS) + IF(WIN32) + # Search WXWIDGETS + + # WXWINDOWS_LIBRARY = full path to the wxWindows library and linker flags on unix + # CMAKE_WX_CXX_FLAGS = compiler flags for building wxWindows + # WXWINDOWS_INCLUDE_PATH = include path of wxWindows + SET(WXWINDOWS_USE_GL 1) + + #wxWidgets build related stuff + SET(WXW_USE_DEBUG ON) + SET(WXW_USE_UNICODE OFF) + SET(WXW_USE_SHARED ON) + SET(WXW_USE_UNIV OFF) + SET(WXW_USE_MONO OFF) + SET(WXW_FILE_VERSION "28") + SET(WXW_VERSION "2.8") + + #CMake Options + # Why forcing verbosity ? + # SET(CMAKE_VERBOSE_MAKEFILE TRUE) + + INCLUDE (${BBTK_CMAKE_DIR}/BBTKFindWxWidgetsWIN32.cmake) + # + + ELSE(WIN32) + # GTK2 + INCLUDE(${BBTK_CMAKE_DIR}/BBTKFindGTK2.cmake) + # WX + # LG : Do not force but use what is installed ! + # SET(wxWidgets_USE_LIBS base core gl) + FIND_PACKAGE( wxWidgets REQUIRED) + # + ENDIF(WIN32) + + + +ENDMACRO(BBTK_FIND_WXWIDGETS) +#======================================================================= + +#======================================================================= +MACRO(BBTK_USE_WXWIDGETS) + # Preprocessor settings + ADD_DEF( _USE_WXWIDGETS_ ) + # + IF(WIN32) + # Clean ? + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}${WXWIDGETS_CXX_FLAGS}") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}${WXWIDGETS_EXE_LINKER_FLAGS}") + # + ADD_DEFINITIONS( ${WXWIDGETS_DEFINITIONS} ) + # + INCLUDE_DIRECTORIES(${WXWIDGETS_INCLUDE_DIR}) + LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} ) + SET(BBTK_WXWIDGETS_LIBRARIES + ${WXWIDGETS_LIBRARIES} + debug msvcrtd + debug msvcprtd + optimized msvcrt + optimized msvcprt + ) + ELSE(WIN32) + # GTK2 + INCLUDE_DIRECTORIES(${GTK2_INCLUDE_DIRS}) + LINK_DIRECTORIES(${GTK2_LIBRARY_DIRS}) + LINK_LIBRARIES(${GTK2_LIBRARIES}) + # WX + INCLUDE( ${wxWidgets_USE_FILE} ) + MARK_AS_ADVANCED(wxWidgets_CONFIG_EXECUTABLE) + SET(BBTK_WXWIDGETS_LIBRARIES + ${GTK2_LIBRARIES} + ${wxWidgets_LIBRARIES} + ) + ENDIF(WIN32) +ENDMACRO(BBTK_USE_WXWIDGETS) +#======================================================================= diff --git a/kernel/cmake/CMakeCreateFindPackage.cmake b/kernel/cmake/CMakeCreateFindPackage.cmake new file mode 100644 index 0000000..ca33a0c --- /dev/null +++ b/kernel/cmake/CMakeCreateFindPackage.cmake @@ -0,0 +1,254 @@ +#----------------------------------------------------------------------------- +# Macro CREATE_FIND_PACKAGE +# Creates and install the cmake files which allow +# to find a library by the cmake command FIND_PACKAGE. +# +# Inputs : +# -------- +# LIBRARY_NAME : name of the library to find +# +# The following variables **MUST** have been set previously : +# +# * ${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS +# The list of include paths +# when someone uses a *BUILD TREE* version of ${LIBRARY_NAME}. +# NB : +# THE PATHS *MUST BE RELATIVE* TO THE ROOT DIR OF THE PROJECT **SOURCES** ! +# Assume your project architecture is : +# install/ : directory in which CREATE_FIND_PACKAGE is invoked +# src/part1/include/ : first include dir +# src/part2/include/ : second include dir +# Then you should set the var with : +# SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS +# src/part1/include +# src/part2/include ) +# Which will result in actual include paths : +# ${PROJECT_SOURCE_DIR}/src/part1/include; +# ${PROJECT_SOURCE_DIR}/src/part2/include +# * ${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS +# Like the previous var but for the library paths. +# NB : +# THE PATHS *MUST BE RELATIVE* TO THE ROOT DIR OF THE **BUILD TREE** +# THAT IS POINT TO THE FOLDERS WHERE THE LIBS WILL BE BUILD +# Assume that your project architecture is : +# src/part1/src/ : first source dir, in which the lib 'part1' is built +# src/part2/src/ : first source dir, in which the lib 'part2' is built +# Then you should set the var with +# SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS +# src/part1/src +# src/part2/src +# ) +# Which will result in actual library paths : +# ${PROJECT_BINARY_DIR}/src/part1/src +# ${PROJECT_BINARY_DIR}/src/part2/src +# * ${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS +# The list of include paths +# when someone uses an *INSTALLED* version of ${LIBRARY_NAME} +# The paths *MUST BE RELATIVE* to INSTALL_PREFIX +# # A typical example is "include/${LIBRARY_NAME}" +# * ${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS +# Like the previous var but for library paths. +# A typical example is ".." +# * ${LIBRARY_NAME}_LIBRARIES +# The list of libraries to link against when using ${LIBRARY_NAME} +# +# The following variables can be set optionally : +# +# * ${LIBRARY_NAME}_REQUIRED_C_FLAGS +# * ${LIBRARY_NAME}_REQUIRED_CXX_FLAGS +# * ${LIBRARY_NAME}_REQUIRED_LINK_FLAGS +# * ${LIBRARY_NAME}_MAJOR_VERSION +# * ${LIBRARY_NAME}_MINOR_VERSION +# * ${LIBRARY_NAME}_BUILD_VERSION +# * ${LIBRARY_NAME}_INSTALL_FOLDER : if set then install the stuff +# in INSTALL_PREFIX/lib/${LIBRARY_NAME}_INSTALL_FOLDER +# instead of INSTALL_PREFIX/lib/${LIBRARY_NAME} +# +# +# To provide a user defined +# couple of Config/Use file (in addition to the standard one) use : +# SET( ${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE TRUE ) +# and store the *ABSOLUTE* paths to the additional files in the vars : +# ${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE +# ${LIBRARY_NAME}_ADDITIONAL_USE_FILE +# (e.g. ${CMAKE_CURRENT_SOURCE_DIR}/MyConfig.cmake) +# +# Outputs : +# -------- +# At cmake run-time, the macro creates the following files +# in the current dir of the build tree (where the macro is invoked) : +# Use${LIBRARY_NAME}.cmake +# ${LIBRARY_NAME}Config.cmake +# ${LIBRARY_NAME}BuildSettings.cmake +# And if the vars ${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE and +# ${LIBRARY_NAME}_ADDITIONAL_USE_FILE are set, it also creates : +# Additional${LIBRARY_NAME}Config.cmake +# AdditionalUse${LIBRARY_NAME}.cmake +# +# At install-time, the same files are installed +# in INSTALL_PREFIX/lib/${LIBRARY_NAME} +# and the file : +# Find${LIBRARY_NAME}.cmake +# is installed in ${CMAKE_ROOT}/Modules/ +# +# +#----------------------------------------------------------------------------- + +MACRO(CMAKE_CREATE_FIND_PACKAGE LIBRARY_NAME) + + #--------------------------------------------------------------------------- + # Sets the common values to build tree and install tree configs + SET(CFP_LIB_REQUIRED_C_FLAGS ${${LIBRARY_NAME}_REQUIRED_C_FLAGS}) + SET(CFP_LIB_REQUIRED_CXX_FLAGS ${${LIBRARY_NAME}_REQUIRED_CXX_FLAGS}) + SET(CFP_LIB_REQUIRED_LINK_FLAGS ${${LIBRARY_NAME}_REQUIRED_LINK_FLAGS}) + SET(CFP_LIB_MAJOR_VERSION ${${LIBRARY_NAME}_MAJOR_VERSION}) + SET(CFP_LIB_MINOR_VERSION ${${LIBRARY_NAME}_MINOR_VERSION}) + SET(CFP_LIB_BUILD_VERSION ${${LIBRARY_NAME}_BUILD_VERSION}) + SET(CFP_LIB_VERSION + ${CFP_LIB_MAJOR_VERSION}.${CFP_LIB_MINOR_VERSION}.${CFP_LIB_BUILD_VERSION}) + SET(CFP_LIB_LIBRARIES ${${LIBRARY_NAME}_LIBRARIES}) + IF (${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE) + SET(CFP_LIB_HAS_ADDITIONAL_CONFIG_FILE TRUE) + ELSE (${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE) + SET(CFP_LIB_HAS_ADDITIONAL_CONFIG_FILE FALSE) + ENDIF (${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE) + #--------------------------------------------------------------------------- + + + #--------------------------------------------------------------------------- + #-- BUILD TREE configuration + SET(CFP_BUILD_TREE_CONFIGURATION TRUE) + # UseLIBRARY_NAME.cmake + CONFIGURE_FILE( + ${CMakeCreateFindPackage_DIR}/CMakeCreateFindPackage_UseLibrary.cmake.in + ${PROJECT_BINARY_DIR}/Use${LIBRARY_NAME}.cmake + @ONLY IMMEDIATE + ) + # LIBRARY_NAMEConfig.cmake + SET(CFP_LIB_RELATIVE_INCLUDE_PATHS + ${${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS}) + SET(CFP_LIB_RELATIVE_LIBRARY_PATHS + ${${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS}) + CONFIGURE_FILE( + ${CMakeCreateFindPackage_DIR}/CMakeCreateFindPackage_LibraryConfig.cmake.in + ${PROJECT_BINARY_DIR}/${LIBRARY_NAME}Config.cmake + @ONLY IMMEDIATE + ) + # LIBRARY_NAMEBuildSettings.cmake : + # Save the compiler settings so another project can import them. + INCLUDE(${CMAKE_ROOT}/Modules/CMakeExportBuildSettings.cmake) + CMAKE_EXPORT_BUILD_SETTINGS(${PROJECT_BINARY_DIR}/${LIBRARY_NAME}BuildSettings.cmake) + # Additional Config and Use files + IF(CFP_LIB_HAS_ADDITIONAL_CONFIG_FILE) + CONFIGURE_FILE( + ${${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE} + ${PROJECT_BINARY_DIR}/Additional${LIBRARY_NAME}Config.cmake + @ONLY IMMEDIATE + ) + CONFIGURE_FILE( + ${${LIBRARY_NAME}_ADDITIONAL_USE_FILE} + ${PROJECT_BINARY_DIR}/AdditionalUse${LIBRARY_NAME}.cmake + @ONLY IMMEDIATE + ) + ENDIF(CFP_LIB_HAS_ADDITIONAL_CONFIG_FILE) + #--------------------------------------------------------------------------- + + + #--------------------------------------------------------------------------- + #-- INSTALL TREE configuration + SET(CFP_BUILD_TREE_CONFIGURATION FALSE) + # Create work directory to put the configured files because + # if the user invoked the macro at the root of the build tree the files + # would overwrite those configured for the build tree + SET(CFP_WORK_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeCreateFindPackage_stuff) + IF(NOT IS_DIRECTORY ${CFP_WORK_DIR}) + FILE(MAKE_DIRECTORY ${CFP_WORK_DIR}) + ENDIF(NOT IS_DIRECTORY ${CFP_WORK_DIR}) + + #---------------------------------------------------------------------------- + #INSTALLATION PATH + IF(WIN32) + SET(INSTALL_PATH .) + ELSE(WIN32) + IF(${LIBRARY_NAME}_INSTALL_FOLDER) + SET(INSTALL_PATH lib/${${LIBRARY_NAME}_INSTALL_FOLDER}) + ELSE(${LIBRARY_NAME}_INSTALL_FOLDER) + SET(INSTALL_PATH lib/${LIBRARY_NAME}) + ENDIF(${LIBRARY_NAME}_INSTALL_FOLDER) + ENDIF(WIN32) + + + # UseLIBRARY_NAME.cmake + CONFIGURE_FILE( + ${CMakeCreateFindPackage_DIR}/CMakeCreateFindPackage_UseLibrary.cmake.in + ${CFP_WORK_DIR}/Use${LIBRARY_NAME}.cmake + @ONLY IMMEDIATE + ) + INSTALL( + FILES + ${CFP_WORK_DIR}/Use${LIBRARY_NAME}.cmake + DESTINATION ${INSTALL_PATH} + ) + # LIBRARY_NAMEConfig.cmake + SET(CFP_LIB_RELATIVE_INCLUDE_PATHS + ${${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS}) + SET(CFP_LIB_RELATIVE_LIBRARY_PATHS + ${${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS}) + CONFIGURE_FILE( + ${CMakeCreateFindPackage_DIR}/CMakeCreateFindPackage_LibraryConfig.cmake.in + ${CFP_WORK_DIR}/${LIBRARY_NAME}Config.cmake + @ONLY IMMEDIATE + ) + INSTALL( + FILES + ${CFP_WORK_DIR}/${LIBRARY_NAME}Config.cmake + DESTINATION ${INSTALL_PATH} + ) + # LIBRARY_NAMEBuildSettings.cmake : + CMAKE_EXPORT_BUILD_SETTINGS(${CFP_WORK_DIR}/${LIBRARY_NAME}BuildSettings.cmake) + INSTALL( + FILES + ${CFP_WORK_DIR}/${LIBRARY_NAME}BuildSettings.cmake + DESTINATION ${INSTALL_PATH} + ) + # Additional Config and Use files + IF(CFP_LIB_HAS_ADDITIONAL_CONFIG_FILE) + CONFIGURE_FILE( + ${${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE} + ${CFP_WORK_DIR}/Additional${LIBRARY_NAME}Config.cmake + @ONLY IMMEDIATE + ) + INSTALL( + FILES + ${CFP_WORK_DIR}/Additional${LIBRARY_NAME}Config.cmake + DESTINATION ${INSTALL_PATH} + ) + CONFIGURE_FILE( + ${${LIBRARY_NAME}_ADDITIONAL_USE_FILE} + ${CFP_WORK_DIR}/AdditionalUse${LIBRARY_NAME}.cmake + @ONLY IMMEDIATE + ) + INSTALL( + FILES + ${CFP_WORK_DIR}/AdditionalUse${LIBRARY_NAME}.cmake + DESTINATION ${INSTALL_PATH} + ) + ENDIF(CFP_LIB_HAS_ADDITIONAL_CONFIG_FILE) + # Specific to install tree + # FindLIBRARY_NAME.cmake in CMake/Modules dir + CONFIGURE_FILE( + ${CMakeCreateFindPackage_DIR}/CMakeCreateFindPackage_FindLibrary.cmake.in + ${CFP_WORK_DIR}/Find${LIBRARY_NAME}.cmake + @ONLY IMMEDIATE + ) + INSTALL( + FILES ${CFP_WORK_DIR}/Find${LIBRARY_NAME}.cmake + DESTINATION ${CMAKE_ROOT}/Modules + ) + #--------------------------------------------------------------------------- + + + + +ENDMACRO(CMAKE_CREATE_FIND_PACKAGE) +#----------------------------------------------------------------------------- diff --git a/kernel/cmake/CMakeCreateFindPackage_FindLibrary.cmake.in b/kernel/cmake/CMakeCreateFindPackage_FindLibrary.cmake.in new file mode 100644 index 0000000..182c9e7 --- /dev/null +++ b/kernel/cmake/CMakeCreateFindPackage_FindLibrary.cmake.in @@ -0,0 +1,106 @@ +# - Find a library installation or build tree. +# +# The following variables are set if @LIBRARY_NAME@ is found. +# If @LIBRARY_NAME@ is not found, @LIBRARY_NAME@_FOUND is set to false. +# @LIBRARY_NAME@_FOUND - Set to true when @LIBRARY_NAME@ is found. +# @LIBRARY_NAME@_USE_FILE - CMake file to use @LIBRARY_NAME@. +# @LIBRARY_NAME@_MAJOR_VERSION - The @LIBRARY_NAME@ major version number. +# @LIBRARY_NAME@_MINOR_VERSION - The @LIBRARY_NAME@ minor version number +# (odd non-release). +# @LIBRARY_NAME@_BUILD_VERSION - The @LIBRARY_NAME@ patch level +# (meaningless for odd minor). +# @LIBRARY_NAME@_INCLUDE_DIRS - Include directories for @LIBRARY_NAME@ +# @LIBRARY_NAME@_LIBRARY_DIRS - Link directories for @LIBRARY_NAME@ libraries +# @LIBRARY_NAME@_LIBRARIES - List of libraries to link against +# +# The following cache entries must be set by the user to locate @LIBRARY_NAME@: +# @LIBRARY_NAME@_DIR - The directory containing @LIBRARY_NAME@Config.cmake. +# This is either the root of the build tree, +# or the lib/@LIBRARY_NAME@ directory. This is the +# only cache entry. + + +# Construct consitent error messages for use below. +SET(@LIBRARY_NAME@_DIR_DESCRIPTION "directory containing @LIBRARY_NAME@Config.cmake. This is either the root of the build tree, or PREFIX/lib/@LIBRARY_NAME@ for an installation.") +SET(@LIBRARY_NAME@_NOT_FOUND_MESSAGE "@LIBRARY_NAME@ not found. Set the @LIBRARY_NAME@_DIR cmake cache entry to the ${@LIBRARY_NAME@_DIR_DESCRIPTION}") + +# Search only if the location is not already known. +IF(NOT @LIBRARY_NAME@_DIR) + # Get the system search path as a list. + IF(UNIX) + STRING(REGEX MATCHALL "[^:]+" @LIBRARY_NAME@_DIR_SEARCH1 "$ENV{PATH}") + ELSE(UNIX) + STRING(REGEX REPLACE "\\\\" "/" @LIBRARY_NAME@_DIR_SEARCH1 "$ENV{PATH}") + ENDIF(UNIX) + STRING(REGEX REPLACE "/;" ";" @LIBRARY_NAME@_DIR_SEARCH2 "${@LIBRARY_NAME@_DIR_SEARCH1}") + + # Construct a set of paths relative to the system search path. + SET(@LIBRARY_NAME@_DIR_SEARCH "") + FOREACH(dir ${@LIBRARY_NAME@_DIR_SEARCH2}) + SET(@LIBRARY_NAME@_DIR_SEARCH ${@LIBRARY_NAME@_DIR_SEARCH} + ${dir}/../lib/@INSTALL_PATH@ + ) + ENDFOREACH(dir) + + # + # Look for an installation or build tree. + # + FIND_PATH(@LIBRARY_NAME@_DIR Use@LIBRARY_NAME@.cmake + # Look for an environment variable @LIBRARY_NAME@_DIR. + $ENV{@LIBRARY_NAME@_DIR} + + # Look in places relative to the system executable search path. + ${@LIBRARY_NAME@_DIR_SEARCH} + + # Look in standard WIN install locations. + "$ENV{ProgramFiles}/@LIBRARY_NAME@" + + # Look in standard UNIX install locations. + /usr/local/@INSTALL_PATH@ + /usr/@INSTALL_PATH@ + + # Read from the CMakeSetup registry entries. It is likely that + # @LIBRARY_NAME@ will have been recently built. + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild1] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild2] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild3] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild4] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild5] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild6] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild7] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild8] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild9] + [HKEY_CURRENT_USER\\Software\\Kitware\\CMakeSetup\\Settings\\StartPath;WhereBuild10] + + # Help the user find it if we cannot. + DOC "The ${@LIBRARY_NAME@_DIR_DESCRIPTION}" + ) +ENDIF(NOT @LIBRARY_NAME@_DIR) + +# If @LIBRARY_NAME@ was found, load the configuration file to get the rest of the +# settings. +IF(@LIBRARY_NAME@_DIR) + # Make sure the @LIBRARY_NAME@Config.cmake file exists in the directory provided. + IF(EXISTS ${@LIBRARY_NAME@_DIR}/@LIBRARY_NAME@Config.cmake) + + # We found @LIBRARY_NAME@. Load the settings. + SET(@LIBRARY_NAME@_FOUND 1) + INCLUDE(${@LIBRARY_NAME@_DIR}/@LIBRARY_NAME@Config.cmake) + + ENDIF(EXISTS ${@LIBRARY_NAME@_DIR}/@LIBRARY_NAME@Config.cmake) +ELSE(@LIBRARY_NAME@_DIR) + # We did not find @LIBRARY_NAME@. + SET(@LIBRARY_NAME@_FOUND 0) +ENDIF(@LIBRARY_NAME@_DIR) + +#----------------------------------------------------------------------------- +IF(NOT @LIBRARY_NAME@_FOUND) + # @LIBRARY_NAME@ not found, explain to the user how to specify its location. + IF(NOT @LIBRARY_NAME@_FIND_QUIETLY) + MESSAGE(FATAL_ERROR ${@LIBRARY_NAME@_NOT_FOUND_MESSAGE}) + ELSE(NOT @LIBRARY_NAME@_FIND_QUIETLY) + IF(@LIBRARY_NAME@_FIND_REQUIRED) + MESSAGE(FATAL_ERROR ${@LIBRARY_NAME@_NOT_FOUND_MESSAGE}) + ENDIF(@LIBRARY_NAME@_FIND_REQUIRED) + ENDIF(NOT @LIBRARY_NAME@_FIND_QUIETLY) +ENDIF(NOT @LIBRARY_NAME@_FOUND) diff --git a/kernel/cmake/CMakeCreateFindPackage_LibraryConfig.cmake.in b/kernel/cmake/CMakeCreateFindPackage_LibraryConfig.cmake.in new file mode 100644 index 0000000..265f7e1 --- /dev/null +++ b/kernel/cmake/CMakeCreateFindPackage_LibraryConfig.cmake.in @@ -0,0 +1,123 @@ +#----------------------------------------------------------------------------- +# +# @LIBRARY_NAME@Config.cmake - CMake configuration file for external projects. +# Created by the cmake macro CREATE_FIND_PACKAGE of the CreateFindPackage suite +# +# This file is configured by cmake and used by the +# Use@LIBRARY_NAME@.cmake module to load the lib settings +# for an external project. + +# Build tree config ? +SET(CFP_BUILD_TREE_CONFIGURATION @CFP_BUILD_TREE_CONFIGURATION@) + + +IF(UNIX) +SET(GOTO_INSTALL_PREFIX /../..) +ENDIF(UNIX) + + +# The @LIBRARY_NAME@ include file *RELATIVE* directories. +SET(CFP_RELATIVE_INCLUDE_PATHS "@CFP_LIB_RELATIVE_INCLUDE_PATHS@") +# Compute the prefix for include and library paths +IF(CFP_BUILD_TREE_CONFIGURATION) + # In build tree + # the include paths are relative to the source tree *AND* the binary tree + # for generated files + SET(CFP_INCLUDE_PATH_PREFIX @PROJECT_SOURCE_DIR@) + # Build the *ABSOLUTE* directories + FOREACH(path ${CFP_RELATIVE_INCLUDE_PATHS}) + SET(@LIBRARY_NAME@_INCLUDE_DIRS + ${@LIBRARY_NAME@_INCLUDE_DIRS} + ${CFP_INCLUDE_PATH_PREFIX}/${path} + ) + ENDFOREACH(path ${CFP_RELATIVE_INCLUDE_PATHS}) + SET(CFP_INCLUDE_PATH_PREFIX @PROJECT_BINARY_DIR@) + # Build the *ABSOLUTE* directories + FOREACH(path ${CFP_RELATIVE_INCLUDE_PATHS}) + SET(@LIBRARY_NAME@_INCLUDE_DIRS + ${@LIBRARY_NAME@_INCLUDE_DIRS} + ${CFP_INCLUDE_PATH_PREFIX}/${path} + ) + ENDFOREACH(path ${CFP_RELATIVE_INCLUDE_PATHS}) +ELSE(CFP_BUILD_TREE_CONFIGURATION) + # In install tree + # the include paths are relative to install prefix + # On unix , GOTO_INSTALL_PREFIX allows to get back to the + # installation prefix from @LIBRARY_NAME@_DIR + SET(CFP_INCLUDE_PATH_PREFIX ${@LIBRARY_NAME@_DIR}${GOTO_INSTALL_PREFIX}) + # Build the *ABSOLUTE* directories + FOREACH(path ${CFP_RELATIVE_INCLUDE_PATHS}) + SET(@LIBRARY_NAME@_INCLUDE_DIRS + ${@LIBRARY_NAME@_INCLUDE_DIRS} + ${CFP_INCLUDE_PATH_PREFIX}/${path} + ) + ENDFOREACH(path ${CFP_RELATIVE_INCLUDE_PATHS}) +ENDIF(CFP_BUILD_TREE_CONFIGURATION) + + + +# Compute the prefix for library paths +IF(CFP_BUILD_TREE_CONFIGURATION) + # In build tree + # the library paths are relative to the binary tree + SET(CFP_LIBRARY_PATH_PREFIX @PROJECT_BINARY_DIR@) +ELSE(CFP_BUILD_TREE_CONFIGURATION) + # In install tree + # the library paths are relative to install prefix + SET(CFP_LIBRARY_PATH_PREFIX ${@LIBRARY_NAME@_DIR}${GOTO_INSTALL_PREFIX}) +ENDIF(CFP_BUILD_TREE_CONFIGURATION) +# The @LIBRARY_NAME@ library file *RELATIVE* directories. +SET(CFP_RELATIVE_LIBRARY_PATHS "@CFP_LIB_RELATIVE_LIBRARY_PATHS@") +# Build the *ABSOLUTE* directories +FOREACH(path ${CFP_RELATIVE_LIBRARY_PATHS}) + SET(@LIBRARY_NAME@_LIBRARY_DIRS + ${@LIBRARY_NAME@_LIBRARY_DIRS} + ${CFP_LIBRARY_PATH_PREFIX}/${path} + ) +ENDFOREACH(path ${CFP_RELATIVE_LIBRARY_PATHS}) + + +# The C and C++ flags added by @LIBRARY_NAME@ to the cmake-configured flags. +SET(@LIBRARY_NAME@_REQUIRED_C_FLAGS "@CFP_LIB_REQUIRED_C_FLAGS@") +SET(@LIBRARY_NAME@_REQUIRED_CXX_FLAGS "@CFP_LIB_REQUIRED_CXX_FLAGS@") +SET(@LIBRARY_NAME@_REQUIRED_LINK_FLAGS "@CFP_LIB_REQUIRED_LINK_FLAGS@") + +# The @LIBRARY_NAME@ version +SET(@LIBRARY_NAME@_MAJOR_VERSION @CFP_LIB_MAJOR_VERSION@) +SET(@LIBRARY_NAME@_MINOR_VERSION @CFP_LIB_MINOR_VERSION@) +SET(@LIBRARY_NAME@_BUILD_VERSION @CFP_LIB_BUILD_VERSION@) +SET(@LIBRARY_NAME@_VERSION @CFP_LIB_VERSION@) + +# The location of the Use@LIBRARY_NAME@.cmake file. +SET(@LIBRARY_NAME@_USE_FILE "${@LIBRARY_NAME@_DIR}/Use@LIBRARY_NAME@.cmake") + +# The build settings file. +SET(@LIBRARY_NAME@_BUILD_SETTINGS_FILE + "${@LIBRARY_NAME@_DIR}/@LIBRARY_NAME@BuildSettings.cmake") + +# A list of all libraries for @LIBRARY_NAME@. Those listed here should +# automatically pull in their dependencies. +SET(@LIBRARY_NAME@_LIBRARIES @CFP_LIB_LIBRARIES@) + +# Messages +IF(FIND_PACKAGE_VERBOSE) + MESSAGE(STATUS "Looking for @LIBRARY_NAME@... found - configuration :") + MESSAGE(STATUS "* @LIBRARY_NAME@_DIR = ${@LIBRARY_NAME@_DIR}") + MESSAGE(STATUS "* @LIBRARY_NAME@_VERSION = ${@LIBRARY_NAME@_VERSION}") + MESSAGE(STATUS "* @LIBRARY_NAME@_USE_FILE = ${@LIBRARY_NAME@_USE_FILE}") + + MESSAGE(STATUS "* @LIBRARY_NAME@_INCLUDE_DIRS = ${@LIBRARY_NAME@_INCLUDE_DIRS}") + MESSAGE(STATUS "* @LIBRARY_NAME@_LIBRARY_DIRS = ${@LIBRARY_NAME@_LIBRARY_DIRS}") + MESSAGE(STATUS "* @LIBRARY_NAME@_LIBRARIES = ${@LIBRARY_NAME@_LIBRARIES}") +ENDIF(FIND_PACKAGE_VERBOSE) + +# Does the library has an additional config file (user provided) ? +SET(@LIBRARY_NAME@_HAS_ADDITIONAL_CONFIG_FILE @CFP_LIB_HAS_ADDITIONAL_CONFIG_FILE@) + +IF (@LIBRARY_NAME@_HAS_ADDITIONAL_CONFIG_FILE) + IF(FIND_PACKAGE_VERBOSE) + MESSAGE(STATUS "Reading @LIBRARY_NAME@ additional configuration file") + ENDIF(FIND_PACKAGE_VERBOSE) + # Include it + INCLUDE(${@LIBRARY_NAME@_DIR}/Additional@LIBRARY_NAME@Config.cmake) +ENDIF (@LIBRARY_NAME@_HAS_ADDITIONAL_CONFIG_FILE) diff --git a/kernel/cmake/CMakeCreateFindPackage_UseLibrary.cmake.in b/kernel/cmake/CMakeCreateFindPackage_UseLibrary.cmake.in new file mode 100644 index 0000000..890381e --- /dev/null +++ b/kernel/cmake/CMakeCreateFindPackage_UseLibrary.cmake.in @@ -0,0 +1,34 @@ +# This is an implementation detail for using @LIBRARY_NAME@ with the +# Find@LIBRARY_NAME@.cmake module. Do not include directly by name. +# This should be included only when Find@LIBRARY_NAME@.cmake sets +# the @LIBRARY_NAME@_USE_FILE variable to point here. + +IF(FIND_PACKAGE_VERBOSE) + MESSAGE(STATUS "Using @LIBRARY_NAME@") +ENDIF(FIND_PACKAGE_VERBOSE) + +# Load the compiler settings used for @LIBRARY_NAME@. +IF(@LIBRARY_NAME@_BUILD_SETTINGS_FILE) + INCLUDE(CMakeImportBuildSettings) + CMAKE_IMPORT_BUILD_SETTINGS(${@LIBRARY_NAME@_BUILD_SETTINGS_FILE}) +ENDIF(@LIBRARY_NAME@_BUILD_SETTINGS_FILE) + +# Add compiler flags needed to use @LIBRARY_NAME@. +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${@LIBRARY_NAME@_REQUIRED_C_FLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${@LIBRARY_NAME@_REQUIRED_CXX_FLAGS}") +SET(CMAKE_LINK_FLAGS "${CMAKE_LINK_FLAGS} ${@LIBRARY_NAME@_REQUIRED_LINK_FLAGS}") + +# Add include directories needed to use @LIBRARY_NAME@. +INCLUDE_DIRECTORIES(${@LIBRARY_NAME@_INCLUDE_DIRS}) + +# Add link directories needed to use @LIBRARY_NAME@. +LINK_DIRECTORIES(${@LIBRARY_NAME@_LIBRARY_DIRS}) + +# Set the version +ADD_DEFINITIONS( -D@LIBRARY_NAME@_VERSION="${@LIBRARY_NAME@_VERSION}" ) + +# Additional use file +IF (@LIBRARY_NAME@_HAS_ADDITIONAL_CONFIG_FILE) + # Include it + INCLUDE(${@LIBRARY_NAME@_DIR}/AdditionalUse@LIBRARY_NAME@.cmake) +ENDIF (@LIBRARY_NAME@_HAS_ADDITIONAL_CONFIG_FILE) diff --git a/kernel/doc/bbtkDoxygen/CMakeLists.txt b/kernel/doc/bbtkDoxygen/CMakeLists.txt index bfb53d5..250d141 100755 --- a/kernel/doc/bbtkDoxygen/CMakeLists.txt +++ b/kernel/doc/bbtkDoxygen/CMakeLists.txt @@ -16,7 +16,7 @@ SET(INPUT ${PROJECT_SOURCE_DIR}/kernel/appli ) -INCLUDE(${BBTK_DIR}/BBTKBuildDoxygenDoc.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKBuildDoxygenDoc.cmake) BBTK_BUILD_DOXYGEN_DOC( "BBTK" "${INPUT}" diff --git a/kernel/src/CMakeLists.txt b/kernel/src/CMakeLists.txt index 76e0550..48f775e 100644 --- a/kernel/src/CMakeLists.txt +++ b/kernel/src/CMakeLists.txt @@ -180,21 +180,71 @@ TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_LIBRARIES}) -#----------------------------------------------------------------------------- + +#============================================================================= # bbtk library installation -#----------------------------------------------------------------------------- +#============================================================================= + #----------------------------------------------------------------------------- -INSTALL_FILES(/include/bbtk "\\.h$") -INSTALL_TARGETS(/lib bbtk) +FILE(GLOB BBTK_HEADERS "*.h") +INSTALL(FILES ${BBTK_HEADERS} DESTINATION include/bbtk) +INSTALL(TARGETS bbtk DESTINATION lib) #----------------------------------------------------------------------------- +#----------------------------------------------------------------------------- +# Code installing the files needed to find the lib by FIND_PACKAGE +# Uses CMakeCreateFindPackage +#----------------------------------------------------------------------------- #----------------------------------------------------------------------------- -# TO DO : create FindBBTK.cmake -#INCLUDE(InstallFindBBTK.cmake) +# Today CMakeCreateFindPackage is copied in kernel/cmake +# When installed as a separate project will have to find it with FIND_PACKAGE +SET(CMakeCreateFindPackage_DIR ${PROJECT_SOURCE_DIR}/kernel/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) +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) +SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS lib) + +# 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 diff --git a/packages/std/Configure.cmake b/packages/std/Configure.cmake index cb28fec..636574a 100644 --- a/packages/std/Configure.cmake +++ b/packages/std/Configure.cmake @@ -20,6 +20,6 @@ ENDIF(NOT BBTK_CORE_PACKAGE) #=========================================================================== # Include package configuration cmake script from bbtk dir -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage.cmake) #=========================================================================== diff --git a/packages/std/bbs/CMakeLists.txt b/packages/std/bbs/CMakeLists.txt index 0e80463..2c0eb7c 100644 --- a/packages/std/bbs/CMakeLists.txt +++ b/packages/std/bbs/CMakeLists.txt @@ -1,4 +1,4 @@ -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage_bbs.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage_bbs.cmake) diff --git a/packages/std/doc/CMakeLists.txt b/packages/std/doc/CMakeLists.txt index cdeb946..033496e 100644 --- a/packages/std/doc/CMakeLists.txt +++ b/packages/std/doc/CMakeLists.txt @@ -1,5 +1,5 @@ #=========================================================================== # Include package doc configuration cmake script -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage_doc.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage_doc.cmake) #=========================================================================== diff --git a/packages/std/doc/bbdoc/CMakeLists.txt b/packages/std/doc/bbdoc/CMakeLists.txt index 16518fb..3f4a7cc 100644 --- a/packages/std/doc/bbdoc/CMakeLists.txt +++ b/packages/std/doc/bbdoc/CMakeLists.txt @@ -1,2 +1,2 @@ -INCLUDE(${BBTK_DIR}/BBTKCreatePackageBBdoc.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKCreatePackageBBdoc.cmake) BBTK_CREATE_PACKAGE_BBDOC(${BBTK_PACKAGE_NAME}) diff --git a/packages/std/doc/doxygen/CMakeLists.txt b/packages/std/doc/doxygen/CMakeLists.txt index 531397d..cccff12 100644 --- a/packages/std/doc/doxygen/CMakeLists.txt +++ b/packages/std/doc/doxygen/CMakeLists.txt @@ -11,7 +11,7 @@ SET(INPUT ) -INCLUDE(${BBTK_DIR}/BBTKBuildDoxygenDoc.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKBuildDoxygenDoc.cmake) BBTK_BUILD_DOXYGEN_DOC( "${BBTK_PACKAGE_NAME}" diff --git a/packages/std/src/CMakeLists.txt b/packages/std/src/CMakeLists.txt index 0230807..e2d2a11 100644 --- a/packages/std/src/CMakeLists.txt +++ b/packages/std/src/CMakeLists.txt @@ -1,5 +1,5 @@ #--------------------------------------------------------------------------- # Include src configuration cmake script -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage_src.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage_src.cmake) #--------------------------------------------------------------------------- diff --git a/packages/void-bbtk-package.tgz b/packages/void-bbtk-package.tgz index 96fb1f9ddc0a49cd0e48a903f98adf507cb4b32a..924ef375c2dd8fa6bb67b92942de83c3e7abfc54 100644 GIT binary patch literal 11825 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

ZT*4B4?~?xj|vMIBir=A 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 diff --git a/packages/wx/Configure.cmake b/packages/wx/Configure.cmake index cb28fec..636574a 100644 --- a/packages/wx/Configure.cmake +++ b/packages/wx/Configure.cmake @@ -20,6 +20,6 @@ ENDIF(NOT BBTK_CORE_PACKAGE) #=========================================================================== # Include package configuration cmake script from bbtk dir -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage.cmake) #=========================================================================== diff --git a/packages/wx/bbs/CMakeLists.txt b/packages/wx/bbs/CMakeLists.txt index 0e80463..2c0eb7c 100644 --- a/packages/wx/bbs/CMakeLists.txt +++ b/packages/wx/bbs/CMakeLists.txt @@ -1,4 +1,4 @@ -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage_bbs.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage_bbs.cmake) diff --git a/packages/wx/doc/CMakeLists.txt b/packages/wx/doc/CMakeLists.txt index cdeb946..033496e 100644 --- a/packages/wx/doc/CMakeLists.txt +++ b/packages/wx/doc/CMakeLists.txt @@ -1,5 +1,5 @@ #=========================================================================== # Include package doc configuration cmake script -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage_doc.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage_doc.cmake) #=========================================================================== diff --git a/packages/wx/doc/bbdoc/CMakeLists.txt b/packages/wx/doc/bbdoc/CMakeLists.txt index 16518fb..3f4a7cc 100644 --- a/packages/wx/doc/bbdoc/CMakeLists.txt +++ b/packages/wx/doc/bbdoc/CMakeLists.txt @@ -1,2 +1,2 @@ -INCLUDE(${BBTK_DIR}/BBTKCreatePackageBBdoc.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKCreatePackageBBdoc.cmake) BBTK_CREATE_PACKAGE_BBDOC(${BBTK_PACKAGE_NAME}) diff --git a/packages/wx/doc/doxygen/CMakeLists.txt b/packages/wx/doc/doxygen/CMakeLists.txt index 531397d..cccff12 100644 --- a/packages/wx/doc/doxygen/CMakeLists.txt +++ b/packages/wx/doc/doxygen/CMakeLists.txt @@ -11,7 +11,7 @@ SET(INPUT ) -INCLUDE(${BBTK_DIR}/BBTKBuildDoxygenDoc.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKBuildDoxygenDoc.cmake) BBTK_BUILD_DOXYGEN_DOC( "${BBTK_PACKAGE_NAME}" diff --git a/packages/wx/src/CMakeLists.txt b/packages/wx/src/CMakeLists.txt index 0230807..e2d2a11 100644 --- a/packages/wx/src/CMakeLists.txt +++ b/packages/wx/src/CMakeLists.txt @@ -1,5 +1,5 @@ #--------------------------------------------------------------------------- # Include src configuration cmake script -INCLUDE(${BBTK_DIR}/BBTKConfigurePackage_src.cmake) +INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigurePackage_src.cmake) #--------------------------------------------------------------------------- -- 2.45.1