1 #-----------------------------------------------------------------------------
2 # BUILDS AND INSTALLS THE LIBRARY BBTK
3 #-----------------------------------------------------------------------------
6 #-----------------------------------------------------------------------------
8 #-----------------------------------------------------------------------------
11 MESSAGE(STATUS "=======================================")
12 MESSAGE(STATUS "CONFIGURING bbtk LIBRARY")
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"
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"
37 ENDIF(BBTK_COMPILER_HAS_FUNCTION)
38 ENDIF("BBTK_COMPILER_HAS_FUNCTION" MATCHES "^BBTK_COMPILER_HAS_FUNCTION$")
39 #-----------------------------------------------------------------------------
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 #-----------------------------------------------------------------------------
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)
68 CHECK_INCLUDE_FILE("termios.h" CMAKE_HAVE_TERMIOS_H)
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 #-----------------------------------------------------------------------------
77 #-----------------------------------------------------------------------------
84 #-----------------------------------------------------------------------------
85 # Generates the bbtkConfigure.h file
86 #-----------------------------------------------------------------------------
88 #-----------------------------------------------------------------------------
89 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/bbtkConfigure.h.in
90 ${CMAKE_CURRENT_BINARY_DIR}/bbtkConfigure.h
93 #-----------------------------------------------------------------------------
95 #-----------------------------------------------------------------------------
96 IF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
97 INSTALL_FILES(/include/bbtk FILES bbtkConfigure.h)
98 ENDIF(NOT BBTK_INSTALL_NO_DEVELOPMENT)
99 #-----------------------------------------------------------------------------
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
107 #-----------------------------------------------------------------------------
109 #-----------------------------------------------------------------------------
110 # EO Generates the bbtkConfigure.h file
111 #-----------------------------------------------------------------------------
118 #-----------------------------------------------------------------------------
119 # bbtk library creation
120 #-----------------------------------------------------------------------------
121 # Symbols must be exported (Windows)
122 CREA_DEFINE(BBTK_EXPORT_SYMBOLS)
124 #ADD_DEFINITIONS(-DCHECKBOXVIEW=1)
125 #-----------------------------------------------------------------------------
127 FILE(GLOB SOURCES "." "*.cxx" "*.cpp")
128 # "ThirdParty/wx/treemultictrl/*.cpp")
129 FILE(GLOB SOURCES_H "." "*.h" "*.txx" )
131 #-----------------------------------------------------------------------------
132 IF(BBTK_USE_KWWIDGETS)
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 #-----------------------------------------------------------------------------
141 #-----------------------------------------------------------------------------
144 #---------------------------------------------------------------------------
146 SET(QT4_HEADERS_TO_WRAP
147 bbtkQtBlackBoxDialog.h
149 QT4_WRAP_CPP(MOC_SOURCES ${QT4_HEADERS_TO_WRAP})
150 #---------------------------------------------------------------------------
152 QT4_WRAP_UI(UI_SOURCES
153 bbtkQtBlackBoxDialog.ui
155 SET(SOURCES ${SOURCES} ${MOC_SOURCES} ${UI_SOURCES})
158 #-----------------------------------------------------------------------------
161 #-----------------------------------------------------------------------------
163 ADD_LIBRARY(bbtk SHARED ${SOURCES} ${SOURCES_H})
164 #-----------------------------------------------------------------------------
165 TARGET_LINK_LIBRARIES(bbtk ${BBTK_LINK_LIBRARIES} ${BOOST_LIBRARIES} ${crea_LIBRARIES})
166 #-----------------------------------------------------------------------------
168 SET_TARGET_PROPERTIES(bbtk PROPERTIES COMPILE_FLAGS -Wall)
172 # for gnu linker : version script used to define exported symbols
173 #SET_TARGET_PROPERTIES(bbtk PROPERTIES
174 # LINK_FLAGS_DEBUG -Wl,--version-script=bbtk.map)
175 #SET_TARGET_PROPERTIES(bbtk PROPERTIES
176 # LINK_FLAGS_RELEASE -Wl,--version-script=bbtk.map)
178 #-----------------------------------------------------------------------------
181 #-----------------------------------------------------------------------------
182 # EO bbtk library creation
183 #-----------------------------------------------------------------------------
191 #=============================================================================
192 # bbtk library installation
193 #=============================================================================
196 #-----------------------------------------------------------------------------
197 FILE(GLOB BBTK_HEADERS "*.h" "*.txx")
198 INSTALL(FILES ${BBTK_HEADERS} DESTINATION include/bbtk)
199 INSTALL(TARGETS bbtk DESTINATION ${BBTK_LIB_PATH})
200 #-----------------------------------------------------------------------------
202 #-----------------------------------------------------------------------------
203 # Code installing the files needed to find the lib by FIND_PACKAGE
204 # Uses CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE
205 #-----------------------------------------------------------------------------
208 #-----------------------------------------------------------------------------
209 # - Set the variable LIBRARY_NAME to the name of your library
210 SET(LIBRARY_NAME BBTK)
211 SET(${LIBRARY_NAME}_INSTALL_FOLDER bbtk)
212 SET(${LIBRARY_NAME}_LIBRARIES bbtk)
213 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS kernel/src)
214 #kernel/src/ThirdParty)
215 #IF(BBTK_USE_SHIPPED_BOOST)
216 # SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS
217 # ${${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS}
218 # kernel/src/ThirdParty/${BBTK_SHIPPED_BOOST}
220 #ENDIF(BBTK_USE_SHIPPED_BOOST)
222 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
223 ${EXECUTABLE_OUTPUT_REL_PATH})
225 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
226 ${EXECUTABLE_OUTPUT_REL_PATH}
229 #${EXECUTABLE_OUTPUT_REL_PATH})/Debug
230 #${EXECUTABLE_OUTPUT_REL_PATH}/Release)
232 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS include/bbtk)
233 # include/bbtk/ThirdParty)
234 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS ${BBTK_LIB_PATH})
237 # - Set the version of your library
238 # SET YOUR LIB VERSION
239 #SET(${LIBRARY_NAME}_MAJOR_VERSION 1)
240 #SET(${LIBRARY_NAME}_MINOR_VERSION 0)
241 #SET(${LIBRARY_NAME}_BUILD_VERSION 0)
242 # REQUIRED BUILD FLAGS
243 #SET(${LIBRARY_NAME}_REQUIRED_C_FLAGS "")
244 #SET(${LIBRARY_NAME}_REQUIRED_CXX_FLAGS "")
245 #SET(${LIBRARY_NAME}_REQUIRED_LINK_FLAGS "")
246 # ADDITIONAL CONFIG FILE
247 # HERE WE USE ONE TO EXPORT testLib_EXPORTED_VALUE
249 SET(${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE TRUE)
250 SET(${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE
251 ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalBBTKConfig.cmake.in)
252 SET(${LIBRARY_NAME}_ADDITIONAL_USE_FILE
253 ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalUseBBTK.cmake.in)
254 #-----------------------------------------------------------------------------
256 #-----------------------------------------------------------------------------
257 CREA_ADVANCED_INSTALL_LIBRARY_FOR_CMAKE(${LIBRARY_NAME})
258 #-----------------------------------------------------------------------------
260 #-----------------------------------------------------------------------------
261 # EO bbtk library installation
262 #-----------------------------------------------------------------------------
265 #-----------------------------------------------------------------------------
266 # Recurse in EditorGraphicBBS to build the needed libs
267 SUBDIRS(EditorGraphicBBS)
268 #-----------------------------------------------------------------------------
271 #-----------------------------------------------------------------------------
272 # Recurse in ThirdParty to build the needed libs
274 #-----------------------------------------------------------------------------
277 MESSAGE(STATUS "=======================================")
280 #-----------------------------------------------------------------------------
282 #-----------------------------------------------------------------------------