]> Creatis software - bbtk.git/blob - kernel/src/CMakeLists.txt
ae687e50ada3d04aea0d6db1174023b5c09b8a46
[bbtk.git] / kernel / src / CMakeLists.txt
1  # ---------------------------------------------------------------------
2  #
3  # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
4  #                        pour la SantÈ)
5  # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6  # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7  # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
8  #
9  #  This software is governed by the CeCILL-B license under French law and
10  #  abiding by the rules of distribution of free software. You can  use,
11  #  modify and/ or redistribute the software under the terms of the CeCILL-B
12  #  license as circulated by CEA, CNRS and INRIA at the following URL
13  #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14  #  or in the file LICENSE.txt.
15  #
16  #  As a counterpart to the access to the source code and  rights to copy,
17  #  modify and redistribute granted by the license, users are provided only
18  #  with a limited warranty  and the software's author,  the holder of the
19  #  economic rights,  and the successive licensors  have only  limited
20  #  liability.
21  #
22  #  The fact that you are presently reading this means that you have had
23  #  knowledge of the CeCILL-B license and that you accept its terms.
24  # ------------------------------------------------------------------------ */
25
26
27 #-----------------------------------------------------------------------------
28 # BUILDS AND INSTALLS THE LIBRARY BBTK
29 #-----------------------------------------------------------------------------
30
31
32 #-----------------------------------------------------------------------------
33 # Tests 
34 #-----------------------------------------------------------------------------
35
36 MESSAGE(STATUS "")
37 MESSAGE(STATUS "=======================================")
38 MESSAGE(STATUS "CONFIGURING bbtk LIBRARY")
39
40
41 #-----------------------------------------------------------------------------
42 # Test if compiler defines the pseudo-macro __FUNCTION__
43 IF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$")
44   MESSAGE(STATUS "Checking support for __FUNCTION__ in compiler")
45   TRY_COMPILE(BBTK_COMPILER_HAS_FUNCTION
46               ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/Function
47               ${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkTestFUNCTION.cxx
48               OUTPUT_VARIABLE OUTPUT)
49   IF(BBTK_COMPILER_HAS_FUNCTION)
50     MESSAGE(STATUS "Checking support for __FUNCTION__ -- yes")
51     SET(BBTK_COMPILER_HAS_FUNCTION 1 CACHE INTERNAL "Support for extension C __FUNCTION__")
52     WRITE_FILE(${CMAKE_CURRENT_BINARY_DIR}/CMakeOutput.log
53       "Determining if the C compiler supports __FUNCTION__ "
54       "passed with the following output:\n"
55       "${OUTPUT}\n" APPEND)
56   ELSE(BBTK_COMPILER_HAS_FUNCTION)
57     MESSAGE(STATUS "Checking support for __FUNCTION__ -- no")
58     SET(BBTK_COMPILER_HAS_FUNCTION 0 CACHE INTERNAL "Support for extension C __FUNCTION__")
59     WRITE_FILE(${CMAKE_CURRENT_BINARY_DIR}/CMakeError.log
60       "Determining if the C compiler supports __FUNCTION__ "
61       "failed with the following output:\n"
62       "${OUTPUT}\n" APPEND)
63   ENDIF(BBTK_COMPILER_HAS_FUNCTION)
64 ENDIF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$")
65 #-----------------------------------------------------------------------------
66
67 #-----------------------------------------------------------------------------
68 # Test is compiler support istringstream
69 IF("BBTK_TEST_ISTRINGSTREAM" MATCHES "^BBTK_TEST_ISTRINGSTREAM$")
70   MESSAGE(STATUS "Checking istringstream")
71   TRY_RUN(BBTK_TEST_ISTRINGSTREAM BBTK_TEST_ISTRINGSTREAM_COMPILED
72           ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/
73           ${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkTestIstringStream.cxx)
74   IF(BBTK_TEST_ISTRINGSTREAM_COMPILED)
75     IF(BBTK_TEST_ISTRINGSTREAM)
76       MESSAGE(STATUS "Checking istringstream works -- yes")
77       SET(BBTK_TEST_ISTRINGSTREAM 1 CACHE INTERNAL "Whether istringstream works.")
78     ELSE(BBTK_TEST_ISTRINGSTREAM)
79       MESSAGE(STATUS "Checking istringstream works -- no")
80       SET(BBTK_TEST_ISTRINGSTREAM 0 CACHE INTERNAL "Whether istringstream works.")
81     ENDIF(BBTK_TEST_ISTRINGSTREAM)
82   ELSE(BBTK_TEST_ISTRINGSTREAM_COMPILED)
83     MESSAGE(STATUS "Checking istringstream -- failed")
84   ENDIF(BBTK_TEST_ISTRINGSTREAM_COMPILED)
85 ENDIF("BBTK_TEST_ISTRINGSTREAM" MATCHES "^BBTK_TEST_ISTRINGSTREAM$")
86 #-----------------------------------------------------------------------------
87
88 #-----------------------------------------------------------------------------
89 INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
90 CHECK_INCLUDE_FILE("stdint.h"       CMAKE_HAVE_STDINT_H)
91 IF(UNIX) #Avoid polluting Win32 cmakecache
92   CHECK_INCLUDE_FILE("inttypes.h"   CMAKE_HAVE_INTTYPES_H)
93   # termios 
94   CHECK_INCLUDE_FILE("termios.h"   CMAKE_HAVE_TERMIOS_H)
95 ENDIF(UNIX)
96 # Special Time support, two conventions: *NIX vs Win32
97 CHECK_INCLUDE_FILE("sys/times.h"    CMAKE_HAVE_SYS_TIMES_H)
98 CHECK_INCLUDE_FILE("sys/timeb.h"    CMAKE_HAVE_SYS_TIMEB_H)
99 #-----------------------------------------------------------------------------
100
101   
102
103 #-----------------------------------------------------------------------------
104
105
106
107
108
109
110 #-----------------------------------------------------------------------------
111 # Generates the bbtkConfigure.h file
112 #-----------------------------------------------------------------------------
113
114 #-----------------------------------------------------------------------------
115 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkConfigure.h.in
116                ${CMAKE_CURRENT_BINARY_DIR}/bbtkConfigure.h 
117                @ONLY IMMEDIATE
118                )
119 #-----------------------------------------------------------------------------
120
121 #-----------------------------------------------------------------------------
122 IF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
123   INSTALL_FILES(/include/bbtk FILES bbtkConfigure.h)
124 ENDIF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
125 #-----------------------------------------------------------------------------
126
127 #-----------------------------------------------------------------------------
128 # Add the path to current dir for apps to find bbtkConfigure.h
129 # LG : already done in upper dir
130 #INCLUDE_DIRECTORIES(
131 #  ${CMAKE_CURRENT_BINARY_DIR} #for bbtkConfigure.h
132 #)
133 #-----------------------------------------------------------------------------
134
135 #-----------------------------------------------------------------------------
136 # EO Generates the bbtkConfigure.h file
137 #-----------------------------------------------------------------------------
138
139
140
141
142
143
144 #-----------------------------------------------------------------------------
145 # bbtk library creation
146 #-----------------------------------------------------------------------------
147 # Symbols must be exported (Windows)
148 CREA_DEFINE(BBTK_EXPORT_SYMBOLS)
149
150 #ADD_DEFINITIONS(-DCHECKBOXVIEW=1)
151 #-----------------------------------------------------------------------------
152 # Sources files 
153 FILE(GLOB SOURCES "." "*.cxx" "*.cpp") 
154 # "ThirdParty/wx/treemultictrl/*.cpp")
155 FILE(GLOB SOURCES_H "." "*.h" "*.txx" )
156
157 #-----------------------------------------------------------------------------
158 IF(BBTK_USE_KWWIDGETS)
159   IF(KWWidgets_FOUND)
160     include("${KWWidgets_CMAKE_DIR}/KWWidgetsWrappingMacros.cmake")
161     kwwidgets_wrap_tcl(bbtk LIB_TCL_SRCS "vtkKWBlackBoxDialog.cxx" "")
162     SET(SOURCES ${SOURCES} ${LIB_TCL_SRCS})
163   ENDIF(KWWidgets_FOUND)
164 ENDIF(BBTK_USE_KWWIDGETS)
165 #-----------------------------------------------------------------------------
166
167 #-----------------------------------------------------------------------------
168 IF(BBTK_USE_QT)
169   IF(QT_FOUND)
170     #--------------------------------------------------------------------------- 
171     # MOC
172     SET(QT4_HEADERS_TO_WRAP
173       bbtkQtBlackBoxDialog.h
174       )
175     QT4_WRAP_CPP(MOC_SOURCES ${QT4_HEADERS_TO_WRAP} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
176     #--------------------------------------------------------------------------- 
177     # UI
178     QT4_WRAP_UI(UI_SOURCES
179       bbtkQtBlackBoxDialog.ui
180       )
181     SET(SOURCES ${SOURCES} ${MOC_SOURCES} ${UI_SOURCES})
182   ENDIF(QT_FOUND)
183
184 # JFGA 03/12/2014 --  Temporal configuration of WT 
185 # *********Missing if conditional Wt********
186    #find_package(Boost COMPONENTS system thread signals)
187    #find_library(wt wt)
188    #find_library(wthttp wthttp)
189    INCLUDE_DIRECTORIES(/usr/local/include/Wt)
190
191
192 ENDIF(BBTK_USE_QT)
193 #-----------------------------------------------------------------------------
194
195
196 #-----------------------------------------------------------------------------
197 # lib definition
198 ADD_LIBRARY(bbtk SHARED ${SOURCES} ${SOURCES_H})
199 #-----------------------------------------------------------------------------
200 TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_LIBRARIES} ${BOOST_LIBRARIES}  ${crea_LIBRARIES} ${WT_LIBRARIES})
201 #-----------------------------------------------------------------------------
202 IF(UNIX)
203 SET_TARGET_PROPERTIES(bbtk PROPERTIES COMPILE_FLAGS -Wall)
204 ENDIF(UNIX)
205
206 #IF(UNIX)
207 # for gnu linker : version script used to define exported symbols
208 #SET_TARGET_PROPERTIES(bbtk PROPERTIES 
209 #  LINK_FLAGS_DEBUG -Wl,--version-script=bbtk.map)
210 #SET_TARGET_PROPERTIES(bbtk PROPERTIES
211 #  LINK_FLAGS_RELEASE -Wl,--version-script=bbtk.map)
212 #ENDIF(UNIX)
213 #-----------------------------------------------------------------------------
214
215
216 #-----------------------------------------------------------------------------
217 # EO bbtk library creation
218 #-----------------------------------------------------------------------------
219
220
221
222
223
224
225
226 #=============================================================================
227 # bbtk library installation
228 #=============================================================================
229
230
231 #-----------------------------------------------------------------------------
232 FILE(GLOB BBTK_HEADERS "*.h" "*.txx")
233 INSTALL(FILES ${BBTK_HEADERS} DESTINATION include/bbtk)
234 INSTALL(TARGETS bbtk DESTINATION ${BBTK_LIB_PATH})
235 #-----------------------------------------------------------------------------
236
237 #-----------------------------------------------------------------------------
238 # Code installing the files needed to find the lib by FIND_PACKAGE
239 # Uses CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE
240 #-----------------------------------------------------------------------------
241
242
243 #-----------------------------------------------------------------------------
244 # - Set the variable LIBRARY_NAME to the name of your library
245 SET(LIBRARY_NAME BBTK)
246 SET(${LIBRARY_NAME}_INSTALL_FOLDER bbtk)
247 SET(${LIBRARY_NAME}_LIBRARIES bbtk)
248 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS kernel/src)
249 #kernel/src/ThirdParty)
250 #IF(BBTK_USE_SHIPPED_BOOST)
251 #  SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS
252 #    ${${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS} 
253 #    kernel/src/ThirdParty/${BBTK_SHIPPED_BOOST}
254 #    )
255 #ENDIF(BBTK_USE_SHIPPED_BOOST)
256 IF(UNIX)
257   SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS 
258     ${EXECUTABLE_OUTPUT_REL_PATH})
259 ELSE(UNIX)
260   SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
261     ${EXECUTABLE_OUTPUT_REL_PATH}
262     .
263     )
264     #${EXECUTABLE_OUTPUT_REL_PATH})/Debug
265     #${EXECUTABLE_OUTPUT_REL_PATH}/Release)
266 ENDIF(UNIX)
267 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/bbtk)
268 # include/bbtk/ThirdParty)
269 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS ${BBTK_LIB_PATH})
270
271 # OPTIONAL 
272 # - Set the version of your library
273 # SET YOUR LIB VERSION
274 #SET(${LIBRARY_NAME}_MAJOR_VERSION 1)
275 #SET(${LIBRARY_NAME}_MINOR_VERSION 0)
276 #SET(${LIBRARY_NAME}_BUILD_VERSION 0)
277 # REQUIRED BUILD FLAGS
278 #SET(${LIBRARY_NAME}_REQUIRED_C_FLAGS "")
279 #SET(${LIBRARY_NAME}_REQUIRED_CXX_FLAGS "")
280 #SET(${LIBRARY_NAME}_REQUIRED_LINK_FLAGS "")
281 # ADDITIONAL CONFIG FILE
282 # HERE WE USE ONE TO EXPORT testLib_EXPORTED_VALUE
283
284 SET(${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE TRUE)
285 SET(${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE 
286   ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalBBTKConfig.cmake.in)
287 SET(${LIBRARY_NAME}_ADDITIONAL_USE_FILE 
288   ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalUseBBTK.cmake.in)
289 #-----------------------------------------------------------------------------
290
291 #-----------------------------------------------------------------------------
292 CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME})
293
294 #-----------------------------------------------------------------------------
295
296 #-----------------------------------------------------------------------------
297 # EO bbtk library installation
298 #-----------------------------------------------------------------------------
299
300
301 #-----------------------------------------------------------------------------
302 # Recurse in EditorGraphicBBS to build the needed libs
303 #EED ADD_SUBDIRECTORY(EditorGraphicBBS)
304 #-----------------------------------------------------------------------------
305
306
307 #-----------------------------------------------------------------------------
308 # Recurse in ThirdParty to build the needed libs
309 #ADD_SUBDIRECTORY(ThirdParty)
310 #-----------------------------------------------------------------------------
311
312
313 MESSAGE(STATUS "=======================================")
314 MESSAGE(STATUS "")
315
316 #-----------------------------------------------------------------------------
317 # EOF
318 #-----------------------------------------------------------------------------
319