]> Creatis software - bbtk.git/blob - kernel/cmake/BBTKConfigurePackage.cmake
e7ab6b113d2e365a4f2bbfa3488da0544a4b041f
[bbtk.git] / kernel / cmake / BBTKConfigurePackage.cmake
1 #---------------------------------------------------------------------------
2 # If not a core package must include necessary cmake scripts
3 IF(NOT BBTK_CORE_PACKAGE)
4   #
5   INCLUDE(${BBTK_CMAKE_DIR}/BBTKBuildAllOption.cmake)
6   INCLUDE(${BBTK_CMAKE_DIR}/BBTKMacros.cmake)
7   INCLUDE(${BBTK_CMAKE_DIR}/BBTKFindLibraries.cmake)
8   #-------------------------------------------------------------------------
9   # Configure bbtk_config_build.xml.in for bbi to find the bbs
10   INCLUDE(${BBTK_CMAKE_DIR}/BBTKConfigureBbtkConfigXmlForBuildTree.cmake)
11   #------------------------------------------------------------------------- 
12   #
13 ENDIF(NOT BBTK_CORE_PACKAGE)
14 #---------------------------------------------------------------------------
15
16
17 #-----------------------------------------------------------------------------
18 SET(${BBTK_PACKAGE_NAME}_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
19 #-----------------------------------------------------------------------------
20
21 #-----------------------------------------------------------------------------
22 # DOES THE USER WANT TO BUILD THE PACKAGE ?
23 OPTION(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME} 
24   "Build the bbtk package ${BBTK_PACKAGE_NAME} ?" OFF)
25 IF(NOT ${BBTK_PACKAGE_NAME}_EXCLUDE_FROM_BUILD_ALL)
26  SWITCH_ON_IF_BUILD_ALL(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME})
27 ENDIF(NOT ${BBTK_PACKAGE_NAME}_EXCLUDE_FROM_BUILD_ALL)
28 #-----------------------------------------------------------------------------
29   
30 #-----------------------------------------------------------------------------
31 # Package dependencies
32 SET(${BBTK_PACKAGE_NAME}_DEPS bb${BBTK_PACKAGE_NAME})
33 STRING(REGEX MATCH "${${BBTK_PACKAGE_NAME}_DEPS}" 
34   ${BBTK_PACKAGE_NAME}_IN_DEPS
35   "${BBTK_PACKAGES_DEPS}")
36 ENDIF(UNIX)
37 #-----------------------------------------------------------------------------
38 #SET(BBTK_PACKAGES_DEPS "" CACHE INTERNAL "bbtk packages dependencies" FORCE)
39
40 #-----------------------------------------------------------------------------
41 # IF THE USER HAS CHOSEN TO BUILD THE PACKAGE
42 IF(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME})
43   #---------------------------------------------------------------------------
44
45
46   #----------------------------------------------------------------------------
47   # VARS CONFIGURED IN bbPackage.h AND IN doc/bbdoc/header.html.in
48   SET(BBTK_PACKAGE_AUTHOR        "${${BBTK_PACKAGE_NAME}_AUTHOR}")
49   SET(BBTK_PACKAGE_DESCRIPTION   "${${BBTK_PACKAGE_NAME}_DESCRIPTION}")
50   SET(BBTK_PACKAGE_MAJOR_VERSION ${${BBTK_PACKAGE_NAME}_MAJOR_VERSION})
51   SET(BBTK_PACKAGE_MINOR_VERSION ${${BBTK_PACKAGE_NAME}_MINOR_VERSION})
52   SET(BBTK_PACKAGE_BUILD_VERSION ${${BBTK_PACKAGE_NAME}_BUILD_VERSION})
53   SET(BBTK_PACKAGE_VERSION 
54     "\"${${BBTK_PACKAGE_NAME}_MAJOR_VERSION}.${${BBTK_PACKAGE_NAME}_MINOR_VERSION}.${${BBTK_PACKAGE_NAME}_BUILD_VERSION}\"")
55   #----------------------------------------------------------------------------
56   
57   
58   #---------------------------------------------------------------------------
59   # If package deps not in global deps : add them
60   IF(NOT ${BBTK_PACKAGE_NAME}_IN_DEPS)
61     SET(BBTK_PACKAGES_DEPS "${${BBTK_PACKAGE_NAME}_DEPS};${BBTK_PACKAGES_DEPS}"
62       CACHE INTERNAL "bbtk packages dependencies" FORCE)
63  #   MESSAGE(STATUS "Packages=${BBTK_PACKAGES_DEPS}")
64   ENDIF(NOT ${BBTK_PACKAGE_NAME}_IN_DEPS)
65   #---------------------------------------------------------------------------
66
67   #---------------------------------------------------------------------------
68   # Package dependencies
69   IF(${BBTK_PACKAGE_NAME}_USE_VTK)
70     SET(USE_VTK ON CACHE BOOL "Use VTK" FORCE)
71     SET(${BBTK_PACKAGE_NAME}_LIBS
72       ${${BBTK_PACKAGE_NAME}_LIBS}
73       ${BBTK_VTK_LIBRARIES}
74       )
75   ENDIF(${BBTK_PACKAGE_NAME}_USE_VTK)
76   
77   IF(${BBTK_PACKAGE_NAME}_USE_ITK)
78     SET(USE_ITK ON CACHE BOOL "Use ITK" FORCE)
79     SET(${BBTK_PACKAGE_NAME}_LIBS
80       ${${BBTK_PACKAGE_NAME}_LIBS}
81       ${BBTK_ITK_LIBRARIES}
82       )
83   ENDIF(${BBTK_PACKAGE_NAME}_USE_ITK)
84   
85   IF(${BBTK_PACKAGE_NAME}_USE_GDCM)
86     SET(USE_GDCM ON CACHE BOOL "Use GDCM" FORCE)
87     SET(${BBTK_PACKAGE_NAME}_LIBS
88       ${${BBTK_PACKAGE_NAME}_LIBS}
89       ${BBTK_GDCM_LIBRARIES}
90       )
91   ENDIF(${BBTK_PACKAGE_NAME}_USE_GDCM)
92   
93   IF(${BBTK_PACKAGE_NAME}_USE_GSMIS)
94     SET(USE_GSMIS ON CACHE BOOL "Use GSMIS" FORCE)
95     SET(${BBTK_PACKAGE_NAME}_LIBS
96       ${${BBTK_PACKAGE_NAME}_LIBS}
97       ${BBTK_GSMIS_LIBRARIES}
98       )
99   ENDIF(${BBTK_PACKAGE_NAME}_USE_GSMIS)
100   
101   IF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS)
102     IF(BBTK_CORE_PACKAGE)
103       SET(BBTK_USE_WXWIDGETS ON CACHE BOOL "Use wxWidgets" FORCE)
104       MESSAGE(STATUS "BBTK_USE_WXWIDGETS forced to ON by the compilation of the package ${BBTK_PACKAGE_NAME}")
105       # bbtk already links against wx ...
106       IF(WIN32)
107           SET(${BBTK_PACKAGE_NAME}_LIBS
108             ${${BBTK_PACKAGE_NAME}_LIBS}
109             ${BBTK_WXWIDGETS_LIBRARIES}
110             )
111        ENDIF(WIN32)
112     ELSE(BBTK_CORE_PACKAGE)
113       # If linking against a non-wx bbtk : problem
114       IF(NOT BBTK_BUILT_WITH_WX)
115         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.")
116       ELSE(NOT BBTK_BUILT_WITH_WX)
117         SET(USE_WXWIDGETS ON CACHE BOOL "Use wxWidgets" FORCE)
118 # bbtk already links against wx ...
119       IF(WIN32)
120           SET(${BBTK_PACKAGE_NAME}_LIBS
121             ${${BBTK_PACKAGE_NAME}_LIBS}
122             ${BBTK_WXWIDGETS_LIBRARIES}
123             )
124        ENDIF(WIN32)
125       ENDIF(NOT BBTK_BUILT_WITH_WX)
126     ENDIF(BBTK_CORE_PACKAGE)
127   ENDIF(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS)
128
129
130   #---------------------------------------------------------------------------
131
132   
133   
134   #---------------------------------------------------------------------------
135   # Recurse into subdirs
136   SUBDIRS(src)
137   SUBDIRS(doc)
138   SUBDIRS(bbs)
139   SUBDIRS(data)
140   #---------------------------------------------------------------------------
141
142 #---------------------------------------------------------------------------
143 ELSE(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME})
144   #-------------------------------------------------------------------------
145   
146   #-----------------------------------------------------------------------
147   # If package deps in global deps : reset global deps
148   IF(${BBTK_PACKAGE_NAME}_IN_DEPS)
149     SET(BBTK_PACKAGES_DEPS "" CACHE INTERNAL 
150       "bbtk packages dependencies" FORCE)
151 #    STRING(REPLACE "${${BBTK_PACKAGE_NAME}_DEPS};"
152 #      "" TEMP
153 #      ${BBTK_PACKAGES_DEPS})
154 #    
155 #    SET(BBTK_PACKAGES_DEPS ${TEMP}
156 #      CACHE INTERNAL "bbtk packages dependencies" FORCE)
157   ENDIF(${BBTK_PACKAGE_NAME}_IN_DEPS)
158   #-----------------------------------------------------------------------
159
160   #-----------------------------------------------------------------------
161   # Remove the package include scripts to avoid loading it by include * 
162   FILE(REMOVE ${BBTK_BBS_BUILD_PATH}/${BBTK_PACKAGE_NAME}.bbs)
163   FILE(REMOVE ${BBTK_BBS_BUILD_PATH}/${BBTK_PACKAGE_NAME}-appli.bbs)
164    #-----------------------------------------------------------------------
165  
166
167 #---------------------------------------------------------------------------
168 ENDIF(BUILD_BBTK_PACKAGE_${BBTK_PACKAGE_NAME})
169 #-----------------------------------------------------------------------------
170 # EOF
171 #-----------------------------------------------------------------------------
172
173
174
175