]> Creatis software - bbtk.git/blob - kernel/src/CMakeLists.txt
*** empty log message ***
[bbtk.git] / kernel / src / CMakeLists.txt
1 #-----------------------------------------------------------------------------
2 # BUILDS AND INSTALLS THE LIBRARY BBTK
3 #-----------------------------------------------------------------------------
4
5
6 #-----------------------------------------------------------------------------
7 # Tests 
8 #-----------------------------------------------------------------------------
9
10 MESSAGE(STATUS "")
11 MESSAGE(STATUS "=======================================")
12 MESSAGE(STATUS "CONFIGURING bbtk LIBRARY")
13
14
15 #-----------------------------------------------------------------------------
16 # Test if compiler defines the pseudo-macro __FUNCTION__
17 IF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$")
18   MESSAGE(STATUS "Checking support for __FUNCTION__ in compiler")
19   TRY_COMPILE(BBTK_COMPILER_HAS_FUNCTION
20               ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/Function
21               ${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkTestFUNCTION.cxx
22               OUTPUT_VARIABLE OUTPUT)
23   IF(BBTK_COMPILER_HAS_FUNCTION)
24     MESSAGE(STATUS "Checking support for __FUNCTION__ -- yes")
25     SET(BBTK_COMPILER_HAS_FUNCTION 1 CACHE INTERNAL "Support for extension C __FUNCTION__")
26     WRITE_FILE(${CMAKE_CURRENT_BINARY_DIR}/CMakeOutput.log
27       "Determining if the C compiler supports __FUNCTION__ "
28       "passed with the following output:\n"
29       "${OUTPUT}\n" APPEND)
30   ELSE(BBTK_COMPILER_HAS_FUNCTION)
31     MESSAGE(STATUS "Checking support for __FUNCTION__ -- no")
32     SET(BBTK_COMPILER_HAS_FUNCTION 0 CACHE INTERNAL "Support for extension C __FUNCTION__")
33     WRITE_FILE(${CMAKE_CURRENT_BINARY_DIR}/CMakeError.log
34       "Determining if the C compiler supports __FUNCTION__ "
35       "failed with the following output:\n"
36       "${OUTPUT}\n" APPEND)
37   ENDIF(BBTK_COMPILER_HAS_FUNCTION)
38 ENDIF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$")
39 #-----------------------------------------------------------------------------
40
41 #-----------------------------------------------------------------------------
42 # Test is compiler support istringstream
43 IF("BBTK_TEST_ISTRINGSTREAM" MATCHES "^BBTK_TEST_ISTRINGSTREAM$")
44   MESSAGE(STATUS "Checking istringstream")
45   TRY_RUN(BBTK_TEST_ISTRINGSTREAM BBTK_TEST_ISTRINGSTREAM_COMPILED
46           ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/
47           ${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkTestIstringStream.cxx)
48   IF(BBTK_TEST_ISTRINGSTREAM_COMPILED)
49     IF(BBTK_TEST_ISTRINGSTREAM)
50       MESSAGE(STATUS "Checking istringstream works -- yes")
51       SET(BBTK_TEST_ISTRINGSTREAM 1 CACHE INTERNAL "Whether istringstream works.")
52     ELSE(BBTK_TEST_ISTRINGSTREAM)
53       MESSAGE(STATUS "Checking istringstream works -- no")
54       SET(BBTK_TEST_ISTRINGSTREAM 0 CACHE INTERNAL "Whether istringstream works.")
55     ENDIF(BBTK_TEST_ISTRINGSTREAM)
56   ELSE(BBTK_TEST_ISTRINGSTREAM_COMPILED)
57     MESSAGE(STATUS "Checking istringstream -- failed")
58   ENDIF(BBTK_TEST_ISTRINGSTREAM_COMPILED)
59 ENDIF("BBTK_TEST_ISTRINGSTREAM" MATCHES "^BBTK_TEST_ISTRINGSTREAM$")
60 #-----------------------------------------------------------------------------
61
62 #-----------------------------------------------------------------------------
63 INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake)
64 CHECK_INCLUDE_FILE("stdint.h"       CMAKE_HAVE_STDINT_H)
65 IF(UNIX) #Avoid polluting Win32 cmakecache
66   CHECK_INCLUDE_FILE("inttypes.h"   CMAKE_HAVE_INTTYPES_H)
67   # termios 
68   CHECK_INCLUDE_FILE("termios.h"   CMAKE_HAVE_TERMIOS_H)
69 ENDIF(UNIX)
70 # Special Time support, two conventions: *NIX vs Win32
71 CHECK_INCLUDE_FILE("sys/times.h"    CMAKE_HAVE_SYS_TIMES_H)
72 CHECK_INCLUDE_FILE("sys/timeb.h"    CMAKE_HAVE_SYS_TIMEB_H)
73 #-----------------------------------------------------------------------------
74
75   
76
77 #-----------------------------------------------------------------------------
78
79
80
81
82
83
84 #-----------------------------------------------------------------------------
85 # Generates the bbtkConfigure.h file
86 #-----------------------------------------------------------------------------
87
88 #-----------------------------------------------------------------------------
89 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkConfigure.h.in
90                ${CMAKE_CURRENT_BINARY_DIR}/bbtkConfigure.h 
91                @ONLY IMMEDIATE
92                )
93 #-----------------------------------------------------------------------------
94
95 #-----------------------------------------------------------------------------
96 IF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
97   INSTALL_FILES(/include/bbtk FILES bbtkConfigure.h)
98 ENDIF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
99 #-----------------------------------------------------------------------------
100
101 #-----------------------------------------------------------------------------
102 # Add the path to current dir for apps to find bbtkConfigure.h
103 # LG : already done in upper dir
104 #INCLUDE_DIRECTORIES(
105 #  ${CMAKE_CURRENT_BINARY_DIR} #for bbtkConfigure.h
106 #)
107 #-----------------------------------------------------------------------------
108
109 #-----------------------------------------------------------------------------
110 # EO Generates the bbtkConfigure.h file
111 #-----------------------------------------------------------------------------
112
113
114
115
116
117
118 #-----------------------------------------------------------------------------
119 # bbtk library creation
120 #-----------------------------------------------------------------------------
121 # Symbols must be exported (Windows)
122 CREA_DEFINE(BBTK_EXPORT_SYMBOLS)
123
124 #ADD_DEFINITIONS(-DCHECKBOXVIEW=1)
125 #-----------------------------------------------------------------------------
126 # Sources files 
127 FILE(GLOB SOURCES "." "*.cxx" "*.cpp") 
128 # "ThirdParty/wx/treemultictrl/*.cpp")
129 FILE(GLOB SOURCES_H "." "*.h" )
130
131 #-----------------------------------------------------------------------------
132 IF(BBTK_USE_KWWIDGETS)
133   IF(KWWidgets_FOUND)
134     include("${KWWidgets_CMAKE_DIR}/KWWidgetsWrappingMacros.cmake")
135     kwwidgets_wrap_tcl(bbtk LIB_TCL_SRCS "vtkKWBlackBoxDialog.cxx" "")
136     SET(SOURCES ${SOURCES} ${LIB_TCL_SRCS})
137   ENDIF(KWWidgets_FOUND)
138 ENDIF(BBTK_USE_KWWIDGETS)
139 #-----------------------------------------------------------------------------
140
141 #-----------------------------------------------------------------------------
142 IF(BBTK_USE_QT)
143   #--------------------------------------------------------------------------- 
144   # MOC
145   SET(QT4_HEADERS_TO_WRAP
146     bbtkQtBlackBoxDialog.h
147     )
148   QT4_WRAP_CPP(MOC_SOURCES ${QT4_HEADERS_TO_WRAP})
149   #--------------------------------------------------------------------------- 
150   # UI
151   QT4_WRAP_UI(UI_SOURCES
152     bbtkQtBlackBoxDialog.ui
153     )
154   SET(SOURCES ${SOURCES} ${MOC_SOURCES} ${UI_SOURCES})
155 ENDIF(BBTK_USE_QT)
156 #-----------------------------------------------------------------------------
157
158
159 #-----------------------------------------------------------------------------
160 # lib definition
161 ADD_LIBRARY(bbtk SHARED ${SOURCES} ${SOURCES_H})
162 #-----------------------------------------------------------------------------
163 TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_LIBRARIES})
164 #-----------------------------------------------------------------------------
165 IF(UNIX)
166 SET_TARGET_PROPERTIES(bbtk PROPERTIES COMPILE_FLAGS -Wall)
167 ENDIF(UNIX)
168
169 #IF(UNIX)
170 # for gnu linker : version script used to define exported symbols
171 #SET_TARGET_PROPERTIES(bbtk PROPERTIES 
172 #  LINK_FLAGS_DEBUG -Wl,--version-script=bbtk.map)
173 #SET_TARGET_PROPERTIES(bbtk PROPERTIES
174 #  LINK_FLAGS_RELEASE -Wl,--version-script=bbtk.map)
175 #ENDIF(UNIX)
176 #-----------------------------------------------------------------------------
177
178
179 #-----------------------------------------------------------------------------
180 # EO bbtk library creation
181 #-----------------------------------------------------------------------------
182
183
184
185
186
187
188
189 #=============================================================================
190 # bbtk library installation
191 #=============================================================================
192
193
194 #-----------------------------------------------------------------------------
195 FILE(GLOB BBTK_HEADERS "*.h")
196 INSTALL(FILES ${BBTK_HEADERS} DESTINATION include/bbtk)
197 INSTALL(TARGETS bbtk DESTINATION ${BBTK_LIB_PATH})
198 #-----------------------------------------------------------------------------
199
200 #-----------------------------------------------------------------------------
201 # Code installing the files needed to find the lib by FIND_PACKAGE
202 # Uses CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE
203 #-----------------------------------------------------------------------------
204
205
206 #-----------------------------------------------------------------------------
207 # - Set the variable LIBRARY_NAME to the name of your library
208 SET(LIBRARY_NAME BBTK)
209 SET(${LIBRARY_NAME}_INSTALL_FOLDER bbtk)
210 SET(${LIBRARY_NAME}_LIBRARIES bbtk)
211 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS kernel/src kernel/src/ThirdParty)
212 IF(BBTK_USE_SHIPPED_BOOST)
213   SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS
214     ${${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS} 
215     kernel/src/ThirdParty/${BBTK_SHIPPED_BOOST}
216     )
217 ENDIF(BBTK_USE_SHIPPED_BOOST)
218 IF(UNIX)
219   SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS 
220     ${EXECUTABLE_OUTPUT_REL_PATH})
221 ELSE(UNIX)
222   SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
223     ${EXECUTABLE_OUTPUT_REL_PATH}
224     .
225     )
226     #${EXECUTABLE_OUTPUT_REL_PATH})/Debug
227     #${EXECUTABLE_OUTPUT_REL_PATH}/Release)
228 ENDIF(UNIX)
229 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/bbtk include/bbtk/ThirdParty)
230 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS ${BBTK_LIB_PATH})
231
232 # OPTIONAL 
233 # - Set the version of your library
234 # SET YOUR LIB VERSION
235 #SET(${LIBRARY_NAME}_MAJOR_VERSION 1)
236 #SET(${LIBRARY_NAME}_MINOR_VERSION 0)
237 #SET(${LIBRARY_NAME}_BUILD_VERSION 0)
238 # REQUIRED BUILD FLAGS
239 #SET(${LIBRARY_NAME}_REQUIRED_C_FLAGS "")
240 #SET(${LIBRARY_NAME}_REQUIRED_CXX_FLAGS "")
241 #SET(${LIBRARY_NAME}_REQUIRED_LINK_FLAGS "")
242 # ADDITIONAL CONFIG FILE
243 # HERE WE USE ONE TO EXPORT testLib_EXPORTED_VALUE
244
245 SET(${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE TRUE)
246 SET(${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE 
247   ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalBBTKConfig.cmake.in)
248 SET(${LIBRARY_NAME}_ADDITIONAL_USE_FILE 
249   ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalUseBBTK.cmake.in)
250 #-----------------------------------------------------------------------------
251
252 #-----------------------------------------------------------------------------
253 CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME})
254 #-----------------------------------------------------------------------------
255
256 #-----------------------------------------------------------------------------
257 # EO bbtk library installation
258 #-----------------------------------------------------------------------------
259
260
261 #-----------------------------------------------------------------------------
262 # Recurse in ThirdParty to build the needed libs
263 SUBDIRS(ThirdParty)
264 #-----------------------------------------------------------------------------
265
266 MESSAGE(STATUS "=======================================")
267 MESSAGE(STATUS "")
268
269 #-----------------------------------------------------------------------------
270 # EOF
271 #-----------------------------------------------------------------------------
272