-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
64 lines (52 loc) · 1.8 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
cmake_minimum_required(VERSION 3.8)
project(hoshizora)
execute_process(COMMAND
sh -c "which clang++ | tr -d '\\n'"
OUTPUT_VARIABLE CMAKE_CXX_COMPILER)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2 -mlzcnt -g -stdlib=libc++")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -DSPDLOG_DEBUG_ON")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
execute_process(COMMAND
sh -c "python3 -V 2>&1 | grep -oP '\\d\\.\\d(?=\\.\\d)' | tr -d '\\n'"
OUTPUT_VARIABLE PYTHON_VERSION)
set(PYBIND11_PYTHON_VERSION ${PYTHON_VERSION})
set(PYTHON_EXECUTABLE python${PYTHON_VERSION})
file(GLOB SOURCES src/hoshizora/**/*.h src/hoshizora/**/**/*.h)
include_directories(src)
include_directories(SYSTEM
src/spdlog/include
src/pcm)
if (UNIX AND NOT APPLE)
# linux
## pcm
set(PCM_SOURCES
src/pcm/cpucounters.cpp
src/pcm/msr.cpp
src/pcm/pci.cpp
src/pcm/client_bw.cpp)
set(LIB_PCM pcm)
add_library(${LIB_PCM} STATIC ${PCM_SOURCES})
set_property(TARGET ${LIB_PCM} PROPERTY POSITION_INDEPENDENT_CODE ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -D_GLIBCXX_PARALLEL")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSUPPORT_NUMA -fopenmp -D_GLIBCXX_PARALLEL")
else ()
# macos
endif ()
# dependencies
## pybind11
add_subdirectory(src/pybind11)
## FastPFor
#add_subdirectory(src/FastPFor)
# cli
set(HOSHIZORA_CLI hoshizora-cli)
add_executable(${HOSHIZORA_CLI} ${SOURCES} src/hoshizora/cli.cpp)
#target_link_libraries(${SHOSHIZORA_CLI} FastPFor)
if (UNIX AND NOT APPLE)
target_link_libraries(${HOSHIZORA_CLI} numa pthread ${LIB_PCM})
endif()
# pybind
set(HOSHIZORA hoshizora)
pybind11_add_module(${HOSHIZORA} SHARED ${SOURCES} src/hoshizora/pybind.cpp)
target_link_libraries(${HOSHIZORA} PRIVATE ${LIB_PCM})
#target_link_libraries(${HOSHIZORA} PRIVATE numa)