diff --git a/openbr/CMakeLists.txt b/openbr/CMakeLists.txt index fa7b500..75e3593 100644 --- a/openbr/CMakeLists.txt +++ b/openbr/CMakeLists.txt @@ -9,11 +9,6 @@ set(SRC openbr.cpp aux_source_directory(core BR_CORE) include(plugins/plugins.cmake) -# CUDA shit -FIND_PACKAGE(CUDA REQUIRED) -SET(CUDA_SEPARABLE_COMPILATION ON) -SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -arch=sm_20;--compiler-options "-fPIC") -SET(CUDA_VERBOSE_BUILD ON) # Janus API option(BR_WITH_JANUS "Build IARPA Janus related applications." ON) @@ -34,13 +29,30 @@ if(NOT BR_EMBEDDED) install(FILES ${HEADERS} DESTINATION include/openbr/gui) endif() -cuda_add_library(openbr SHARED ${SRC} ${BR_CORE} ${BR_JANUS} ${BR_GUI} ${BR_ICONS} ${BR_THIRDPARTY_SRC} ${BR_RESOURCES} ${NATURALSTRINGCOMPARE_SRC} ${THIRDPARTY_RESOURCES}) +# add CUDA compiler flags if CUDA support is enabled +option(BR_WITH_CUDA "Build CUDA-accelerate plugins." OFF) +if (BR_WITH_CUDA) + FIND_PACKAGE(CUDA REQUIRED) + SET(CUDA_SEPARABLE_COMPILATION ON) + SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -arch=sm_20;--compiler-options "-fPIC") + + cuda_add_library(openbr SHARED ${SRC} ${BR_CORE} ${BR_JANUS} ${BR_GUI} ${BR_ICONS} ${BR_THIRDPARTY_SRC} ${BR_RESOURCES} ${NATURALSTRINGCOMPARE_SRC} ${THIRDPARTY_RESOURCES}) +else() + # otherwise, build with normal system + add_library(openbr SHARED ${SRC} ${BR_CORE} ${BR_JANUS} ${BR_GUI} ${BR_ICONS} ${BR_THIRDPARTY_SRC} ${BR_RESOURCES} ${NATURALSTRINGCOMPARE_SRC} ${THIRDPARTY_RESOURCES}) +endif() qt5_use_modules(openbr ${QT_DEPENDENCIES}) set_target_properties(openbr PROPERTIES DEFINE_SYMBOL BR_LIBRARY VERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}) -target_link_libraries(openbr ${BR_THIRDPARTY_LIBS} ${CUDA_LIBRARIES}) +target_link_libraries(openbr ${BR_THIRDPARTY_LIBS}) + +# include CUDA dependencies +if (BR_WITH_CUDA) + target_link_libraries(openbr ${CUDA_LIBRARIES}) +endif() + add_cppcheck(openbr) # Janus implementation diff --git a/openbr/plugins/plugins.cmake b/openbr/plugins/plugins.cmake index 094ab06..1e84821 100644 --- a/openbr/plugins/plugins.cmake +++ b/openbr/plugins/plugins.cmake @@ -12,6 +12,12 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${BR_THIRDPARTY_PLUGINS_DIR}) file(GLOB SUBFILES plugins/*) foreach(FILE ${SUBFILES}) if(IS_DIRECTORY ${FILE}) + # don't add the CUDA directory in plugins folder if we have disabled CUDA + get_filename_component(FILE_NAME ${FILE} NAME) + if (NOT ${BR_WITH_CUDA} AND ${FILE_NAME} STREQUAL "cuda") + continue() + endif() + set(BR_PLUGINS_DIR ${BR_PLUGINS_DIR} ${FILE}) endif() endforeach() @@ -31,7 +37,11 @@ endforeach() # Collect all source files except for excluded plugins foreach(DIR ${BR_PLUGINS_DIR} ${BR_THIRDPARTY_PLUGINS_DIR}) get_filename_component(DIR_NAME ${DIR} NAME) - file(GLOB PLUGINS ${DIR}/*.cpp ${DIR}/*.cu ${DIR}/*.h) + if (BR_WITH_CUDA) + file(GLOB PLUGINS ${DIR}/*.cpp ${DIR}/*.cu ${DIR}/*.h) + else() + file(GLOB PLUGINS ${DIR}/*.cpp ${DIR}/*.h) + endif() foreach(PLUGIN ${PLUGINS}) get_filename_component(PLUGIN_NAME ${PLUGIN} NAME) set(EXCLUDE FALSE)