# copy files from source directory to build directory add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/roc COMMAND cmake -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/roc WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) If(CMAKE_SYSTEM_NAME MATCHES Darwin) # Unpack the dabc tarball and patch the needed files Add_Custom_Command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/roc/dabc/Makefile COMMAND tar -xzvf dabcroc11.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/roc/dabc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roc/ ) Add_Custom_Command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/roc/patch_okay COMMAND patch -p0 < roclib_macos.patch COMMAND touch patch_okay WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/roc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roc/dabc/Makefile ) Else(CMAKE_SYSTEM_NAME MATCHES Darwin) Add_Custom_Command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/roc/patch_okay COMMAND touch patch_okay WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/roc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roc ) EndIf(CMAKE_SYSTEM_NAME MATCHES Darwin) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libRoc.so COMMAND LD_LIBRARY_PATH=${ROOT_LIBRARY_DIR} ROOTSYS=${ROOTSYS} make roclib WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/roc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roc/patch_okay ) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libDabcBase.so COMMAND make dabccore WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/roc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libRoc.so ) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libDabcRoc.so ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libDabcMbs.so ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libRocDict.rootmap COMMAND LD_LIBRARY_PATH=${ROOT_LIBRARY_DIR} ROOTSYS=${ROOTSYS} make rocdict WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/roc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libDabcBase.so ) add_custom_command(OUTPUT ${LIBRARY_OUTPUT_PATH}/libDabcRoc.so ${LIBRARY_OUTPUT_PATH}/libDabcBase.so ${LIBRARY_OUTPUT_PATH}/libRoc.so ${LIBRARY_OUTPUT_PATH}/libDabcMbs.so ${LIBRARY_OUTPUT_PATH}/libRocDict.rootmap COMMAND cmake -E copy_if_different lib/libDabcRoc.so ${LIBRARY_OUTPUT_PATH} COMMAND cmake -E copy_if_different lib/libRoc.so ${LIBRARY_OUTPUT_PATH} COMMAND cmake -E copy_if_different lib/libDabcBase.so ${LIBRARY_OUTPUT_PATH} COMMAND cmake -E copy_if_different lib/libDabcMbs.so ${LIBRARY_OUTPUT_PATH} COMMAND cmake -E copy_if_different lib/libRocDict.rootmap ${LIBRARY_OUTPUT_PATH} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/roc DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libRoc.so ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libDabcBase.so ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libDabcMbs.so ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libDabcRoc.so ${CMAKE_CURRENT_BINARY_DIR}/roc/lib/libRocDict.rootmap ) # create a target which will always be build and does actually nothing. The target is only # needed that the dependencies are build, f they are not up to date. If everything is up to # dte nothing is done. This target depends on the libAfterImage.a in the library directory of the # build directory. add_custom_target(RocLib DEPENDS ${LIBRARY_OUTPUT_PATH}/libDabcRoc.so DEPENDS ${LIBRARY_OUTPUT_PATH}/libDabcBase.so DEPENDS ${LIBRARY_OUTPUT_PATH}/libDabcMbs.so DEPENDS ${LIBRARY_OUTPUT_PATH}/libRoc.so DEPENDS ${LIBRARY_OUTPUT_PATH}/libRocDict.rootmap ) # import libDabcRoc.so which is not in the scope of CMake. This step makes it possible that # make clean will remove the library add_library(DabcRoc SHARED IMPORTED) add_library(Roc SHARED IMPORTED) add_library(DabcBase SHARED IMPORTED) add_library(DabcMbs SHARED IMPORTED) #INSTALL(FILES ${LIBRARY_OUTPUT_PATH}/libAfterImage.a DESTINATION ${LIB_INSTALL_DIR})