Skip to content

Commit

Permalink
Added CMake option to stop UE4SS from adding compiler and linker flags
Browse files Browse the repository at this point in the history
To be used only if you for some reason want full control over flags, the default is to let UE4SS set the flags.
  • Loading branch information
UE4SS committed Sep 27, 2023
1 parent b2e69c1 commit 852c937
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 43 deletions.
81 changes: 42 additions & 39 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ message("IPO - Supported: ${supported}; ${error}")

# Settings -> START
option(MAKE_DEPENDENCIES_SHARED "Make dependencies shared" OFF)
option(UE4SS_NO_CUSTOM_FLAGS "Disable compilation flags added by UE4SS" OFF)
# Settings -> END

# Projects -> START
Expand All @@ -29,45 +30,47 @@ message("CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
set(PRIVATE_COMPILE_OPTIONS "")
set(PRIVATE_LINK_OPTIONS "")

if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
set(PRIVATE_COMPILE_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,$<$<CONFIG:GAME_WIN64_SHIPPING>:/Zi>,/MP;$<$<CONFIG:GAME_WIN64_SHIPPING>:/Zi>;/W3;/wd4005;/wd4251;/wd4068;/Zc:inline;/Zc:strictStrings>")
set(PRIVATE_LINK_OPTIONS /DEBUG:FULL)
set(UE4SS_SHIPPING_COMPILER_FLAGS "/O2 /Oi")
set(UE4SS_DEBUG_COMPILER_FLAGS "/Od /GS")
set(CMAKE_CXX_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
set(PRIVATE_COMPILE_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,,-g;-gcodeview;-fcolor-diagnostics;-Wno-unknown-pragmas;-Wno-unused-parameter;-fms-extensions;-Wignored-attributes;>")
set(PRIVATE_LINK_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,,-g>")
set(UE4SS_SHIPPING_COMPILER_FLAGS "-O3")
set(UE4SS_DEBUG_COMPILER_FLAGS "-O0")
set(CMAKE_CXX_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
# add_compile_definitions(printf_s=printf)
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
set(PRIVATE_COMPILE_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,,-fms-extensions>")
set(UE4SS_SHIPPING_COMPILER_FLAGS "-O3")
set(UE4SS_DEBUG_COMPILER_FLAGS "-O0")
set(CMAKE_CXX_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
if (NOT UE4SS_NO_CUSTOM_FLAGS)
if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
set(PRIVATE_COMPILE_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,$<$<CONFIG:GAME_WIN64_SHIPPING>:/Zi>,/MP;$<$<CONFIG:GAME_WIN64_SHIPPING>:/Zi>;/W3;/wd4005;/wd4251;/wd4068;/Zc:inline;/Zc:strictStrings>")
set(PRIVATE_LINK_OPTIONS /DEBUG:FULL)
set(UE4SS_SHIPPING_COMPILER_FLAGS "/O2 /Oi")
set(UE4SS_DEBUG_COMPILER_FLAGS "/Od /GS")
set(CMAKE_CXX_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
set(PRIVATE_COMPILE_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,,-g;-gcodeview;-fcolor-diagnostics;-Wno-unknown-pragmas;-Wno-unused-parameter;-fms-extensions;-Wignored-attributes;>")
set(PRIVATE_LINK_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,,-g>")
set(UE4SS_SHIPPING_COMPILER_FLAGS "-O3")
set(UE4SS_DEBUG_COMPILER_FLAGS "-O0")
set(CMAKE_CXX_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
# add_compile_definitions(printf_s=printf)
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
set(PRIVATE_COMPILE_OPTIONS "$<IF:$<COMPILE_LANGUAGE:ASM_MASM>,,-fms-extensions>")
set(UE4SS_SHIPPING_COMPILER_FLAGS "-O3")
set(UE4SS_DEBUG_COMPILER_FLAGS "-O0")
set(CMAKE_CXX_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_SHIPPING "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEBUG "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_DEV "${UE4SS_DEBUG_COMPILER_FLAGS}")
set(CMAKE_CXX_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
set(CMAKE_C_FLAGS_GAME_WIN64_TEST "${UE4SS_SHIPPING_COMPILER_FLAGS}")
endif ()
endif ()

add_compile_options("${PRIVATE_COMPILE_OPTIONS}")
Expand Down
6 changes: 4 additions & 2 deletions UE4SS/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,10 @@ set(${TARGET}_Sources

add_library(${TARGET} SHARED ${UE4SS_Sources})

target_compile_options(${TARGET} PUBLIC "${PRIVATE_COMPILE_OPTIONS}")
target_link_options(${TARGET} PUBLIC "${PRIVATE_LINK_OPTIONS}")
if (NOT UE4SS_NO_CUSTOM_FLAGS)
target_compile_options(${TARGET} PUBLIC "${PRIVATE_COMPILE_OPTIONS}")
target_link_options(${TARGET} PUBLIC "${PRIVATE_LINK_OPTIONS}")
endif ()

# Enabling c++20 support
target_compile_features(${TARGET} PUBLIC cxx_std_20)
Expand Down
6 changes: 4 additions & 2 deletions UVTD/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ set(${TARGET}_Sources

add_executable(${TARGET} ${${TARGET}_Sources})

target_compile_options(${TARGET} PUBLIC "${PRIVATE_COMPILE_OPTIONS}")
target_link_options(${TARGET} PUBLIC "${PRIVATE_LINK_OPTIONS}")
if (NOT UE4SS_NO_CUSTOM_FLAGS)
target_compile_options(${TARGET} PUBLIC "${PRIVATE_COMPILE_OPTIONS}")
target_link_options(${TARGET} PUBLIC "${PRIVATE_LINK_OPTIONS}")
endif ()

# Enabling c++20 support
target_compile_features(${TARGET} PUBLIC cxx_std_20)
Expand Down

0 comments on commit 852c937

Please sign in to comment.