1 # ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
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
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.
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
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 # ------------------------------------------------------------------------ */
27 #-----------------------------------------------------------------------------
28 # BUILDS AND INSTALLS THE LIBRARY BBTK
29 #-----------------------------------------------------------------------------
32 #-----------------------------------------------------------------------------
34 #-----------------------------------------------------------------------------
37 MESSAGE(STATUS "=======================================")
38 MESSAGE(STATUS "CONFIGURING bbtk LIBRARY")
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"
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"
63 ENDIF(BBTK_COMPILER_HAS_FUNCTION)
64 ENDIF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$")
65 #-----------------------------------------------------------------------------
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 #-----------------------------------------------------------------------------
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)
94 CHECK_INCLUDE_FILE("termios.h" CMAKE_HAVE_TERMIOS_H)
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 #-----------------------------------------------------------------------------
103 #-----------------------------------------------------------------------------
110 #-----------------------------------------------------------------------------
111 # Generates the bbtkConfigure.h file
112 #-----------------------------------------------------------------------------
114 #-----------------------------------------------------------------------------
115 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkConfigure.h.in
116 ${CMAKE_CURRENT_BINARY_DIR}/bbtkConfigure.h
119 #-----------------------------------------------------------------------------
121 #-----------------------------------------------------------------------------
122 IF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
123 INSTALL_FILES(/include/bbtk FILES bbtkConfigure.h)
124 ENDIF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
125 #-----------------------------------------------------------------------------
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
133 #-----------------------------------------------------------------------------
135 #-----------------------------------------------------------------------------
136 # EO Generates the bbtkConfigure.h file
137 #-----------------------------------------------------------------------------
144 #-----------------------------------------------------------------------------
145 # bbtk library creation
146 #-----------------------------------------------------------------------------
147 # Symbols must be exported (Windows)
148 CREA_DEFINE(BBTK_EXPORT_SYMBOLS)
150 #ADD_DEFINITIONS(-DCHECKBOXVIEW=1)
151 #-----------------------------------------------------------------------------
153 FILE(GLOB SOURCES "." "*.cxx" "*.cpp")
154 # "ThirdParty/wx/treemultictrl/*.cpp")
155 FILE(GLOB SOURCES_H "." "*.h" "*.txx" )
157 #-----------------------------------------------------------------------------
158 IF(BBTK_USE_KWWIDGETS)
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 #-----------------------------------------------------------------------------
167 #-----------------------------------------------------------------------------
170 #---------------------------------------------------------------------------
172 SET(QT4_HEADERS_TO_WRAP
173 bbtkQtBlackBoxDialog.h
175 QT4_WRAP_CPP(MOC_SOURCES ${QT4_HEADERS_TO_WRAP} OPTIONS -DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED)
176 #---------------------------------------------------------------------------
178 QT4_WRAP_UI(UI_SOURCES
179 bbtkQtBlackBoxDialog.ui
181 SET(SOURCES ${SOURCES} ${MOC_SOURCES} ${UI_SOURCES})
184 # JFGA 03/12/2014 -- Temporal configuration of WT
185 # *********Missing if conditional Wt********
186 #find_package(Boost COMPONENTS system thread signals)
188 #find_library(wtext wtext)
189 #find_library(wthttp wthttp)
190 INCLUDE_DIRECTORIES(/usr/local/lib/)
194 #-----------------------------------------------------------------------------
197 #-----------------------------------------------------------------------------
199 ADD_LIBRARY(bbtk SHARED ${SOURCES} ${SOURCES_H})
200 #-----------------------------------------------------------------------------
201 TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_LIBRARIES} ${BOOST_LIBRARIES} ${crea_LIBRARIES} ${WT_LIBRARIES})
202 #-----------------------------------------------------------------------------
204 SET_TARGET_PROPERTIES(bbtk PROPERTIES COMPILE_FLAGS -Wall)
208 # for gnu linker : version script used to define exported symbols
209 #SET_TARGET_PROPERTIES(bbtk PROPERTIES
210 # LINK_FLAGS_DEBUG -Wl,--version-script=bbtk.map)
211 #SET_TARGET_PROPERTIES(bbtk PROPERTIES
212 # LINK_FLAGS_RELEASE -Wl,--version-script=bbtk.map)
214 #-----------------------------------------------------------------------------
217 #-----------------------------------------------------------------------------
218 # EO bbtk library creation
219 #-----------------------------------------------------------------------------
227 #=============================================================================
228 # bbtk library installation
229 #=============================================================================
232 #-----------------------------------------------------------------------------
233 FILE(GLOB BBTK_HEADERS "*.h" "*.txx")
234 INSTALL(FILES ${BBTK_HEADERS} DESTINATION include/bbtk)
235 INSTALL(TARGETS bbtk DESTINATION ${BBTK_LIB_PATH})
236 #-----------------------------------------------------------------------------
238 #-----------------------------------------------------------------------------
239 # Code installing the files needed to find the lib by FIND_PACKAGE
240 # Uses CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE
241 #-----------------------------------------------------------------------------
244 #-----------------------------------------------------------------------------
245 # - Set the variable LIBRARY_NAME to the name of your library
246 SET(LIBRARY_NAME BBTK)
247 SET(${LIBRARY_NAME}_INSTALL_FOLDER bbtk)
248 SET(${LIBRARY_NAME}_LIBRARIES bbtk)
249 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS kernel/src)
250 #kernel/src/ThirdParty)
251 #IF(BBTK_USE_SHIPPED_BOOST)
252 # SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS
253 # ${${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS}
254 # kernel/src/ThirdParty/${BBTK_SHIPPED_BOOST}
256 #ENDIF(BBTK_USE_SHIPPED_BOOST)
258 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
259 ${EXECUTABLE_OUTPUT_REL_PATH})
261 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
262 ${EXECUTABLE_OUTPUT_REL_PATH}
265 #${EXECUTABLE_OUTPUT_REL_PATH})/Debug
266 #${EXECUTABLE_OUTPUT_REL_PATH}/Release)
268 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/bbtk)
269 # include/bbtk/ThirdParty)
270 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS ${BBTK_LIB_PATH})
273 # - Set the version of your library
274 # SET YOUR LIB VERSION
275 #SET(${LIBRARY_NAME}_MAJOR_VERSION 1)
276 #SET(${LIBRARY_NAME}_MINOR_VERSION 0)
277 #SET(${LIBRARY_NAME}_BUILD_VERSION 0)
278 # REQUIRED BUILD FLAGS
279 #SET(${LIBRARY_NAME}_REQUIRED_C_FLAGS "")
280 #SET(${LIBRARY_NAME}_REQUIRED_CXX_FLAGS "")
281 #SET(${LIBRARY_NAME}_REQUIRED_LINK_FLAGS "")
282 # ADDITIONAL CONFIG FILE
283 # HERE WE USE ONE TO EXPORT testLib_EXPORTED_VALUE
285 SET(${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE TRUE)
286 SET(${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE
287 ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalBBTKConfig.cmake.in)
288 SET(${LIBRARY_NAME}_ADDITIONAL_USE_FILE
289 ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalUseBBTK.cmake.in)
290 #-----------------------------------------------------------------------------
292 #-----------------------------------------------------------------------------
293 CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME})
295 #-----------------------------------------------------------------------------
297 #-----------------------------------------------------------------------------
298 # EO bbtk library installation
299 #-----------------------------------------------------------------------------
302 #-----------------------------------------------------------------------------
303 # Recurse in EditorGraphicBBS to build the needed libs
304 #EED ADD_SUBDIRECTORY(EditorGraphicBBS)
305 #-----------------------------------------------------------------------------
308 #-----------------------------------------------------------------------------
309 # Recurse in ThirdParty to build the needed libs
310 #ADD_SUBDIRECTORY(ThirdParty)
311 #-----------------------------------------------------------------------------
314 MESSAGE(STATUS "=======================================")
317 #-----------------------------------------------------------------------------
319 #-----------------------------------------------------------------------------