forked from andreimaximov/uthread
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
93 lines (76 loc) · 2.5 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
CMAKE_MINIMUM_REQUIRED(VERSION 3.2 FATAL_ERROR)
INCLUDE("cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.22.1.tar.gz"
SHA1 "3d87bd3c7a54126cb0822a59d3789970c000ab19"
)
PROJECT(uthread VERSION 0.1 LANGUAGES C CXX ASM)
SET(CMAKE_C_STANDARD 11)
SET(CMAKE_CXX_STANDARD 14)
HUNTER_ADD_PACKAGE(benchmark)
HUNTER_ADD_PACKAGE(gflags)
HUNTER_ADD_PACKAGE(glog)
HUNTER_ADD_PACKAGE(GTest)
HUNTER_ADD_PACKAGE(Libevent)
FIND_PACKAGE(benchmark CONFIG REQUIRED)
FIND_PACKAGE(gflags CONFIG REQUIRED)
FIND_PACKAGE(glog CONFIG REQUIRED)
FIND_PACKAGE(GTest CONFIG REQUIRED)
FIND_PACKAGE(Libevent CONFIG REQUIRED)
FIND_PACKAGE(Threads REQUIRED)
FILE(GLOB_RECURSE ASM ${CMAKE_CURRENT_SOURCE_DIR}/src/*.s)
FILE(GLOB_RECURSE C ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c)
FILE(GLOB_RECURSE CPP ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
FILE(GLOB_RECURSE TESTS ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp)
FILE(GLOB_RECURSE BENCH ${CMAKE_CURRENT_SOURCE_DIR}/bench/*.cpp)
FILE(GLOB_RECURSE EXAMPLES ${CMAKE_CURRENT_SOURCE_DIR}/examples/*.cpp)
ADD_LIBRARY(uthread_lib ${ASM} ${C} ${CPP})
ADD_EXECUTABLE(uthread_tests ${TESTS})
ADD_EXECUTABLE(uthread_bench ${BENCH})
IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
TARGET_COMPILE_OPTIONS(uthread_lib PRIVATE -Wall)
TARGET_COMPILE_OPTIONS(uthread_tests PRIVATE -Wall)
TARGET_COMPILE_OPTIONS(uthread_bench PRIVATE -Wall)
ENDIF()
TARGET_INCLUDE_DIRECTORIES(uthread_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
TARGET_LINK_LIBRARIES(uthread_lib PRIVATE
${CMAKE_THREAD_LIBS_INIT}
glog::glog
Libevent::event_core
)
TARGET_LINK_LIBRARIES(uthread_tests PRIVATE
uthread_lib
GTest::main
GTest::gtest
)
TARGET_LINK_LIBRARIES(uthread_bench PRIVATE
uthread_lib
benchmark::benchmark
)
FOREACH(EXAMPLE_CPP ${EXAMPLES})
GET_FILENAME_COMPONENT(EXAMPLE_TARGET ${EXAMPLE_CPP} NAME_WE)
ADD_EXECUTABLE(${EXAMPLE_TARGET} ${EXAMPLE_CPP})
TARGET_LINK_LIBRARIES(${EXAMPLE_TARGET} PRIVATE
uthread_lib
gflags
glog::glog
)
IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
TARGET_COMPILE_OPTIONS(${EXAMPLE_TARGET} PRIVATE -Wall)
ENDIF()
ENDFOREACH(EXAMPLE_CPP)
ADD_CUSTOM_TARGET(
tests
${CMAKE_CURRENT_BINARY_DIR}/uthread_tests
DEPENDS uthread_tests
)
ADD_CUSTOM_TARGET(
bench
${CMAKE_CURRENT_BINARY_DIR}/uthread_bench
DEPENDS uthread_bench
)
ADD_CUSTOM_TARGET(
lint
./linter.sh
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)