2 #----------------------------------------------------------------------------
3 # BINARY DIR MUST BE IN INCLUDE DIRS
4 # TO FIND .h OF AUTOMATICALLY GENERATED FILES (e.g. FROM XML)
5 INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
6 # SOURCES DIR MUST ALSO BE IN INCLUDE DIRS FOR FILES COMPILED IN BINARY DIR
7 # WHICH NEED TO INCLUDE OTHER FILES OF THE PACKAGE
8 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} )
9 #----------------------------------------------------------------------------
11 #----------------------------------------------------------------------------
12 # CREATES bb${BBTK_PACKAGE_NAME}Package.h
14 ${BBTK_CMAKE_DIR}/bbPackage.h.in
15 ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.h
19 FILES bb${BBTK_PACKAGE_NAME}Package.h
20 DESTINATION include/bb${BBTK_PACKAGE_NAME}
22 #----------------------------------------------------------------------------
24 #----------------------------------------------------------------------------
25 # CREATES bb${BBTK_PACKAGE_NAME}Package.cxx
27 ${BBTK_CMAKE_DIR}/bbPackage.cxx.in
28 ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.cxx
31 #----------------------------------------------------------------------------
33 #----------------------------------------------------------------------------
34 SET_SOURCE_FILES_PROPERTIES(
35 ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.cxx
36 PROPERTIES GENERATED ON)
37 #----------------------------------------------------------------------------
40 #----------------------------------------------------------------------------
41 IF(BBTK_PACKAGE_COMPILE_ALL_CXX)
42 FILE(GLOB BBTK_PACKAGE_CXX_SOURCES "." "*.cxx")
43 FILE(GLOB BBTK_PACKAGE_H_SOURCES "." "*.h")
44 ENDIF(BBTK_PACKAGE_COMPILE_ALL_CXX)
47 SET(BBTK_PACKAGE_CXX_SOURCES
48 ${BBTK_PACKAGE_CXX_SOURCES}
49 #${CMAKE_CURRENT_BINARY_DIR_NAME}/
50 bb${BBTK_PACKAGE_NAME}Package
52 #----------------------------------------------------------------------------
55 #----------------------------------------------------------------------------
56 #----------------------------------------------------------------------------
58 #----------------------------------------------------------------------------
60 #----------------------------------------------------------------------------
61 IF(BBTK_PACKAGE_COMPILE_ALL_XML)
62 FILE(GLOB BBTK_PACKAGE_XML_SOURCES "." "*.xml")
63 ENDIF(BBTK_PACKAGE_COMPILE_ALL_XML)
64 #----------------------------------------------------------------------------
65 FOREACH(xmlfile ${BBTK_PACKAGE_XML_SOURCES})
67 GET_FILENAME_COMPONENT(filename "${xmlfile}" NAME_WE)
69 IF(EXISTS ${BBTK_BBFY})
71 ELSE(EXISTS ${BBTK_BBFY})
72 SET(BBFY_DEPENDENCY ${BBTK_BBFY})
73 ENDIF(EXISTS ${BBTK_BBFY})
75 SET(BBFY_CXX_OUT ${CMAKE_CURRENT_BINARY_DIR}/${filename}.cxx)
78 OUTPUT ${BBFY_CXX_OUT}
80 ${BBTK_BBFY} ${xmlfile} ${CMAKE_CURRENT_BINARY_DIR}/ -q
85 SET_SOURCE_FILES_PROPERTIES(
87 PROPERTIES GENERATED ON)
90 IF(NOT BBTK_PACKAGE_CXX_SOURCES MATCHES "${filename}")
91 SET(BBTK_PACKAGE_CXX_SOURCES
92 ${BBTK_PACKAGE_CXX_SOURCES}
95 ENDIF(NOT BBTK_PACKAGE_CXX_SOURCES MATCHES "${filename}")
99 DESTINATION include/bb${BBTK_PACKAGE_NAME})
102 #----------------------------------------------------------------------------
106 #----------------------------------------------------------------------------
108 ADD_LIBRARY(bb${BBTK_PACKAGE_NAME} SHARED
109 ${BBTK_PACKAGE_CXX_SOURCES} ${BBTK_PACKAGE_H_SOURCES}
111 TARGET_LINK_LIBRARIES(bb${BBTK_PACKAGE_NAME}
115 #----------------------------------------------------------------------------
118 #----------------------------------------------------------------------------
120 FILE(GLOB ${BBTK_PACKAGE_NAME}_HEADERS "*.h")
122 FILES ${${BBTK_PACKAGE_NAME}_HEADERS}
123 DESTINATION include/bb${BBTK_PACKAGE_NAME}
126 TARGETS bb${BBTK_PACKAGE_NAME}
130 SET( LIBRARY_NAME bb${BBTK_PACKAGE_NAME} )
131 # SET THE LIB VERSION
132 SET(${LIBRARY_NAME}_MAJOR_VERSION ${BBTK_PACKAGE_MAJOR_VERSION})
133 SET(${LIBRARY_NAME}_MINOR_VERSION ${BBTK_PACKAGE_MINOR_VERSION})
134 SET(${LIBRARY_NAME}_BUILD_VERSION ${BBTK_PACKAGE_BUILD_VERSION})
136 SET(${LIBRARY_NAME}_INSTALL_FOLDER bb${BBTK_PACKAGE_NAME})
137 SET(${LIBRARY_NAME}_LIBRARIES bb${BBTK_PACKAGE_NAME})
140 ${LIBRARY_NAME}_BUILD_TREE_RELATIVE_INCLUDE_PATHS
141 ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
145 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
146 ${EXECUTABLE_OUTPUT_REL_PATH})
148 SET(${LIBRARY_NAME}_BUILD_TREE_RELATIVE_LIBRARY_PATHS
149 ${EXECUTABLE_OUTPUT_REL_PATH}/Debug
150 ${EXECUTABLE_OUTPUT_REL_PATH}/Release)
152 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_INCLUDE_PATHS
153 include/bb${BBTK_PACKAGE_NAME})
154 SET(${LIBRARY_NAME}_INSTALL_TREE_RELATIVE_LIBRARY_PATHS lib)
157 # - Set the version of your library
158 # SET YOUR LIB VERSION
159 #SET(${LIBRARY_NAME}_MAJOR_VERSION 1)
160 #SET(${LIBRARY_NAME}_MINOR_VERSION 0)
161 #SET(${LIBRARY_NAME}_BUILD_VERSION 0)
162 # REQUIRED BUILD FLAGS
163 #SET(${LIBRARY_NAME}_REQUIRED_C_FLAGS "")
164 #SET(${LIBRARY_NAME}_REQUIRED_CXX_FLAGS "")
165 #SET(${LIBRARY_NAME}_REQUIRED_LINK_FLAGS "")
166 # ADDITIONAL CONFIG FILE
167 # HERE WE USE ONE TO EXPORT testLib_EXPORTED_VALUE
169 SET(${LIBRARY_NAME}_HAS_ADDITIONAL_CONFIG_FILE FALSE)
170 #SET(${LIBRARY_NAME}_ADDITIONAL_CONFIG_FILE
171 # ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalBBTKConfig.cmake.in)
172 #SET(${LIBRARY_NAME}_ADDITIONAL_USE_FILE
173 # ${PROJECT_SOURCE_DIR}/kernel/cmake/AdditionalUseBBTK.cmake.in)
174 #-----------------------------------------------------------------------------
176 #-----------------------------------------------------------------------------
177 # Includes CMakeCreateFindPackage
178 INCLUDE(${CMakeCreateFindPackage_DIR}/CMakeCreateFindPackage.cmake)
179 CMAKE_CREATE_FIND_PACKAGE(${LIBRARY_NAME})
180 #-----------------------------------------------------------------------------
182 #----------------------------------------------------------------------------
187 #---------------------------------------------------------------------------
189 # On recent linux running SELinux :
190 # Have to change the context of the library created
191 # to be able to load it dynamically and avoid the error :
192 # "cannot restore segment prot after reloc: Permission denied"
194 # http://www.ittvis.com/services/techtip.asp?ttid=3092
196 FIND_PROGRAM(CHCON_EXECUTABLE
202 MARK_AS_ADVANCED(CHCON_EXECUTABLE)
205 # custom post_build command to change the context of the .so generated
207 TARGET bb${BBTK_PACKAGE_NAME}
209 COMMAND chcon -t texrel_shlib_t ${LIBRARY_OUTPUT_PATH}/libbb${BBTK_PACKAGE_NAME}.so
211 # custom post-install command to change the context of the .so installed
212 INSTALL(CODE "EXEC_PROGRAM(chcon ARGS -t texrel_shlib_t ${CMAKE_INSTALL_PREFIX}/lib/libbb${BBTK_PACKAGE_NAME}.so)")
213 ENDIF(CHCON_EXECUTABLE)
214 ENDIF(CHCON_LIBRARIES)
215 #----------------------------------------------------------------------------