From cf230b218276a632d33f9d208c8517d1ed0dad15 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Sat, 20 Aug 2022 12:13:48 -0500 Subject: [PATCH 1/7] cmake: build sdl target with threads support --- src/sdl/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt index 65ff383ed..31fa94e8a 100644 --- a/src/sdl/CMakeLists.txt +++ b/src/sdl/CMakeLists.txt @@ -168,6 +168,7 @@ if(${SDL2_FOUND}) target_compile_definitions(SRB2SDL2 PRIVATE -DDIRECTFULLSCREEN -DHAVE_SDL + -DHAVE_THREADS ) ## strip debug symbols into separate file when using gcc. From 91fdf426e18bf36ff6cbfb35f9ed5eb0e8a10341 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Sat, 20 Aug 2022 14:50:06 -0500 Subject: [PATCH 2/7] Don't sleep w/ fpscap 0 and vsync enabled --- src/d_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/d_main.c b/src/d_main.c index 9c5b6e254..ba79857e1 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -888,7 +888,11 @@ void D_SRB2Loop(void) if (!singletics) { INT64 elapsed = (INT64)(finishprecise - enterprecise); - if (elapsed > 0 && (INT64)capbudget > elapsed) + + // in the case of "match refresh rate" + vsync, don't sleep at all + const boolean vsync_with_match_refresh = cv_vidwait.value && cv_fpscap.value == 0; + + if (elapsed > 0 && (INT64)capbudget > elapsed && !vsync_with_match_refresh) { I_SleepDuration(capbudget - (finishprecise - enterprecise)); } From 4b059f5b3852e99bace212bb11e482d24a8ea9aa Mon Sep 17 00:00:00 2001 From: Eidolon Date: Mon, 22 Aug 2022 19:43:59 -0500 Subject: [PATCH 3/7] cmake: remove win32 subdirectory --- src/CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 53eeb5248..1b9acfe5f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -304,10 +304,6 @@ target_compile_definitions(SRB2SDL2 PRIVATE -DCMAKECONFIG) add_subdirectory(sdl) add_subdirectory(objects) -if(${CMAKE_SYSTEM} MATCHES Windows) - add_subdirectory(win32) -endif() - if(NOT ${SRB2_SDL2_AVAILABLE}) message(FATAL_ERROR "There are no targets available to build an SRB2Kart executable. :(") endif() From 17128dc8f74f48e4af83a040c6afcf28b048158e Mon Sep 17 00:00:00 2001 From: Eidolon Date: Mon, 22 Aug 2022 20:59:56 -0500 Subject: [PATCH 4/7] cmake: add exchndl link on mingw32 --- src/sdl/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt index 31fa94e8a..ae8fa4e15 100644 --- a/src/sdl/CMakeLists.txt +++ b/src/sdl/CMakeLists.txt @@ -124,6 +124,14 @@ if(${SDL2_FOUND}) endif() endif() + if(${CMAKE_SYSTEM} MATCHES Windows AND ${CMAKE_C_COMPILER_ID} MATCHES "GNU" AND ${SRB2_SYSTEM_BITS} EQUAL 32) + target_link_libraries(SRB2SDL2 PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/../../libs/drmingw/lib/win32/libexchndl.a" + "${CMAKE_CURRENT_SOURCE_DIR}/../../libs/drmingw/lib/win32/libmgwhelp.a" + ) + target_include_directories(SRB2SDL2 PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../libs/drmingw/include") + endif() + #target_link_libraries(SRB2SDL2 PRIVATE SRB2Core) if(${SRB2_USEASM}) From d3287c044d81c6b99622609067c4f51051e09a6a Mon Sep 17 00:00:00 2001 From: Eidolon Date: Tue, 23 Aug 2022 21:29:06 -0500 Subject: [PATCH 5/7] cmake: add objects CMakeLists.txt --- src/objects/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/objects/CMakeLists.txt diff --git a/src/objects/CMakeLists.txt b/src/objects/CMakeLists.txt new file mode 100644 index 000000000..4e9c67d2f --- /dev/null +++ b/src/objects/CMakeLists.txt @@ -0,0 +1 @@ +target_sourcefile(c) From 37d08577625e3dd69f404c5e6c022b9bfe01c9e0 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Tue, 23 Aug 2022 21:32:29 -0500 Subject: [PATCH 6/7] cmake: move debug strip to src/CMakeLists.txt --- src/CMakeLists.txt | 16 ++++++++++++++++ src/sdl/CMakeLists.txt | 16 ---------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1b9acfe5f..d08fe0faa 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -301,6 +301,22 @@ target_compile_definitions(SRB2SDL2 PRIVATE -DCMAKECONFIG) # ${SRB2_BLUA_HEADERS} #) +## strip debug symbols into separate file when using gcc. +## to be consistent with Makefile, don't generate for OS X. +if((CMAKE_COMPILER_IS_GNUCC) AND NOT (${CMAKE_SYSTEM} MATCHES Darwin)) + if((${CMAKE_BUILD_TYPE} MATCHES Debug) OR (${CMAKE_BUILD_TYPE} MATCHES RelWithDebInfo)) + if(${CMAKE_BUILD_TYPE} MATCHES Debug) + set(OBJCOPY_ONLY_KEEP_DEBUG "--only-keep-debug") + endif() + message(STATUS "Will make separate debug symbols in *.debug") + add_custom_command(TARGET SRB2SDL2 POST_BUILD + COMMAND ${OBJCOPY} ${OBJCOPY_ONLY_KEEP_DEBUG} $ $.debug + COMMAND ${OBJCOPY} --strip-debug $ + COMMAND ${OBJCOPY} --add-gnu-debuglink=$.debug $ + ) + endif() +endif() + add_subdirectory(sdl) add_subdirectory(objects) diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt index ae8fa4e15..66818b3ae 100644 --- a/src/sdl/CMakeLists.txt +++ b/src/sdl/CMakeLists.txt @@ -179,22 +179,6 @@ if(${SDL2_FOUND}) -DHAVE_THREADS ) - ## strip debug symbols into separate file when using gcc. - ## to be consistent with Makefile, don't generate for OS X. - if((CMAKE_COMPILER_IS_GNUCC) AND NOT (${CMAKE_SYSTEM} MATCHES Darwin)) - if((${CMAKE_BUILD_TYPE} MATCHES Debug) OR (${CMAKE_BUILD_TYPE} MATCHES RelWithDebInfo)) - if(${CMAKE_BUILD_TYPE} MATCHES Debug) - set(OBJCOPY_ONLY_KEEP_DEBUG "--only-keep-debug") - endif() - message(STATUS "Will make separate debug symbols in *.debug") - add_custom_command(TARGET SRB2SDL2 POST_BUILD - COMMAND ${OBJCOPY} ${OBJCOPY_ONLY_KEEP_DEBUG} $ $.debug - COMMAND ${OBJCOPY} --strip-debug $ - COMMAND ${OBJCOPY} --add-gnu-debuglink=$.debug $ - ) - endif() - endif() - #### Installation #### if(${CMAKE_SYSTEM} MATCHES Darwin) install(TARGETS SRB2SDL2 From 91a404c190ae925ce4d2f8b2a832141a0f1dde7b Mon Sep 17 00:00:00 2001 From: Eidolon Date: Tue, 23 Aug 2022 21:44:25 -0500 Subject: [PATCH 7/7] cmake: rename executable --- src/sdl/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt index 66818b3ae..65550906e 100644 --- a/src/sdl/CMakeLists.txt +++ b/src/sdl/CMakeLists.txt @@ -79,11 +79,11 @@ if(${SDL2_FOUND}) endif() if(${CMAKE_SYSTEM} MATCHES Windows) - set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME srb2win) + set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME srb2kart) elseif(${CMAKE_SYSTEM} MATCHES Linux) - set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME lsdlsrb2) + set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME lsdlsrb2kart) else() - set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME srb2) + set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME srb2kart) endif() if(${CMAKE_SYSTEM} MATCHES Darwin)