forked from jbaldwin/liblifthttp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
107 lines (91 loc) · 3.87 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
97
98
99
100
101
102
103
104
105
106
107
cmake_minimum_required(VERSION 3.0.2)
project(lifthttp CXX)
# Create a Debug/lib or Release/lib output directory.
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/lib)
find_program(CLANG_TIDY_BIN NAMES "clang-tidy" DOC "clang-tidy binary location")
if(CLANG_TIDY_BIN)
set(CLANG_TIDY_COMMAND "${CLANG_TIDY_BIN}" "-checks=*,-cppcoreguidelines-pro-type-union-access,-hicpp-signed-bitwise,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-google-runtime-int,-hicpp-vararg,-cppcoreguidelines-pro-type-vararg,-cert-err58-cpp,-clang-analyzer-alpha.*,-fuchsia-statically-constructed-objects,-fuchsia-overloaded-operator,-fuchsia-trailing-return,-fuchsia-default-arguments,-readability-else-after-return,-google-readability-namespace-comments,-llvm-namespace-comment,-hicpp-no-array-decay,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-google-default-arguments,-llvm-header-guard,-google-runtime-references,-misc-macro-parentheses,-bugprone-macro-parentheses,-bugprone-unused-return-value" "-header-filter=.*")
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(NOT DEFINED CURL_INCLUDE)
set(CURL_INCLUDE "" CACHE PATH "User specified libcurl include directory.")
endif()
if(NOT DEFINED LIBSSL)
set(LIBSSL "" CACHE FILEPATH "User specified libssl static location.")
endif()
if(NOT DEFINED LIBCRYPTO)
set(LIBCRYPTO "" CACHE FILEPATH "User specificed libcrypto static location.")
endif()
if(NOT DEFINED LIBCURL)
set(LIBCURL "-lcurl" CACHE FILEPATH "User specified libcurl static location.")
endif()
if(NOT DEFINED LIBCARES)
set(LIBCARES "" CACHE FILEPATH "User specified libcares static location.")
endif()
message("${PROJECT_NAME} CURL_INCLUDE = ${CURL_INCLUDE}")
message("${PROJECT_NAME} LIBSSL = ${LIBSSL}")
message("${PROJECT_NAME} LIBCRYPTO = ${LIBCRYPTO}")
message("${PROJECT_NAME} LIBCURL = ${LIBCURL}")
message("${PROJECT_NAME} LIBCARES = ${LIBCARES}")
set(LIFT_SYSTEM_LIBRARY_DEPENDENCIES
uv
pthread
z
dl
stdc++fs
)
set(LIFT_CURL_LIBRARY_DEPENDENCIES
"-Wl,--start-group ${LIBSSL} ${LIBCRYPTO} ${LIBCURL} ${LIBCARES} -Wl,--end-group"
)
set(SOURCE_FILES
inc/lift/Escape.h src/Escape.cpp
inc/lift/EventLoop.h inc/lift/EventLoop.tcc src/EventLoop.cpp
inc/lift/Header.h src/Header.cpp
inc/lift/Lift.h src/Lift.cpp
inc/lift/Http.h src/Http.cpp
inc/lift/QueryBuilder.h src/QueryBuilder.cpp
inc/lift/Request.h src/Request.cpp
inc/lift/RequestHandle.h src/RequestHandle.cpp
inc/lift/RequestPool.h src/RequestPool.cpp
inc/lift/RequestStatus.h src/RequestStatus.cpp
)
add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES})
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${CURL_INCLUDE})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/inc)
target_link_libraries(${PROJECT_NAME} PRIVATE
${LIFT_CURL_LIBRARY_DEPENDENCIES}
${LIFT_SYSTEM_LIBRARY_DEPENDENCIES}
)
if(UNIX)
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Werror -Weffc++ -Wpedantic -pedantic-errors)
endif()
if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
target_compile_options(
${PROJECT_NAME} PRIVATE
-Wno-unknown-pragmas
)
endif()
if(CLANG_TIDY_BIN)
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}")
endif()
if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
target_compile_options(
${PROJECT_NAME} PRIVATE
-Weverything
-Wno-c++98-compat
-Wno-c++98-compat-pedantic
-Wno-padded
-Wno-weak-vtables
-Wno-gnu-anonymous-struct
-Wno-nested-anon-types
-Wno-exit-time-destructors
-Wno-global-constructors
-Wno-error=deprecated-declarations
-Wno-disabled-macro-expansion
-Wno-covered-switch-default
-fcolor-diagnostics
-ferror-limit=128
)
endif()
include(examples/CMakeLists.txt)