Added CMake -DRETAIL option for shipping builds on Github/ModDB

This commit is contained in:
Robert Beckebans 2024-04-02 16:29:48 +02:00
parent c01089f113
commit 506250ad62
9 changed files with 54 additions and 72 deletions

View file

@ -68,6 +68,9 @@ option(USE_VMA
option(OPTICK
"Enable profiling with Optick" OFF)
option(RETAIL
"Strip certain developer features and cheats from shipping builds" OFF)
set(NVRHI_INSTALL OFF)
set(CPU_TYPE "" CACHE STRING "When set, passes this string as CPU-ID which will be embedded into the binary.")
@ -112,27 +115,14 @@ if(COMPILE_COMMANDS)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()
if (FORCE_COLOR_OUTPUT)
if (CMAKE_COMPILER_IS_GNUCC)
add_compile_options(-fdiagnostics-color=always)
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
add_compile_options(-fcolor-diagnostics)
endif ()
# Enforced colored output
if (CMAKE_COMPILER_IS_GNUCC)
add_compile_options(-fdiagnostics-color=always)
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
add_compile_options(-fcolor-diagnostics)
endif ()
if(MSVC)
#message(STATUS CMAKE_ROOT: ${CMAKE_ROOT})
#if(CMAKE_CL_64)
# SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../bin/win64)
#else()
# SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../bin/win32)
#endif()
#message(STATUS EXECUTABLE_OUTPUT_PATH: ${EXECUTABLE_OUTPUT_PATH})
#message(STATUS PROJECT_BINARY_DIR: ${PROJECT_BINARY_DIR})
#message(STATUS CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR})
else()
if(NOT MSVC)
message(STATUS CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE})
endif()
@ -176,7 +166,7 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
#endif()
add_compile_options(-Wno-pragmas -Wno-unused-variable -Wno-switch -Wno-unused-value -Winvalid-pch -Wno-multichar)
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
# add clang-specific settings for warnings (the second one make sure clang doesn't complain
# about unknown -W flags, like -Wno-unused-but-set-variable)
# SRS - Add -Wno-expansion-to-defined, Wno-nullability-completeness and -Wno-shorten-64-to-32 to list of warning settings
@ -240,47 +230,23 @@ elseif(MSVC)
# Omit Frame Pointers
# "/Oy",
# if(MSVC_VERSION EQUAL 1700)
# #message(STATUS "$ENV{LIBPATH}")
# find_path(Windows_winmd_DIR NAMES Windows.winmd
# HINTS
# C:/Program Files (x86)/Windows Kits/8.0/References/CommonConfiguration/Neutral
# PATH_SUFFIXES "Neutral")
# message(STATUS "${Windows_winmd_DIR}")
# #set(WINRT_OPTIONS "/ZW /D USE_WINRT /AI \"C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral\"")
# #set(WINRT_OPTIONS "/ZW /D USE_WINRT /AI \"$ENV{LIBPATH}\" ")
# set(WINRT_OPTIONS "/ZW /D USE_WINRT")
# set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /D _DEBUG /MP ${WINRT_OPTIONS}")
# set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MP /Oi /Oy ${WINRT_OPTIONS}")
# set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MP /Oi ${WINRT_OPTIONS}")
# set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MP /Oi /Oy ${WINRT_OPTIONS}")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /D _DEBUG /MP /MDd")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MP /Oi /Oy /MD")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MP /Oi /MDd")
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MP /Oi /Oy /MD")
# set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MP ${WINRT_OPTIONS}")
# set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP /Oi /Oy ${WINRT_OPTIONS}")
# set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MP ${WINRT_OPTIONS}")
# set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MP /Oi /Oy ${WINRT_OPTIONS}")
# else()
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /D _DEBUG /MP /MDd")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MP /Oi /Oy /MD")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MP /Oi /MDd")
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MP /Oi /Oy /MD")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MP /MDd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP /Oi /Oy /MD")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MP /MDd")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MP /Oi /Oy /MD")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MP /MDd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MP /Oi /Oy /MD")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MP /MDd")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MP /Oi /Oy /MD")
# RB: without /SAFESEH:NO we can't link against ffmpeg libs and VS2013 or we have to build our own
# libs for newer compilers
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /SAFESEH:NO")
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /SAFESEH:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO")
# endif()
# RB: without /SAFESEH:NO we can't link against ffmpeg libs and VS2013 or we have to build our own
# libs for newer compilers
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /SAFESEH:NO")
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} /SAFESEH:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /SAFESEH:NO")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /SAFESEH:NO")
add_definitions(-DWIN32
-DNOMINMAX
@ -294,7 +260,7 @@ elseif(MSVC)
if( WINDOWS10 ) # Windows RT
add_definitions(-DUSE_WINRT)
endif()
if(NOT CMAKE_CL_64)
add_definitions(-D_USE_32BIT_TIME_T)
endif()
@ -311,6 +277,10 @@ if(STANDALONE)
set(DOOM_CLASSIC OFF)
endif()
if(RETAIL)
add_definitions(-DID_RETAIL)
endif()
# SRS - set libjpeg as first include path to prioritize bundled format_message() fix
if (USE_SYSTEM_LIBJPEG)
find_package(JPEG)

View file

@ -0,0 +1,6 @@
cd ..
del /s /q build
mkdir build
cd build
cmake -G "Visual Studio 16" -A x64 -DFFMPEG=ON -DBINKDEC=OFF -DRETAIL=ON ../neo
pause

View file

@ -0,0 +1,6 @@
cd ..
del /s /q build
mkdir build
cd build
cmake -G "Visual Studio 17" -A x64 -DFFMPEG=ON -DBINKDEC=OFF -DRETAIL=ON ../neo
pause

View file

@ -254,7 +254,7 @@ void idAchievementManager::EventCompletesAchievement( const achievement_t eventI
return;
}
#ifdef ID_RETAIL
#if 0 //def ID_RETAIL
if( common->GetConsoleUsed() )
{
if( !cheatingDialogShown )
@ -338,7 +338,7 @@ void idAchievementManager::LocalUser_CompleteAchievement( achievement_t id )
return;
}
#ifdef ID_RETAIL
#if 0 //def ID_RETAIL
if( common->GetConsoleUsed() )
{
if( !cheatingDialogShown )

View file

@ -842,7 +842,7 @@ void idMenuHandler_Shell::SetupPCOptions()
}
else
{
#if !defined ( ID_RETAIL )
#if !defined( ID_RETAIL )
navOptions.Append( "DEV" ); // DEV
#endif
navOptions.Append( "#str_swf_campaign" ); // singleplayer
@ -854,7 +854,7 @@ void idMenuHandler_Shell::SetupPCOptions()
idMenuWidget_MenuButton* buttonWidget = NULL;
int index = 0;
#if !defined ( ID_RETAIL )
#if !defined( ID_RETAIL )
buttonWidget = dynamic_cast< idMenuWidget_MenuButton* >( &menuBar->GetChildByIndex( index ) );
if( buttonWidget != NULL )
{

View file

@ -211,7 +211,7 @@ void idMenuScreen_Shell_Root::ShowScreen( const mainMenuTransition_t transitionT
idMenuWidget_Button* buttonWidget = NULL;
#if !defined ( ID_RETAIL )
#if !defined( ID_RETAIL )
option.Append( "DEV" ); // DEV
menuOptions.Append( option );
options->GetChildByIndex( index ).ClearEventActions();

View file

@ -112,7 +112,7 @@ created using the CONSOLE_COMMAND_SHIP macro.
================================================
*/
#if defined ( ID_RETAIL ) && !defined( ID_RETAIL_INTERNAL )
#if defined( ID_RETAIL ) && !defined( ID_RETAIL_INTERNAL )
#define CONSOLE_COMMAND_SHIP CONSOLE_COMMAND_COMPILE
#define CONSOLE_COMMAND CONSOLE_COMMAND_NO_COMPILE
// We need to disable this warning to get commands that were made friends

View file

@ -71,7 +71,8 @@ struct version_s
idCVar com_version( "si_version", version.string, CVAR_SYSTEM | CVAR_ROM | CVAR_SERVERINFO, "engine version" );
idCVar com_forceGenericSIMD( "com_forceGenericSIMD", "0", CVAR_BOOL | CVAR_SYSTEM | CVAR_NOCHEAT, "force generic platform independent SIMD" );
#ifdef ID_RETAIL
// RB: not allowing the console is a bit harsh for shipping builds
#if 0 //def ID_RETAIL
idCVar com_allowConsole( "com_allowConsole", "0", CVAR_BOOL | CVAR_SYSTEM | CVAR_INIT, "allow toggling console with the tilde key" );
#else
idCVar com_allowConsole( "com_allowConsole", "1", CVAR_BOOL | CVAR_SYSTEM | CVAR_INIT, "allow toggling console with the tilde key" );
@ -121,7 +122,11 @@ idCommonLocal commonLocal;
idCommon* common = &commonLocal;
// RB: defaulted this to 1 because we don't have a sound for the intro .bik video
idCVar com_skipIntroVideos( "com_skipIntroVideos", "1", CVAR_BOOL , "skips intro videos" );
#if defined( ID_RETAIL )
idCVar com_skipIntroVideos( "com_skipIntroVideos", "0", CVAR_BOOL , "skips intro videos" );
#else
idCVar com_skipIntroVideos( "com_skipIntroVideos", "1", CVAR_BOOL , "skips intro videos" );
#endif
// For doom classic
struct Globals;

View file

@ -59,11 +59,6 @@ If you have questions concerning this license or the applicable additional terms
// use a different major for each game
#define ASYNC_PROTOCOL_MAJOR 1
// <= Doom v1.1: 1. no DS_VERSION token ( default )
// Doom v1.2: 2
// Doom 3 BFG: 3
#define RENDERDEMO_VERSION 3
// win32 info
#define WIN32_CONSOLE_CLASS "D3BFG_WinConsole"
#define WIN32_WINDOW_CLASS_NAME "D3BFG"