diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 53eeb5248..d08fe0faa 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -301,13 +301,25 @@ 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) -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() 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)); } 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) diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt index 65ff383ed..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) @@ -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}) @@ -168,24 +176,9 @@ if(${SDL2_FOUND}) target_compile_definitions(SRB2SDL2 PRIVATE -DDIRECTFULLSCREEN -DHAVE_SDL + -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