@@ -4,16 +4,16 @@ cmake_minimum_required(VERSION 3.15)
44project (awh LANGUAGES CXX )
55
66# Устанавливаем название приложения
7- set (PROJECT_VENDOR_LONG "ANYKS - WEB" )
7+ SET (PROJECT_VENDOR_LONG "ANYKS - WEB" )
88
99# Опции сборки
10- set (PROJECT_COPYRIGHT "Copyright (c) ${CURRENT_YEAR} ${PROJECT_VENDOR_LONG} " )
10+ SET (PROJECT_COPYRIGHT "Copyright (c) ${CURRENT_YEAR} ${PROJECT_VENDOR_LONG} " )
1111
1212# Тип сборки
1313# cmake -DCMAKE_BUILD_TYPE=YES ..
1414if (NOT CMAKE_BUILD_TYPE )
1515 # Активируем режим отладки
16- set (CMAKE_BUILD_TYPE Debug)
16+ SET (CMAKE_BUILD_TYPE Debug)
1717endif (NOT CMAKE_BUILD_TYPE )
1818
1919# Выводим сообщение о типе сборки
@@ -39,28 +39,39 @@ message(STATUS "Architecture: ${ARCHITECTURE}")
3939string (REGEX MATCH "Linux" PROJECT_OS_LINUX ${CMAKE_SYSTEM_NAME } )
4040if (${CMAKE_SYSTEM_NAME } STREQUAL "Linux" )
4141 message (STATUS "Detected OS: Linux" )
42- set (DEBUGGER "-ggdb3" )
43- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -Wl,--no-as-needed -ldl" )
42+ SET (DEBUGGER "-ggdb3" )
43+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -Wl,--no-as-needed -ldl" )
4444elseif (${CMAKE_SYSTEM_NAME } STREQUAL "Darwin" )
4545 if (NOT MACOS_VERSION)
4646 EXECUTE_PROCESS (COMMAND sw_vers -productVersion COMMAND tr -d ' \n' OUTPUT_VARIABLE MACOS_VERSION )
4747 endif ()
4848 message (STATUS "Detected OS: MacOS X v${MACOS_VERSION} " )
49- set (DEBUGGER "-glldb" )
50- set (CMAKE_OSX_DEPLOYMENT_TARGET ${MACOS_VERSION} )
49+ SET (DEBUGGER "-glldb" )
50+ SET (CMAKE_OSX_DEPLOYMENT_TARGET ${MACOS_VERSION} )
5151elseif (${CMAKE_SYSTEM_NAME } STREQUAL "FreeBSD" )
5252 message (STATUS "Detected OS: FreeBSD" )
53- set (DEBUGGER "-ggdb3" )
53+ SET (DEBUGGER "-ggdb3" )
5454else ()
55- set (DEBUGGER "" )
55+ SET (DEBUGGER "" )
5656endif ()
5757
5858# Enable C++17
59- set (CMAKE_CXX_STANDARD 17)
60- set (CMAKE_CXX_STANDARD_REQUIRED ON )
59+ SET (CMAKE_CXX_STANDARD 17)
60+ SET (CMAKE_CXX_STANDARD_REQUIRED ON )
6161
62- # Устанавливаем опции компилятора
63- set (CMAKE_CXX_COMPILER_ID "clang++" )
62+ # Если операционной системой является Linux
63+ if (${CMAKE_SYSTEM_NAME } STREQUAL "Linux" )
64+ # Устанавливаем опции компилятора
65+ SET (CMAKE_C_COMPILER_ID "GNU" )
66+ SET (CMAKE_CXX_COMPILER_ID "GNU" )
67+ # Для всех остальных операционных систем
68+ else ()
69+ # Устанавливаем опции компилятора
70+ SET (CMAKE_C_COMPILER_ID "clang" )
71+ SET (CMAKE_CXX_COMPILER_ID "clang++" )
72+ endif ()
73+
74+ # Выводим информацию об установленных компиляторах
6475message (STATUS "Using C compiler: ${CMAKE_C_COMPILER_ID } ${CMAKE_CXX_COMPILER_VERSION } " )
6576message (STATUS "Using C++ compiler: ${CMAKE_CXX_COMPILER_ID } ${CMAKE_CXX_COMPILER_VERSION } \n " )
6677
@@ -69,31 +80,39 @@ string(TIMESTAMP CURRENT_YEAR "%Y")
6980string (TIMESTAMP CURRENT_TIME "%d.%m.%Y %H:%M:%S" )
7081
7182# Опции компилятора
72- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } -fPIC" )
83+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS } -fPIC" )
7384
7485if (${CMAKE_SYSTEM_NAME } STREQUAL "Windows" )
75- set (AWH_PARAMS "-Wno-cpp -Wno-deprecated" )
86+ SET (AWH_PARAMS "-Wno-cpp -Wno-deprecated" )
7687elseif (${CMAKE_SYSTEM_NAME } STREQUAL "Linux" )
77- set (AWH_PARAMS "-Wno-cpp -Wno-deprecated" )
88+ SET (AWH_PARAMS "-Wno-cpp -Wno-deprecated" )
7889elseif (${CMAKE_SYSTEM_NAME } STREQUAL "Darwin" )
79- set (AWH_PARAMS "-framework Carbon -Wno-cpp -Wno-deprecated -Wno-unused-command-line-argument" )
90+ SET (AWH_PARAMS "-framework Carbon -Wno-cpp -Wno-deprecated -Wno-unused-command-line-argument" )
8091elseif (${CMAKE_SYSTEM_NAME } STREQUAL "FreeBSD" )
81- set (AWH_PARAMS "-lutil -Wno-cpp -Wno-deprecated -Wno-unused-command-line-argument" )
92+ SET (AWH_PARAMS "-lutil -Wno-cpp -Wno-deprecated -Wno-unused-command-line-argument" )
8293else ()
83- set (AWH_PARAMS "-Wno-unknown-attributes" )
94+ SET (AWH_PARAMS "-Wno-unknown-attributes" )
8495endif ()
8596
97+ # Если процессор архитектуры ARM
8698if (${ARCHITECTURE} MATCHES "aarch64" OR ${ARCHITECTURE} MATCHES "arm*" )
87- set (CMAKE_CXX_FLAGS_RELEASE "-O3 -pipe -DNDEBUG" )
88- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -pthread -fno-permissive -Wno-pedantic -Wno-narrowing -Wno-deprecated-declarations -Wno-exceptions -Wno-unused-result ${AWH_PARAMS} " )
99+ SET (CMAKE_CXX_FLAGS_RELEASE "-pipe -DNDEBUG" )
100+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -pthread -fno-permissive -Wno-pedantic -Wno-narrowing -Wno-deprecated-declarations -Wno-exceptions -Wno-unused-result ${AWH_PARAMS} " )
101+ # Если процессор архитектуры x86_64
89102else ()
90- set (CMAKE_CXX_FLAGS_RELEASE "-O3 -pipe -mrdrnd -march=core2 -DNDEBUG" )
91- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -pthread -fno-permissive -Wno-pedantic -Wno-narrowing -Wno-deprecated-declarations -Wno-exceptions -Wno-unused-result ${AWH_PARAMS} " )
103+ SET (CMAKE_CXX_FLAGS_RELEASE "-pipe -mrdrnd -march=core2 -DNDEBUG" )
104+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS } -pthread -fno-permissive -Wno-pedantic -Wno-narrowing -Wno-deprecated-declarations -Wno-exceptions -Wno-unused-result ${AWH_PARAMS} " )
92105endif ()
93106
94- set (CMAKE_CXX_FLAGS_DEBUG "-O0 -DDEBUG_MODE ${DEBUGGER} " )
107+ # Устанавливаем параметр отладки
108+ SET (CMAKE_CXX_FLAGS_DEBUG "-DDEBUG_MODE ${DEBUGGER} " )
95109
110+ # Если активирован режим отладки
96111if (CMAKE_BUILD_TYPE MATCHES Debug)
112+ # Устанавливаем уровень оптимизации
113+ SET (CMAKE_C_FLAGS_DISTRIBUTION "-O0" )
114+ SET (CMAKE_CXX_FLAGS_DISTRIBUTION "-O0" )
115+
97116 # Если операцинная система не относится к MS Windows
98117 if (NOT ${CMAKE_SYSTEM_NAME } STREQUAL "Windows" )
99118 # Устанавливаем сборку профилировщика
@@ -113,7 +132,12 @@ if (CMAKE_BUILD_TYPE MATCHES Debug)
113132 # Выводим сообщение отладочной информации
114133 message (STATUS "C Flags: ${CMAKE_C_FLAGS } ${CMAKE_C_FLAGS_DEBUG } " )
115134 message (STATUS "C++ Flags: ${CMAKE_CXX_FLAGS } ${CMAKE_CXX_FLAGS_DEBUG } \n " )
135+ # Если активирован режим релиза
116136else ()
137+ # Устанавливаем уровень оптимизации
138+ SET (CMAKE_C_FLAGS_DISTRIBUTION "-O3" )
139+ SET (CMAKE_CXX_FLAGS_DISTRIBUTION "-O3" )
140+
117141 # Выводим сообщение релизной информации
118142 message (STATUS "C Flags: ${CMAKE_C_FLAGS } ${CMAKE_C_FLAGS_RELEASE } " )
119143 message (STATUS "C++ Flags: ${CMAKE_CXX_FLAGS } ${CMAKE_CXX_FLAGS_RELEASE } \n " )
@@ -122,7 +146,7 @@ endif()
122146# Если нужно собрать и динамическую библиотеку
123147if (CMAKE_SHARED_BUILD_LIB)
124148 if (MSVC )
125- set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON )
149+ SET (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON )
126150 endif (MSVC )
127151endif (CMAKE_SHARED_BUILD_LIB )
128152
@@ -174,7 +198,7 @@ include_directories(SYSTEM ${CMAKE_SOURCE_DIR}/contrib/include)
174198include_directories (SYSTEM ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} )
175199
176200# Выполняем подключение исходников
177- set (SOURCE_FILES
201+ SET (SOURCE_FILES
178202 "${SOURCE_FILES} "
179203 "${CMAKE_SOURCE_DIR } /src/sys/os.cpp"
180204 "${CMAKE_SOURCE_DIR } /src/sys/fs.cpp"
@@ -254,25 +278,25 @@ set(SOURCE_FILES
254278)
255279
256280# Задаем именя библиотеки и бинарника
257- set (IP_APP_NAME ip)
258- set (DNS_APP_NAME dns)
259- set (NTP_APP_NAME ntp)
260- set (PING_APP_NAME ping)
261- set (TIMER_APP_NAME timer)
262- set (PROXY_APP_NAME proxy)
263- set (SOCKS5_APP_NAME socks5)
264- set (CLIENT_APP_NAME client)
265- set (SERVER_APP_NAME server)
266- set (WS_CLIENT_APP_NAME wsClient)
267- set (WS_SERVER_APP_NAME wsServer)
268- set (WEB_CLIENT_APP_NAME webClient)
269- set (WEB_SERVER_APP_NAME webServer)
270- set (INVESTIGATOR_APP_NAME investigator)
271- set (AWH_LIB_NAME ${PROJECT_NAME } )
281+ SET (IP_APP_NAME ip)
282+ SET (DNS_APP_NAME dns)
283+ SET (NTP_APP_NAME ntp)
284+ SET (PING_APP_NAME ping)
285+ SET (TIMER_APP_NAME timer)
286+ SET (PROXY_APP_NAME proxy)
287+ SET (SOCKS5_APP_NAME socks5)
288+ SET (CLIENT_APP_NAME client)
289+ SET (SERVER_APP_NAME server)
290+ SET (WS_CLIENT_APP_NAME wsClient)
291+ SET (WS_SERVER_APP_NAME wsServer)
292+ SET (WEB_CLIENT_APP_NAME webClient)
293+ SET (WEB_SERVER_APP_NAME webServer)
294+ SET (INVESTIGATOR_APP_NAME investigator)
295+ SET (AWH_LIB_NAME ${PROJECT_NAME } )
272296
273297# Если операционной системой не является Windows
274298if (NOT ${CMAKE_SYSTEM_NAME } STREQUAL "Windows" )
275- set (CLUSTER_APP_NAME cluster)
299+ SET (CLUSTER_APP_NAME cluster)
276300endif ()
277301
278302# Если нужно собрать и динамическую библиотеку
@@ -292,11 +316,11 @@ endif (CMAKE_SHARED_BUILD_LIB)
292316 if (${CMAKE_SYSTEM_NAME } STREQUAL "Windows" )
293317 # export MSYS="error_start:%WD%dumper.exe -d -c %1 %2"
294318 # Устанавливаем необходимые зависимости для MS Windows
295- set (WINFLAGS -lstdc++ -lws2_32 -lgdi32 -lcrypt32 -lIphlpapi -lbcrypt -flto=auto)
319+ SET (WINFLAGS -lstdc++ -lws2_32 -lgdi32 -lcrypt32 -lIphlpapi -lbcrypt -flto=auto)
296320
297321 # Устанавливаем иконку для windows под MinGW.
298- set (RES_FILES "awh.rc" )
299- set (CMAKE_RC_COMPILER_INIT windres)
322+ SET (RES_FILES "awh.rc" )
323+ SET (CMAKE_RC_COMPILER_INIT windres)
300324 ENABLE_LANGUAGE (RC )
301325 SET (CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>" )
302326
@@ -1137,7 +1161,7 @@ endif (CMAKE_SHARED_BUILD_LIB)
11371161# Активация формирования дампа ядра в реже отладки под MacOS X
11381162if (CMAKE_BUILD_TYPE MATCHES Debug)
11391163 if (${CMAKE_SYSTEM_NAME } STREQUAL "Darwin" )
1140- set (entitlements_file "${CMAKE_SOURCE_DIR } /segv.entitlements" )
1164+ SET (entitlements_file "${CMAKE_SOURCE_DIR } /segv.entitlements" )
11411165
11421166 add_custom_command (TARGET "${IP_APP_NAME} " POST_BUILD
11431167 COMMAND bash "${CMAKE_SOURCE_DIR } /core_dump.sh" "$<TARGET_FILE :${IP_APP_NAME} >" "${entitlements_file} "
@@ -1262,7 +1286,7 @@ endif()
12621286
12631287# Устанавливаем адрес установки, запрет установки в /usr/local
12641288if ("${CMAKE_INSTALL_PREFIX } " STREQUAL "/usr/local" OR "${CMAKE_INSTALL_PREFIX } " STREQUAL "/usr/local/" )
1265- set (CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR } " )
1289+ SET (CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR } " )
12661290endif ()
12671291
12681292# Устанавливаем сертификаты
0 commit comments