-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCMakeLists.txt
96 lines (78 loc) · 3.13 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#####################
## cmake config below
cmake_minimum_required(VERSION 2.8.0 FATAL_ERROR)
set(CMAKE_CONFIGURATION_TYPES "Debug" CACHE INTERNAL "")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_BINARY_DIR}/bin")
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE INTERNAL "")
set(DATA_ROOT_PATH "${CMAKE_SOURCE_DIR}/data" CACHE INTERNAL "")
set(KERNEL_FILE "${CMAKE_SOURCE_DIR}/src/kernel.cl" CACHE INTERNAL "")
set(OPENCL_DEVICE "${CMAKE_SOURCE_DIR}/src/kernel.cl" CACHE INTERNAL "")
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
set(COMPUTECPP_PACKAGE_ROOT_DIR /usr/local/computecpp)
set(MODE "cpu" CACHE INTERNAL "")
########################
## solution config below
project(Parallel_ViBe)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:DEBUG>)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG>)
find_package(OpenCV 3.0 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_definitions(${OpenCV_DEFINITIONS})
mark_as_advanced(OPENCV_FOUND OpenCV_FOUND OpenCV_DIR)
add_definitions(-march=native)
add_definitions(-Wall)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(
"${CMAKE_SOURCE_DIR}/include"
"${CMAKE_BINARY_DIR}/include"
)
#############################
## TP1 projects configs below
include_directories("include")
configure_file(
"${CMAKE_SOURCE_DIR}/include/common.hpp.conf"
"${CMAKE_BINARY_DIR}/include/common.hpp"
)
if(${MODE} MATCHES "cpu")
message("Mode : CPU")
add_executable(${PROJECT_NAME}
"src/main.cpp"
"src/vibe_cpu.cpp"
"include/common.hpp"
)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})
elseif(${MODE} MATCHES "opencl")
message("Mode : OpenCL")
add_executable(${PROJECT_NAME}
"src/main.cpp"
"src/vibe_opencl.cpp"
"src/kernel.cl"
"include/common.hpp"
)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} OpenCL)
elseif(${MODE} MATCHES "sycl")
message("Mode : SYCL")
include(FindComputeCpp)
include_directories(${COMPUTECPP_INCLUDE_DIRECTORY})
add_executable(${PROJECT_NAME}
"src/main.cpp"
"src/vibe_sycl.cpp"
"include/common.hpp"
)
target_compile_options(${PROJECT_NAME} PUBLIC -std=c++11 -Wall)
add_sycl_to_target(${PROJECT_NAME} ${CMAKE_CURRENT_BINARY_DIR} "${CMAKE_SOURCE_DIR}/src/vibe_sycl.cpp")
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} OpenCL)
else(${MODE} MATCHES cpu)
message("Error Configuration : -DMODE=cpu|opencl|sycl")
endif(${MODE} MATCHES cpu)
# cmake ../Parallel_ViBe/ -DMODE=sycl -DOPENCL_DEVICE=cpu
# mode : cpu opencl sycl
# opencl_device : cpu gpu