From 64753c8b94b44eae47b66d424731edff7fabc8f2 Mon Sep 17 00:00:00 2001 From: Nikita Ushakov Date: Sat, 15 Jun 2024 01:42:23 +0100 Subject: [PATCH] Refactor cmake --- cmake/linux.cmake | 61 +++++++++++++++++++++++++++++++++++---------- cmake/shared.cmake | 2 -- cmake/windows.cmake | 35 ++++++++++++++++++++------ 3 files changed, 76 insertions(+), 22 deletions(-) diff --git a/cmake/linux.cmake b/cmake/linux.cmake index d569eb4..e3b8b16 100644 --- a/cmake/linux.cmake +++ b/cmake/linux.cmake @@ -1,18 +1,53 @@ -add_definitions(-D_LINUX -DPOSIX -DLINUX -DGNUC -DCOMPILER_GCC -DPLATFORM_64BITS -D_GLIBCXX_USE_CXX11_ABI=0) +macro(set_common_compile_definitions TARGET_NAME) + target_compile_definitions(${TARGET_NAME} PRIVATE + META_IS_SOURCE2 + _LINUX + POSIX + LINUX + GNUC + COMPILER_GCC + PLATFORM_64BITS + _GLIBCXX_USE_CXX11_ABI=0 + ) +endmacro() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dstrnicmp=strncasecmp -D_snprintf=snprintf") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp") +macro(set_additional_compile_definitions TARGET_NAME) + target_compile_definitions(${TARGET_NAME} PRIVATE + stricmp=strcasecmp + _stricmp=strcasecmp + _strnicmp=strncasecmp + strnicmp=strncasecmp + _snprintf=snprintf + _vsnprintf=vsnprintf + _alloca=alloca + strcmpi=strcasecmp + ) +endmacro() -# Warnings -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-uninitialized -Wno-switch -Wno-unused") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-non-virtual-dtor -Wno-overloaded-virtual") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-conversion-null -Wno-write-strings") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -Wno-reorder") +macro(set_compile_options TARGET_NAME) + target_compile_options(${TARGET_NAME} PRIVATE + -Wall + -Wno-uninitialized + -Wno-switch + -Wno-unused + -Wno-non-virtual-dtor + -Wno-overloaded-virtual + -Wno-conversion-null + -Wno-write-strings + -Wno-invalid-offsetof + -Wno-reorder + -mfpmath=sse + -msse + -fno-strict-aliasing + -fno-threadsafe-statics + -v + -fvisibility=default + ) +endmacro() -# Others -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpmath=sse -msse -fno-strict-aliasing") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics -v -fvisibility=default") +set_common_compile_definitions(${PROJECT_NAME}) +set_additional_compile_definitions(${PROJECT_NAME}) +set_compile_options(${PROJECT_NAME}) SET(PLUGIFY_LINK_LIBRARIES ${SOURCESDK_LIB}/linux64/libtier0.so @@ -27,4 +62,4 @@ SET(PLUGIFY_LINK_LIBRARIES if(NOT COMPILER_SUPPORTS_FORMAT) set(PLUGIFY_LINK_LIBRARIES ${PLUGIFY_LINK_LIBRARIES} fmt::fmt-header-only) -endif() +endif() \ No newline at end of file diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 7d522d8..8d6a45f 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -25,8 +25,6 @@ set(METAMOD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/metamod-source) set(SOURCESDK ${SOURCESDK_DIR}) set(SOURCESDK_LIB ${SOURCESDK}/lib) -add_definitions(-DMETA_IS_SOURCE2) - include_directories( ${SOURCESDK} ${SOURCESDK}/thirdparty/protobuf-3.21.8/src diff --git a/cmake/windows.cmake b/cmake/windows.cmake index b352c9e..ddf543e 100644 --- a/cmake/windows.cmake +++ b/cmake/windows.cmake @@ -1,11 +1,32 @@ -add_definitions( - -DCOMPILER_MSVC -DCOMPILER_MSVC64 -D_WIN32 -D_WINDOWS -D_ALLOW_KEYWORD_MACROS -D__STDC_LIMIT_MACROS - -D_CRT_SECURE_NO_WARNINGS=1 -D_CRT_SECURE_NO_DEPRECATE=1 -D_CRT_NONSTDC_NO_DEPRECATE=1 -) +macro(set_common_compile_definitions TARGET_NAME) + target_compile_definitions(${TARGET_NAME} PRIVATE + META_IS_SOURCE2 + COMPILER_MSVC + COMPILER_MSVC64 + _WIN32 + _WINDOWS + _ALLOW_KEYWORD_MACROS + __STDC_LIMIT_MACROS + _CRT_SECURE_NO_WARNINGS=1 + _CRT_SECURE_NO_DEPRECATE=1 + _CRT_NONSTDC_NO_DEPRECATE=1 + ) +endmacro() + +# Define the macro to set MSVC specific compile options +macro(set_compile_options TARGET_NAME) + target_compile_options(${TARGET_NAME} PRIVATE + /wd4819 + /wd4828 + /wd5033 + /permissive- + /utf-8 + /wd4005 + ) +endmacro() -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4819 /wd4828 /wd5033 /permissive- /utf-8 /wd4005 /MP") -set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /OPT:REF /OPT:ICF") +set_common_compile_definitions(${PROJECT_NAME}) +set_compile_options(${PROJECT_NAME}) set(PLUGIFY_LINK_LIBRARIES ${SOURCESDK_LIB}/public/win64/tier0.lib