Skip to content

Commit a603985

Browse files
committed
Merge branch 'master' into for-0.56.0/sync
2 parents 9070900 + 8758c15 commit a603985

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+645
-1221
lines changed

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ jobs:
7373
run: |
7474
set -x
7575
sudo apt-get update
76-
sudo apt-get -y -q --no-install-recommends install zlib1g-dev libncursesw5-dev libgeoip-dev nettle-dev libgmp-dev libcurl4-gnutls-dev libogg-dev libvorbis-dev libopusfile-dev libwebp-dev libjpeg8-dev libpng-dev libfreetype6-dev libglew-dev libopenal-dev ninja-build
76+
sudo apt-get -y -q --no-install-recommends install zlib1g-dev libncursesw5-dev nettle-dev libgmp-dev libcurl4-gnutls-dev libogg-dev libvorbis-dev libopusfile-dev libwebp-dev libjpeg8-dev libpng-dev libfreetype6-dev libglew-dev libopenal-dev ninja-build
7777
git submodule update --init --recursive
7878
7979
curl -sS https://gitlab.com/illwieckz/git-checkout-modules/raw/master/git-checkout-modules -o ~/git-checkout-modules

CMakeLists.txt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -969,8 +969,10 @@ if (BUILD_CLIENT)
969969
set(GLSL_SOURCE_DIR ${ENGINE_DIR}/renderer/glsl_source)
970970
set(EMBED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/embed_data)
971971
file(MAKE_DIRECTORY ${EMBED_INCLUDE_DIR})
972-
set_property(TARGET client-objects APPEND PROPERTY INCLUDE_DIRECTORIES ${EMBED_INCLUDE_DIR})
973972

973+
set(SHADERS_CPP_TEXT "// This file is auto-generated by CMakeLists.txt.\n")
974+
string(APPEND SHADERS_CPP_TEXT "#include \"common/Common.h\"\n\n")
975+
set(SHADERMAP_TEXT "")
974976
foreach(res ${GLSLSOURCELIST})
975977
get_filename_component(filename_no_ext ${res} NAME_WE)
976978
set(outpath ${EMBED_INCLUDE_DIR}/${filename_no_ext}.glsl.h)
@@ -981,7 +983,15 @@ if (BUILD_CLIENT)
981983
MAIN_DEPENDENCY ${res}
982984
)
983985
set_property(TARGET client-objects APPEND PROPERTY SOURCES ${outpath})
986+
string(APPEND SHADERS_CPP_TEXT "#include \"../embed_data/${filename_no_ext}.glsl.h\"\n")
987+
string(APPEND SHADERMAP_TEXT "\t{ \"${filename_no_ext}.glsl\", ")
988+
string(APPEND SHADERMAP_TEXT "std::string(reinterpret_cast<const char *>( ${filename_no_ext}_glsl ), ")
989+
string(APPEND SHADERMAP_TEXT "sizeof( ${filename_no_ext}_glsl )) },\n")
984990
endforeach()
991+
string(APPEND SHADERS_CPP_TEXT "\nextern const std::unordered_map<std::string, std::string> shadermap\n{\n")
992+
string(APPEND SHADERS_CPP_TEXT "${SHADERMAP_TEXT}")
993+
string(APPEND SHADERS_CPP_TEXT "};\n")
994+
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource/shaders.cpp" "${SHADERS_CPP_TEXT}")
985995
endif()
986996

987997
if (BUILD_SERVER)

azure-pipelines.yml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@ jobs:
5656
cmake --version
5757
export CFLAGS='-Wno-c++14-extensions'
5858
export CXXFLAGS='-Wno-c++14-extensions'
59-
cmake -Wdev -Wdeprecated -DUSE_PRECOMPILED_HEADER=0 -DUSE_WERROR=1 -DBE_VERBOSE=1 -DCMAKE_BUILD_TYPE=Release -DBUILD_DUMMY_APP=1 -DBUILD_TESTS=1 -H. -Bbuild
59+
cmake -Wdev -Wdeprecated -DUSE_PRECOMPILED_HEADER=0 -DUSE_WERROR=1 -DBE_VERBOSE=1 -DCMAKE_BUILD_TYPE=Release -DBUILD_DUMMY_APP=1 -DBUILD_DUMMY_GAMELOGIC=1 -DBUILD_TESTS=1 -H. -Bbuild
6060
cmake --build build -- -j`sysctl -n hw.logicalcpu`
6161
displayName: 'Build'
6262
- bash: |
6363
set -e
64-
# Use dummyapp so we don't need dpk's
65-
build/test-dummyapp -pakpath pkg
64+
build/test-ttyclient -pakpath pkg -set fs_basepak daemon -set vm.cgame.type 3
6665
displayName: 'Test'
6766
6867
- job: Linux
@@ -120,18 +119,17 @@ jobs:
120119
- bash: |
121120
set -e
122121
sudo apt-get update
123-
sudo apt-get -y -q --no-install-recommends install zlib1g-dev libncursesw5-dev libgeoip-dev nettle-dev libgmp-dev libcurl4-gnutls-dev libogg-dev libvorbis-dev libopusfile-dev libwebp-dev libjpeg8-dev libpng-dev libfreetype6-dev libglew-dev libopenal-dev liblua5.2-dev ninja-build $(EXTRA_PACKAGES)
122+
sudo apt-get -y -q --no-install-recommends install zlib1g-dev libncursesw5-dev nettle-dev libgmp-dev libcurl4-gnutls-dev libogg-dev libvorbis-dev libopusfile-dev libwebp-dev libjpeg8-dev libpng-dev libfreetype6-dev libglew-dev libopenal-dev liblua5.2-dev ninja-build $(EXTRA_PACKAGES)
124123
$(EXTRA_INSTALLS)
125124
displayName: 'Install deps'
126125
- bash: |
127126
set -e
128127
cmake --version
129-
cmake -G "Ninja" -Wdev -Wdeprecated -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) -DCMAKE_C_COMPILER=$(C_COMPILER) -DCMAKE_CXX_COMPILER=$(CXX_COMPILER) -DUSE_PRECOMPILED_HEADER=0 -DUSE_WERROR=1 -DBE_VERBOSE=1 -DBUILD_DUMMY_APP=1 -DBUILD_TESTS=1 -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -H. -Bbuild
128+
cmake -G "Ninja" -Wdev -Wdeprecated -DCMAKE_TOOLCHAIN_FILE=$(TOOLCHAIN_FILE) -DCMAKE_C_COMPILER=$(C_COMPILER) -DCMAKE_CXX_COMPILER=$(CXX_COMPILER) -DUSE_PRECOMPILED_HEADER=0 -DUSE_WERROR=1 -DBE_VERBOSE=1 -DBUILD_DUMMY_APP=1 -DBUILD_DUMMY_GAMELOGIC=1 -DBUILD_TESTS=1 -DCMAKE_BUILD_TYPE=$(BUILD_TYPE) -H. -Bbuild
130129
cmake --build build -- -j`nproc`
131130
displayName: 'Build'
132131
- bash: |
133132
set -e
134-
# Use dummyapp so we don't need dpk's
135-
build/test-dummyapp -pakpath pkg
133+
SDL_VIDEODRIVER=offscreen ALSOFT_DRIVERS=null build/test-client -pakpath pkg -set fs_basepak daemon -set vm.cgame.type 3
136134
condition: "and(succeeded(), eq(variables.TOOLCHAIN_FILE, ''))"
137135
displayName: 'Test'

cmake/DaemonFlags.cmake

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ mark_as_advanced(USE_RECOMMENDED_CXX_STANDARD)
5555

5656
option(USE_CPP23 "Use C++23 standard where possible" OFF)
5757

58+
if (MSVC)
59+
set(DEFAULT_STRIP_SOURCE_PATHS ON)
60+
else()
61+
set(DEFAULT_STRIP_SOURCE_PATHS OFF)
62+
endif()
63+
64+
option(STRIP_SOURCE_PATHS "Strip source paths in debug symbols" ${DEFAULT_STRIP_SOURCE_PATHS})
65+
5866
# Required for <stacktrace> on Clang/GCC
5967
if(USE_CPP23)
6068
if (DAEMON_CXX_COMPILER_Clang_COMPATIBILITY OR DAEMON_CXX_COMPILER_GCC_COMPATIBILITY)
@@ -217,23 +225,25 @@ macro(try_exe_linker_flag PROP FLAG)
217225
endif()
218226
endmacro()
219227

220-
# Stripping of absolute paths for __FILE__ / source_location
221-
# Also do without src/ to get libs/
222-
set(FILENAME_STRIP_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}")
223-
if (NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL DAEMON_DIR)
224-
set(FILENAME_STRIP_DIRS ${FILENAME_STRIP_DIRS} "${DAEMON_DIR}/src" "${DAEMON_DIR}")
228+
if (STRIP_SOURCE_PATHS)
229+
# Stripping of absolute paths for __FILE__ / source_location
230+
# Also do without src/ to get libs/
231+
set(FILENAME_STRIP_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}")
232+
if (NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL DAEMON_DIR)
233+
set(FILENAME_STRIP_DIRS ${FILENAME_STRIP_DIRS} "${DAEMON_DIR}/src" "${DAEMON_DIR}")
234+
endif()
235+
foreach(strip_dir ${FILENAME_STRIP_DIRS})
236+
if (MSVC)
237+
string(REPLACE "/" "\\" backslashed_dir ${strip_dir})
238+
# set_c_cxx_flag can't be used because macros barf if the input contains backslashes
239+
# https://gitlab.kitware.com/cmake/cmake/-/issues/19281
240+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /d1trimfile:${backslashed_dir}\\")
241+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /d1trimfile:${backslashed_dir}\\")
242+
else()
243+
try_c_cxx_flag(PREFIX_MAP "-ffile-prefix-map=${strip_dir}/=")
244+
endif()
245+
endforeach()
225246
endif()
226-
foreach(strip_dir ${FILENAME_STRIP_DIRS})
227-
if (MSVC)
228-
string(REPLACE "/" "\\" backslashed_dir ${strip_dir})
229-
# set_c_cxx_flag can't be used because macros barf if the input contains backslashes
230-
# https://gitlab.kitware.com/cmake/cmake/-/issues/19281
231-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /d1trimfile:${backslashed_dir}\\")
232-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /d1trimfile:${backslashed_dir}\\")
233-
else()
234-
try_c_cxx_flag(PREFIX_MAP "-ffile-prefix-map=${strip_dir}/=")
235-
endif()
236-
endforeach()
237247

238248
if (BE_VERBOSE)
239249
set(WARNMODE "no-error=")

cmake/FindGeoIP.cmake

Lines changed: 0 additions & 42 deletions
This file was deleted.

src.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,14 @@ set(COMMONTESTLIST
8080
)
8181

8282
set(RENDERERLIST
83+
${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource/shaders.cpp
8384
${ENGINE_DIR}/renderer/BufferBind.h
8485
${ENGINE_DIR}/renderer/DetectGLVendors.cpp
8586
${ENGINE_DIR}/renderer/DetectGLVendors.h
8687
${ENGINE_DIR}/renderer/gl_shader.cpp
8788
${ENGINE_DIR}/renderer/gl_shader.h
8889
${ENGINE_DIR}/renderer/iqm.h
8990
${ENGINE_DIR}/renderer/ShadeCommon.h
90-
${ENGINE_DIR}/renderer/shaders.cpp
9191
${ENGINE_DIR}/renderer/tr_animation.cpp
9292
${ENGINE_DIR}/renderer/tr_backend.cpp
9393
${ENGINE_DIR}/renderer/tr_bsp.cpp
@@ -152,6 +152,7 @@ set(GLSLSOURCELIST
152152
# Common shader libraries
153153
${ENGINE_DIR}/renderer/glsl_source/common.glsl
154154
${ENGINE_DIR}/renderer/glsl_source/common_cp.glsl
155+
${ENGINE_DIR}/renderer/glsl_source/fogEquation_fp.glsl
155156
${ENGINE_DIR}/renderer/glsl_source/shaderProfiler_vp.glsl
156157
${ENGINE_DIR}/renderer/glsl_source/shaderProfiler_fp.glsl
157158

src/common/Log.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3131
#include "Common.h"
3232

3333
namespace Log {
34+
Cvar::Cvar<bool> logExtendAll(
35+
"logs.writeSrcLocation.all", "Always print source code location for logs", Cvar::NONE, false );
36+
Cvar::Cvar<bool> logExtendWarn(
37+
"logs.writeSrcLocation.warn", "Print source code location for Warn logs", Cvar::NONE, false );
38+
Cvar::Cvar<bool> logExtendNotice(
39+
"logs.writeSrcLocation.notice", "Print source code location for Notice logs", Cvar::NONE, false );
40+
Cvar::Cvar<bool> logExtendVerbose(
41+
"logs.writeSrcLocation.verbose", "Print source code location for Verbose logs", Cvar::NONE, false );
42+
Cvar::Cvar<bool> logExtendDebug(
43+
"logs.writeSrcLocation.debug", "Print source code location for Debug logs", Cvar::NONE, false );
3444

3545
Logger::Logger(Str::StringRef name, std::string prefix, Level defaultLevel)
3646
: filterLevel(new Cvar::Cvar<Log::Level>(

src/common/Log.h

Lines changed: 71 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ namespace Log {
5151
// The default filtering level
5252
const Level DEFAULT_FILTER_LEVEL = Level::WARNING;
5353

54+
extern Cvar::Cvar<bool> logExtendAll;
55+
extern Cvar::Cvar<bool> logExtendWarn;
56+
extern Cvar::Cvar<bool> logExtendNotice;
57+
extern Cvar::Cvar<bool> logExtendVerbose;
58+
extern Cvar::Cvar<bool> logExtendDebug;
59+
5460
/*
5561
* Loggers are used to group logs by subsystems and allow logs
5662
* to be filtered by log level by subsystem. They are used like so
@@ -84,16 +90,16 @@ namespace Log {
8490
Logger(Str::StringRef name, std::string prefix = "", Level defaultLevel = DEFAULT_FILTER_LEVEL);
8591

8692
template<typename ... Args>
87-
void Warn(Str::StringRef format, Args&& ... args);
93+
void WarnExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
8894

8995
template<typename ... Args>
90-
void Notice(Str::StringRef format, Args&& ... args);
96+
void NoticeExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
9197

9298
template<typename ... Args>
93-
void Verbose(Str::StringRef format, Args&& ... args);
99+
void VerboseExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
94100

95101
template<typename ... Args>
96-
void Debug(Str::StringRef format, Args&& ... args);
102+
void DebugExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
97103

98104
template<typename F>
99105
void DoWarnCode(F&& code);
@@ -131,16 +137,16 @@ namespace Log {
131137
*/
132138

133139
template<typename ... Args>
134-
void Warn(Str::StringRef format, Args&& ... args);
140+
void Warn( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
135141

136142
template<typename ... Args>
137-
void Notice(Str::StringRef format, Args&& ... args);
143+
void Notice( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
138144

139145
template<typename ... Args>
140-
void Verbose(Str::StringRef format, Args&& ... args);
146+
void Verbose( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
141147

142148
template<typename ... Args>
143-
void Debug(Str::StringRef format, Args&& ... args);
149+
void Debug( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args );
144150

145151
/*
146152
* For messages which are not true log messages, but rather are produced by
@@ -193,31 +199,62 @@ namespace Log {
193199

194200
// Logger
195201

202+
inline std::string AddSrcLocation( const std::string& message,
203+
const char* file, const char* function, const int line,
204+
const bool extend ) {
205+
if ( logExtendAll.Get() || extend ) {
206+
return message + Str::Format( " ^F(%s:%u, %s)",
207+
file, line, function );
208+
}
209+
210+
return message;
211+
}
212+
196213
template<typename ... Args>
197-
void Logger::Warn(Str::StringRef format, Args&& ... args) {
198-
if (filterLevel->Get() <= Level::WARNING) {
199-
this->Dispatch(Prefix(Str::Format(format, std::forward<Args>(args) ...)), Level::WARNING, format);
214+
void Logger::WarnExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
215+
if ( filterLevel->Get() <= Level::WARNING ) {
216+
this->Dispatch(
217+
AddSrcLocation(
218+
Prefix( Str::Format( format, std::forward<Args>( args ) ... ) ),
219+
file, function, line, logExtendWarn.Get()
220+
),
221+
Level::WARNING, format );
200222
}
201223
}
202224

203225
template<typename ... Args>
204-
void Logger::Notice(Str::StringRef format, Args&& ... args) {
205-
if (filterLevel->Get() <= Level::NOTICE) {
206-
this->Dispatch(Prefix(Str::Format(format, std::forward<Args>(args) ...)), Level::NOTICE, format);
226+
void Logger::NoticeExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
227+
if ( filterLevel->Get() <= Level::NOTICE ) {
228+
this->Dispatch(
229+
AddSrcLocation(
230+
Prefix( Str::Format( format, std::forward<Args>( args ) ... ) ),
231+
file, function, line, logExtendNotice.Get()
232+
),
233+
Level::NOTICE, format );
207234
}
208235
}
209236

210237
template<typename ... Args>
211-
void Logger::Verbose(Str::StringRef format, Args&& ... args) {
212-
if (filterLevel->Get() <= Level::VERBOSE) {
213-
this->Dispatch(Prefix(Str::Format(format, std::forward<Args>(args) ...)), Level::VERBOSE, format);
238+
void Logger::VerboseExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
239+
if ( filterLevel->Get() <= Level::VERBOSE ) {
240+
this->Dispatch(
241+
AddSrcLocation(
242+
Prefix( Str::Format( format, std::forward<Args>( args ) ... ) ),
243+
file, function, line, logExtendVerbose.Get()
244+
),
245+
Level::VERBOSE, format );
214246
}
215247
}
216248

217249
template<typename ... Args>
218-
void Logger::Debug(Str::StringRef format, Args&& ... args) {
219-
if (filterLevel->Get() <= Level::DEBUG) {
220-
this->Dispatch(Prefix(Str::Format(format, std::forward<Args>(args) ...)), Level::DEBUG, format);
250+
void Logger::DebugExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
251+
if ( filterLevel->Get() <= Level::DEBUG ) {
252+
this->Dispatch(
253+
AddSrcLocation(
254+
Prefix( Str::Format( format, std::forward<Args>( args ) ... ) ),
255+
file, function, line, logExtendDebug.Get()
256+
),
257+
Level::DEBUG, format );
221258
}
222259
}
223260

@@ -253,24 +290,30 @@ namespace Log {
253290
extern Logger defaultLogger;
254291

255292
template<typename ... Args>
256-
void Warn(Str::StringRef format, Args&& ... args) {
257-
defaultLogger.Warn(format, std::forward<Args>(args) ...);
293+
void WarnExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
294+
defaultLogger.WarnExt( file, function, line, format, std::forward<Args>( args ) ... );
258295
}
259296

260297
template<typename ... Args>
261-
void Notice(Str::StringRef format, Args&& ... args) {
262-
defaultLogger.Notice(format, std::forward<Args>(args) ...);
298+
void NoticeExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
299+
defaultLogger.NoticeExt( file, function, line, format, std::forward<Args>( args ) ... );
263300
}
264301

265302
template<typename ... Args>
266-
void Verbose(Str::StringRef format, Args&& ... args) {
267-
defaultLogger.Verbose(format, std::forward<Args>(args) ...);
303+
void VerboseExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
304+
defaultLogger.VerboseExt( file, function, line, format, std::forward<Args>( args ) ... );
268305
}
269306

270307
template<typename ... Args>
271-
void Debug(Str::StringRef format, Args&& ... args) {
272-
defaultLogger.Debug(format, std::forward<Args>(args) ...);
308+
void DebugExt( const char* file, const char* function, const int line, Str::StringRef format, Args&& ... args ) {
309+
defaultLogger.DebugExt( file, function, line, format, std::forward<Args>( args ) ... );
273310
}
311+
312+
// Use ##__VA_ARGS__ instead of __VA_ARGS__ because args may be empty. __VA_OPT__( , ) currently doesn't seem to work on MSVC
313+
#define Warn( format, ... ) WarnExt( __FILE__, __func__, __LINE__, format, ##__VA_ARGS__ )
314+
#define Notice( format, ... ) NoticeExt( __FILE__, __func__, __LINE__, format, ##__VA_ARGS__ )
315+
#define Verbose( format, ... ) VerboseExt( __FILE__, __func__, __LINE__, format, ##__VA_ARGS__ )
316+
#define Debug( format, ... ) DebugExt( __FILE__, __func__, __LINE__, format, ##__VA_ARGS__ )
274317
}
275318

276319
namespace Cvar {

src/engine/client/cl_cgame.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ void CL_AdjustTimeDelta()
676676
// if the current time is WAY off, just correct to the current value
677677

678678
/*
679-
if(com_sv_running->integer)
679+
if(com_sv_running.Get())
680680
{
681681
resetTime = 100;
682682
}

0 commit comments

Comments
 (0)