-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
39 lines (31 loc) · 1.35 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
cmake_minimum_required(VERSION 3.0)
project(
fasthog
LANGUAGES CXX
)
set(HOG_INCLUDES
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/extern
)
set(CMAKE_CXX_STANDARD 17)
file(GLOB HOG_SOURCES "src/hog.cpp")
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
add_library(fasthog SHARED ${HOG_SOURCES})
else()
add_library(hog_sse4 OBJECT src/magnitude_orientation.cpp)
set_property(TARGET hog_sse4 PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_options(hog_sse4 PRIVATE -msse4 -DVEC_T=Vec2d)
target_include_directories(hog_sse4 PRIVATE ${HOG_INCLUDES})
add_library(hog_avx2 OBJECT src/magnitude_orientation.cpp)
set_property(TARGET hog_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_options(hog_avx2 PUBLIC -mavx2 -mfma -DVEC_T=Vec4d)
target_include_directories(hog_avx2 PRIVATE ${HOG_INCLUDES})
add_library(hog_avx512 OBJECT src/magnitude_orientation.cpp)
set_property(TARGET hog_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON)
target_compile_options(hog_avx512 PUBLIC -mavx512f -mfma -DVEC_T=Vec8d)
target_include_directories(hog_avx512 PRIVATE ${HOG_INCLUDES})
add_library(fasthog SHARED ${HOG_SOURCES} $<TARGET_OBJECTS:hog_sse4> $<TARGET_OBJECTS:hog_avx2> $<TARGET_OBJECTS:hog_avx512>)
endif()
target_include_directories(fasthog PUBLIC ${HOG_INCLUDES})
target_compile_options(fasthog PRIVATE)
install(TARGETS fasthog)