From c86c6a028c8110988b2cbec736d0c9fdaf651703 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Wed, 25 Jan 2012 13:12:11 +0000 Subject: [PATCH] Updating opencv module definition in cmake (continued) --- cmake/OpenCVModule.cmake | 41 +++++++++++- modules/core/CMakeLists.txt | 129 +----------------------------------- 2 files changed, 41 insertions(+), 129 deletions(-) diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index 27ef9e8eea..e4126c28ec 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -213,9 +213,48 @@ macro(define_opencv_moduleEx _name _visibility) list(APPEND lib_hdrs ${lib_hdrs_detail}) - add_library(${the_target} ${OPENCV_${mname}_MODULE_TYPE} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs}) + if(HAVE_CUDA AND EXISTS "src/cuda/") + file(GLOB lib_cuda "src/cuda/*.cu") + source_group("Cuda" FILES "${lib_cuda}") + + include_directories(${CUDA_INCLUDE_DIRS}) + include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/src") + include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/src/cuda") + + set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -gencode arch=compute_10,code=sm_10 + -gencode arch=compute_11,code=sm_11 + -gencode arch=compute_12,code=sm_12 + -gencode arch=compute_13,code=sm_13 + -gencode arch=compute_20,code=sm_20 + -gencode arch=compute_20,code=sm_21) + + if(UNIX OR APPLE) + set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fPIC) + endif() + if(APPLE) + set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fno-finite-math-only) + endif() + + #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-keep") + #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;/EHsc-;") + + CUDA_COMPILE(cuda_objs ${lib_cuda}) + else() + set(lib_cuda "") + set(cuda_objs "") + endif() + + add_library(${the_target} ${OPENCV_${mname}_MODULE_TYPE} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs} ${lib_cuda} ${cuda_objs}) target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) + if(HAVE_CUDA AND EXISTS "src/cuda/") + target_link_libraries(${the_target} ${CUDA_LIBRARIES}) + + unset(CUDA_npp_LIBRARY CACHE) + find_cuda_helper_libs(npp) + target_link_libraries(${the_target} ${CUDA_npp_LIBRARY}) + endif() + if(visibility STREQUAL "public") opencv_module_register(${the_target}) endif() diff --git a/modules/core/CMakeLists.txt b/modules/core/CMakeLists.txt index edd7a17277..99d477c62d 100644 --- a/modules/core/CMakeLists.txt +++ b/modules/core/CMakeLists.txt @@ -4,131 +4,4 @@ else() include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../3rdparty/zlib") endif() -#define_opencv_module(core ${ZLIB_LIBRARY}) - -set(name "core") - -project(opencv_${name}) - -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include" - "${CMAKE_CURRENT_SOURCE_DIR}/src" - "${CMAKE_CURRENT_BINARY_DIR}") - -file(GLOB lib_srcs "src/*.cpp") -file(GLOB lib_int_hdrs "src/*.h*") -file(GLOB lib_hdrs "include/opencv2/${name}/*.h*") -file(GLOB lib_hdrs_detail "include/opencv2/${name}/detail/*.h*") - -if(COMMAND get_module_external_sources) - get_module_external_sources(${name}) -endif() - -source_group("Src" FILES ${lib_srcs} ${lib_int_hdrs}) -source_group("Include" FILES ${lib_hdrs}) -source_group("Include\\detail" FILES ${lib_hdrs_detail}) -list(APPEND lib_hdrs ${lib_hdrs_detail}) - -if (HAVE_CUDA) - file(GLOB lib_cuda "src/cuda/*.cu") - source_group("Cuda" FILES "${lib_cuda}") - - include_directories(${CUDA_INCLUDE_DIRS}) - include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/src") - include_directories("${OpenCV_SOURCE_DIR}/modules/gpu/src/cuda") - - set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -gencode arch=compute_10,code=sm_10 - -gencode arch=compute_11,code=sm_11 - -gencode arch=compute_12,code=sm_12 - -gencode arch=compute_13,code=sm_13 - -gencode arch=compute_20,code=sm_20 - -gencode arch=compute_20,code=sm_21) - - if (UNIX OR APPLE) - set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;-fPIC;") - #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "-fPIC") - endif() - - #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-keep") - #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;/EHsc-;") - - if (APPLE) - set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;-fno-finite-math-only;") - endif() - - CUDA_COMPILE(cuda_objs ${lib_cuda}) - #CUDA_BUILD_CLEAN_TARGET() -endif() - -set(the_target "opencv_${name}") -add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs} ${lib_cuda} ${cuda_objs}) - -# For dynamic link numbering convenions -if(NOT ANDROID) - # Android SDK build scripts can include only .so files into final .apk - # As result we should not set version properties for Android - set_target_properties(${the_target} PROPERTIES - VERSION ${OPENCV_VERSION} - SOVERSION ${OPENCV_SOVERSION} - ) -endif() - -set_target_properties(${the_target} PROPERTIES OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}" ) - -if(ENABLE_SOLUTION_FOLDERS) - set_target_properties(${the_target} PROPERTIES FOLDER "modules") -endif() - -if (BUILD_SHARED_LIBS) - if(MSVC) - set_target_properties(${the_target} PROPERTIES DEFINE_SYMBOL CVAPI_EXPORTS) - else() - add_definitions(-DCVAPI_EXPORTS) - endif() -endif() - -# Additional target properties -set_target_properties(${the_target} PROPERTIES - DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" - ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} - RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} - INSTALL_NAME_DIR lib - ) - -# Add the required libraries for linking: -target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ZLIB_LIBRARY}) - -if (HAVE_CUDA) - target_link_libraries(${the_target} ${CUDA_LIBRARIES}) - - unset(CUDA_npp_LIBRARY CACHE) - find_cuda_helper_libs(npp) - target_link_libraries(${the_target} ${CUDA_npp_LIBRARY}) -endif() - -if(MSVC) - if(CMAKE_CROSSCOMPILING) - set_target_properties(${the_target} PROPERTIES - LINK_FLAGS "/NODEFAULTLIB:secchk" - ) - endif() - set_target_properties(${the_target} PROPERTIES - LINK_FLAGS "/NODEFAULTLIB:libc /DEBUG" - ) -endif() - -# Dependencies of this target: -add_dependencies(${the_target} ${ZLIB_LIBRARY}) - -install(TARGETS ${the_target} - RUNTIME DESTINATION bin COMPONENT main - LIBRARY DESTINATION ${OPENCV_LIB_INSTALL_PATH} COMPONENT main - ARCHIVE DESTINATION ${OPENCV_LIB_INSTALL_PATH} COMPONENT main) - -install(FILES ${lib_hdrs} - DESTINATION ${OPENCV_INCLUDE_PREFIX}/opencv2/${name} - COMPONENT main) - -add_opencv_precompiled_headers(${the_target}) - -define_opencv_test(${name}) -define_opencv_perf_test(${name}) +define_opencv_module(core ${ZLIB_LIBRARY})