1 cmake_minimum_required(VERSION 2.8)
3 set(KCF_LIB_SRC kcf.cpp kcf.h complexmat.hpp)
5 SET(FFT "OpenCV" CACHE STRING "Select FFT implementation")
6 SET_PROPERTY(CACHE FFT PROPERTY STRINGS OpenCV OpenCV_cuFFT fftw cuFFTW)
7 MESSAGE(STATUS "FFT implementation: ${FFT}")
9 option(OPENMP "Use OpenMP library. Works with FFTW and OpenCV implementation." OFF)
10 option(ASYNC "Works only if OPENCV_CUFFT is not ON. Will enable C++ async directive." OFF)
11 option(PROFILING "Enable profiling using perf_event_open together with libpfm4. " OFF)
14 add_definitions(-DPROFILING )
15 MESSAGE(STATUS "Profiling mode")
20 IF(FFT STREQUAL "OpenCV")
21 ELSEIF(FFT STREQUAL "OpenCV_cuFFT")
22 add_definitions(-DOPENCV_CUFFT)
24 ELSEIF(FFT STREQUAL "fftw")
25 add_definitions(-DFFTW)
26 ELSEIF(FFT STREQUAL "cuFFTW")
27 add_definitions(-DFFTW -DCUFFTW)
30 MESSAGE(FATAL_ERROR "Invalid FFT implementation selected")
33 IF(ASYNC AND NOT OPENMP)
34 add_definitions(-DASYNC)
35 MESSAGE(STATUS "ASYNC")
38 FIND_PACKAGE( OpenCV REQUIRED )
41 find_package(CUDA REQUIRED)
43 if (NOT ${OpenCV_USE_CUFFT})
44 message(SEND_ERROR "OpenCV was not built with cuFFT")
47 include_directories ( ${CUDA_INCLUDE_DIRS} )
48 set(CUDA_SEPARABLE_COMPILATION ON)
49 set(CUDA_PROPAGATE_HOST_FLAGS OFF)
50 set(CUDA_HOST_COMPILER /usr/bin/g++)
51 list( APPEND CUDA_NVCC_FLAGS "-O3 --gpu-architecture compute_62 -std=c++11")
52 find_cuda_helper_libs(cufftw)
55 add_subdirectory(piotr_fhog)
58 add_library(kcf STATIC ${KCF_LIB_SRC})
59 target_link_libraries(kcf fhog cndata ${OpenCV_LIBS})
60 set_target_properties(kcf PROPERTIES VERSION 1.0.0 SOVERSION 1)
62 IF(FFT STREQUAL "fftw")
63 target_link_libraries(kcf fftw3f)
65 target_link_libraries(kcf fftw3_omp)
69 IF(FFT STREQUAL "cuFFTW")
70 target_link_libraries(kcf ${CUDA_cufft_LIBRARY} ${CUDA_cufftw_LIBRARY})
74 target_link_libraries(kcf pfm)