-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCMakeLists.txt
203 lines (162 loc) · 6.49 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
cmake_minimum_required(VERSION 3.12.0)
project(onescript)
#default build debug
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif(NOT CMAKE_BUILD_TYPE)
SET(OUTDIR ${CMAKE_CURRENT_BINARY_DIR})
SET (PRODUCT_NAME "nvtstudio")
SET (PRODUCT_VERSION "0.1.1")
SET(INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
SET(DATA_DIR "${CMAKE_INSTALL_PREFIX}/var/${PRODUCT_NAME}")
SET(ECT_DIR "${CMAKE_INSTALL_PREFIX}/etc/${PRODUCT_NAME}")
SET(BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin/")
include (FindPkgConfig)
if (NOT PKG_CONFIG_FOUND)
message(FATAL_ERROR "pkg-config executable not found. Aborting.")
endif (NOT PKG_CONFIG_FOUND)
find_program(KRB5 krb5-config)
if(KRB5-NOTFOUND)
message(FATAL_ERROR "krb5-config executable not found. Aborting. you need install libkrb5-dev")
endif(KRB5-NOTFOUND)
execute_process (COMMAND krb5-config --libs gssapi
OUTPUT_VARIABLE KRB5_LDFLAGS
OUTPUT_STRIP_TRAILING_WHITESPACE)
IF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
execute_process (COMMAND xcrun --sdk macosx --show-sdk-path
OUTPUT_VARIABLE MACSDK
OUTPUT_STRIP_TRAILING_WHITESPACE)
SET(ENV{SDKROOT} "${MACSDK}")
message("build winrm.a on macos")
execute_process (COMMAND go build -buildmode=c-archive -o ${OUTDIR}/winrm.a ./winrm.go
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/winrm
OUTPUT_VARIABLE WINRM_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE)
ELSE()
message("build winrm.a on linux")
execute_process (COMMAND go build -buildmode=c-archive -o ${OUTDIR}/winrm.a ./winrm.go
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/winrm
OUTPUT_VARIABLE WINRM_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE)
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
message("${WINRM_RESULT}")
find_package(Threads REQUIRED)
#/openssl@1.1/1.1.1w/
pkg_check_modules (OPENSSL REQUIRED openssl>=3.0.0)
pkg_check_modules (ZLIB REQUIRED zlib>=1.2.11)
pkg_check_modules (SQLITE REQUIRED sqlite3>=3.0.0)
pkg_check_modules (SSH REQUIRED libssh>=0.9.0)
pkg_check_modules (RE2 re2)
find_library (SNMP netsnmp)
execute_process (COMMAND net-snmp-config --libs
OUTPUT_VARIABLE SNMP_LDFLAGS
OUTPUT_STRIP_TRAILING_WHITESPACE)
#https://github.com/google/brotli
pkg_check_modules (BROTLI REQUIRED libbrotlidec>=1.0.6)
if(NOT OPENSSL_FOUND)
message(FATAL_ERROR "openssl >=3.0.0 not found")
endif(NOT OPENSSL_FOUND)
if(NOT BROTLI_FOUND)
message(FATAL_ERROR "libbrotlidec>=1.0.9 not found")
endif(NOT BROTLI_FOUND)
if(NOT ZLIB_FOUND)
message(FATAL_ERROR "zlib>=1.1.0 not found")
endif(NOT ZLIB_FOUND)
if (NOT SNMP_LDFLAGS)
message(FATAL_ERROR "netsnmp>=5.8.0 not found")
endif(NOT SNMP_LDFLAGS)
message("${OPENSSL_LDFLAGS}")
message("${BROTLI_LDFLAGS}")
message("${ZLIB_LDFLAGS}")
message("${SQLITE_LDFLAGS}")
message("${SNMP_LDFLAGS}")
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}
${ZLIB_INCLUDE_DIRS}
${BROTLI_INCLUDE_DIRS}
${OPENSSL_INCLUDE_DIRS}
${SNMP_INCLUDE_DIRS}
${SSH_INCLUDE_DIRS}
${RE2_INCLUDE_DIRS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -std=c++17 -Werror -Wno-error=deprecated-declarations")
add_definitions (-DPRODUCT_NAME="${PRODUCT_NAME}")
add_definitions (-DPRODUCT_VERSION="${PRODUCT_VERSION}")
add_subdirectory(engine)
add_subdirectory(thirdpart/masscan)
#SET(MAC_STATIC "TRUE")
if (MAC_STATIC)
SET(STATIC_LIBS_DIR "${CMAKE_BINARY_DIR}/static")
set(SSH_LDFLAGS "${STATIC_LIBS_DIR}/libssh.a")
set(SQLITE_LDFLAGS "${STATIC_LIBS_DIR}/libsqlite3.a")
set(ZLIB_LDFLAGS "${STATIC_LIBS_DIR}/libz.a")
set(SNMP_LDFLAGS "${STATIC_LIBS_DIR}/libnetsnmp.a")
set(OPENSSL_LDFLAGS "${STATIC_LIBS_DIR}/libssl.a;${STATIC_LIBS_DIR}/libcrypto.a")
set(BROTLI_LDFLAGS "${STATIC_LIBS_DIR}/libbrotlidec-static.a;${STATIC_LIBS_DIR}/libbrotlicommon-static.a")
endif(MAC_STATIC)
set(WINRM_LDFLAGS "${CMAKE_BINARY_DIR}/winrm.a")
IF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(EXTENAL_LDFLAGS "-framework CoreFoundation -framework Security")
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_executable(nvtengine
nvtengine.cc
taskmgr.cc
modules/module.cc
modules/openvas/api/snmpi.cc
vfs/vfsreader.c
manger.cc
)
add_executable(interpreter
Interpreter.cc
modules/module.cc
modules/openvas/api/snmpi.cc
)
message(${CMAKE_CURRENT_SOURCE_DIR})
add_custom_command(
TARGET nvtengine
COMMAND sed "-e" "'s|SCRIPT_DIR|${DATA_DIR}/nvtscript|g'" "-e" "'s|APP_DATA_DIR|${DATA_DIR}|g'" "-e" "'s|BUILTIN_SCRIPT|${DATA_DIR}/script|g'" "${CMAKE_BINARY_DIR}/../etc/nvtengine_in.conf" > "${CMAKE_BINARY_DIR}/../etc/nvtengine_src.conf"
)
target_link_libraries( nvtengine
engine
masscan
-ldl
${WINRM_LDFLAGS}
"${KRB5_LDFLAGS}"
"-L${CMAKE_BINARY_DIR}"
${EXTENAL_LDFLAGS}
${OPENSSL_LDFLAGS}
${ZLIB_LDFLAGS}
${BROTLI_LDFLAGS}
${SQLITE_LDFLAGS}
${CMAKE_THREAD_LIBS_INIT}
${SSH_LDFLAGS}
${SNMP_LDFLAGS}
${RE2_LDFLAGS}
)
target_link_libraries( interpreter
engine
masscan
-ldl
${WINRM_LDFLAGS}
${EXTENAL_LDFLAGS}
"${KRB5_LDFLAGS}"
"-L${CMAKE_BINARY_DIR}"
${OPENSSL_LDFLAGS}
${ZLIB_LDFLAGS}
${BROTLI_LDFLAGS}
${SQLITE_LDFLAGS}
${CMAKE_THREAD_LIBS_INIT}
${SSH_LDFLAGS}
${RE2_LDFLAGS}
${SNMP_LDFLAGS} )
install (TARGETS interpreter
RUNTIME DESTINATION ${BIN_DIR}
PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE
GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
install (TARGETS nvtengine
RUNTIME DESTINATION ${BIN_DIR}
PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE
GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
install (DIRECTORY ${CMAKE_BINARY_DIR}/../script
DESTINATION ${DATA_DIR})
install (FILES ${CMAKE_BINARY_DIR}/../etc/nvtengine_src.conf
DESTINATION "${ECT_DIR}"
RENAME "nvtengine.conf")