#---------------------------------------------------------------------------- # BINARY DIR MUST BE IN INCLUDE DIRS # TO FIND .h OF AUTOMATICALLY GENERATED FILES (e.g. FROM XML) INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ) # SOURCES DIR MUST ALSO BE IN INCLUDE DIRS FOR FILES COMPILED IN BINARY DIR # WHICH NEED TO INCLUDE OTHER FILES OF THE PACKAGE INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # CREATES bb${BBTK_PACKAGE_NAME}Package.h CONFIGURE_FILE( ${BBTK_DIR}/bbPackage.h.in ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.h @ONLY IMMEDIATE ) INSTALL_FILES( /include/bb${BBTK_PACKAGE_NAME} FILES bb${BBTK_PACKAGE_NAME}Package.h) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # CREATES bb${BBTK_PACKAGE_NAME}Package.cxx CONFIGURE_FILE( ${BBTK_DIR}/bbPackage.cxx.in ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.cxx @ONLY IMMEDIATE ) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- SET_SOURCE_FILES_PROPERTIES( ${CMAKE_CURRENT_BINARY_DIR}/bb${BBTK_PACKAGE_NAME}Package.cxx PROPERTIES GENERATED ON) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- IF(BBTK_PACKAGE_COMPILE_ALL_CXX) FILE(GLOB BBTK_PACKAGE_CXX_SOURCES "." "*.cxx") FILE(GLOB BBTK_PACKAGE_H_SOURCES "." "*.h") ENDIF(BBTK_PACKAGE_COMPILE_ALL_CXX) SET(BBTK_PACKAGE_CXX_SOURCES ${BBTK_PACKAGE_CXX_SOURCES} #${CMAKE_CURRENT_BINARY_DIR_NAME}/ bb${BBTK_PACKAGE_NAME}Package ) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # bbfy #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- IF(BBTK_PACKAGE_COMPILE_ALL_XML) FILE(GLOB BBTK_PACKAGE_XML_SOURCES "." "*.xml") ENDIF(BBTK_PACKAGE_COMPILE_ALL_XML) #---------------------------------------------------------------------------- FOREACH(xmlfile ${BBTK_PACKAGE_XML_SOURCES}) GET_FILENAME_COMPONENT(filename "${xmlfile}" NAME_WE) # IF(BBFY_DEPENDENCY) # SET(BBFY_DEPENDENCY_STR ${bbfy_EXECUTABLE}) # ENDIF(BBFY_DEPENDENCY) SET(BBFY_CXX_OUT ${CMAKE_CURRENT_BINARY_DIR}/${filename}.cxx) ADD_CUSTOM_COMMAND( OUTPUT ${BBFY_CXX_OUT} COMMAND ${BBTK_BBFY} ${xmlfile} ${CMAKE_CURRENT_BINARY_DIR}/ -q DEPENDS ${xmlfile} # LG : REMOVE AUTOMATIC DEPEDENCY ON bbfy BECAUSE CAUSED ALWAYS REBUILD xml BOXES WHEN bbtk CHANGED HENCE bbfy CHANGED ${BBFY_DEPENDENCY_STR} #${BBTK_BBFY} ) SET_SOURCE_FILES_PROPERTIES( ${BBFY_CXX_OUT} PROPERTIES GENERATED ON) IF(NOT BBTK_PACKAGE_CXX_SOURCES MATCHES "${filename}") SET(BBTK_PACKAGE_CXX_SOURCES ${BBTK_PACKAGE_CXX_SOURCES} ${filename} ) ENDIF(NOT BBTK_PACKAGE_CXX_SOURCES MATCHES "${filename}") INSTALL_FILES(/include/bb${BBTK_PACKAGE_NAME} FILES ${filename}.h) ENDFOREACH(xmlfile) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # CREATES LIBRARY ADD_LIBRARY(bb${BBTK_PACKAGE_NAME} SHARED ${BBTK_PACKAGE_CXX_SOURCES} ${BBTK_PACKAGE_H_SOURCES} ) TARGET_LINK_LIBRARIES(bb${BBTK_PACKAGE_NAME} bbtk ${BBTK_PACKAGE_LIBS} ) #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # INSTALLS LIBRARY # NOW USES THE InstallLibrary.cmake SET( LIBRARY_NAME bb${BBTK_PACKAGE_NAME} ) # SET THE LIB VERSION SET(${LIBRARY_NAME}_MAJOR_VERSION ${BBTK_PACKAGE_MAJOR_VERSION}) SET(${LIBRARY_NAME}_MINOR_VERSION ${BBTK_PACKAGE_MINOR_VERSION}) SET(${LIBRARY_NAME}_BUILD_VERSION ${BBTK_PACKAGE_BUILD_VERSION}) # #SET(INSTALL_LIBRARY_PATH ../cmake) # Include the file 'InstallLibrary.cmake' which does the clean install job #INCLUDE(${INSTALL_LIBRARY_PATH}/InstallLibrary.cmake) # OLD VERSION : # DEPRECATED SYNTAX BUT WHICH WORKS !! INSTALL_FILES(/include/bb${BBTK_PACKAGE_NAME} "\\.h$") #INSTALL(FILES "$.h" DESTINATION include/${BBTK_PACKAGE_NAME}) INSTALL(TARGETS bb${BBTK_PACKAGE_NAME} DESTINATION lib) # INSTALL_TARGETS(/lib bb${BBTK_PACKAGE_NAME}) #---------------------------------------------------------------------------- #--------------------------------------------------------------------------- IF(CHCON_LIBRARIES) # On recent linux running SELinux : # Have to change the context of the library created # to be able to load it dynamically and avoid the error : # "cannot restore segment prot after reloc: Permission denied" # see e.g. # http://www.ittvis.com/services/techtip.asp?ttid=3092 # Try to find chcon FIND_PROGRAM(CHCON_EXECUTABLE NAMES chcon PATHS /usr/bin /usr/local/bin ) MARK_AS_ADVANCED(CHCON_EXECUTABLE) IF(CHCON_EXECUTABLE) # chcon found # custom post_build command to change the context of the .so generated ADD_CUSTOM_COMMAND( TARGET bb${BBTK_PACKAGE_NAME} POST_BUILD COMMAND chcon -t texrel_shlib_t ${LIBRARY_OUTPUT_PATH}/libbb${BBTK_PACKAGE_NAME}.so ) # custom post-install command to change the context of the .so installed INSTALL(CODE "EXEC_PROGRAM(chcon ARGS -t texrel_shlib_t ${CMAKE_INSTALL_PREFIX}/lib/libbb${BBTK_PACKAGE_NAME}.so)") ENDIF(CHCON_EXECUTABLE) ENDIF(CHCON_LIBRARIES) #----------------------------------------------------------------------------