diff --git a/.gitignore b/.gitignore index 315b02aa85..dfc0fbdf96 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,5 @@ oprofile_data/ /out/build/x64-Debug (default) CMakeSettings.json +/ci-artifacts/ +/out/ diff --git a/cmake/Pcsx2Utils.cmake b/cmake/Pcsx2Utils.cmake index e50eacb36b..05b109701c 100644 --- a/cmake/Pcsx2Utils.cmake +++ b/cmake/Pcsx2Utils.cmake @@ -38,6 +38,7 @@ endfunction() function(get_git_version_info) set(PCSX2_WC_TIME 0) set(PCSX2_GIT_REV "") + set(PCSX2_GIT_TAG "") if (GIT_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.git) EXECUTE_PROCESS(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} show -s --format=%ci HEAD OUTPUT_VARIABLE PCSX2_WC_TIME @@ -50,6 +51,11 @@ function(get_git_version_info) OUTPUT_VARIABLE PCSX2_GIT_REV OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) + + EXECUTE_PROCESS(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} tag --points-at HEAD + OUTPUT_VARIABLE PCSX2_GIT_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) endif() if(PCSX2_GIT_REV) set(PCSX2_VERSION_LONG "${PCSX2_GIT_REV}") @@ -69,7 +75,11 @@ function(get_git_version_info) endfunction() function(write_svnrev_h) - file(WRITE ${CMAKE_BINARY_DIR}/common/include/svnrev.h "#define SVN_REV ${PCSX2_WC_TIME}ll \n#define SVN_MODS 0\n#define GIT_REV \"${PCSX2_GIT_REV}\"\n") + if(PCSX2_GIT_TAG) + file(WRITE ${CMAKE_BINARY_DIR}/common/include/svnrev.h "#define SVN_REV ${PCSX2_WC_TIME}ll \n#define GIT_TAG \"${PCSX2_GIT_TAG}\"\n#define GIT_TAGGED_COMMIT 1\n#define GIT_REV \"\"\n") + else() + file(WRITE ${CMAKE_BINARY_DIR}/common/include/svnrev.h "#define SVN_REV ${PCSX2_WC_TIME}ll \n#define GIT_TAG \"${PCSX2_GIT_TAG}\"\n#define GIT_TAGGED_COMMIT 0\n#define GIT_REV \"${PCSX2_GIT_REV}\"\n") + endif() endfunction() function(check_compiler_version version_warn version_err) diff --git a/common/vsprops/preBuild.cmd b/common/vsprops/preBuild.cmd index f4194a6e72..a107662886 100644 --- a/common/vsprops/preBuild.cmd +++ b/common/vsprops/preBuild.cmd @@ -23,7 +23,11 @@ FOR /F "tokens=1-2" %%i IN ('"git show -s --format=%%%ci HEAD 2> NUL"') do ( ) FOR /F %%i IN ('"git describe 2> NUL"') do ( - set GIT_REV=%%i + set GIT_REV=%%i +) + +FOR /F "tokens=* USEBACKQ" %%i IN (`git tag --points-at HEAD`) DO ( + set GIT_TAG=%%i ) set REV2=%REV3: =% @@ -40,12 +44,24 @@ if %ERRORLEVEL% NEQ 0 ( echo #define SVN_REV_UNKNOWN > "%CD%\svnrev.h" echo #define SVN_REV 0ll >> "%CD%\svnrev.h" - echo #define SVN_MODS 0 >> "%CD%\svnrev.h" echo #define GIT_REV "" >> "%CD%\svnrev.h" + echo #define GIT_TAG "" >> "%CD%\svnrev.h" + echo #define GIT_TAGGED_COMMIT 0 >> "%CD%\svnrev.h" ) else ( - echo #define SVN_REV %REV%ll > "%CD%\svnrev.h" - echo #define SVN_MODS 0 /* Not implemented at the moment. */ >> "%CD%\svnrev.h" - echo #define GIT_REV "%GIT_REV%" >> "%CD%\svnrev.h" + :: Support New Tagged Release Model + if [%GIT_TAG%] NEQ [] ( + echo Detected that the current commit is tagged, using that! + echo #define SVN_REV_UNKNOWN > "%CD%\svnrev.h" + echo #define SVN_REV 0ll >> "%CD%\svnrev.h" + echo #define GIT_REV "" >> "%CD%\svnrev.h" + echo #define GIT_TAG "%GIT_TAG%" >> "%CD%\svnrev.h" + echo #define GIT_TAGGED_COMMIT 1 >> "%CD%\svnrev.h" + ) else ( + echo #define SVN_REV %REV%ll > "%CD%\svnrev.h" + echo #define GIT_REV "%GIT_REV%" >> "%CD%\svnrev.h" + echo #define GIT_TAG "" >> "%CD%\svnrev.h" + echo #define GIT_TAGGED_COMMIT 0 >> "%CD%\svnrev.h" + ) ) ENDLOCAL diff --git a/pcsx2/IPC.cpp b/pcsx2/IPC.cpp index 63a6f947e4..6ad60c801d 100644 --- a/pcsx2/IPC.cpp +++ b/pcsx2/IPC.cpp @@ -381,7 +381,16 @@ SocketIPC::IPCBuffer SocketIPC::ParseCommand(char* buf, char* ret_buffer, u32 bu case MsgVersion: { char version[256] = {}; - sprintf(version, "PCSX2 %u.%u.%u-%lld %s", PCSX2_VersionHi, PCSX2_VersionMid, PCSX2_VersionLo, SVN_REV, SVN_MODS ? "(modded)" : ""); + if (GIT_TAGGED_COMMIT) // Nightly builds + { + // tagged commit - more modern implementation of dev build versioning + // - there is no need to include the commit - that is associated with the tag, git is implied + sprintf(version, "PCSX2 Nightly - %s", GIT_TAG); + } + else + { + sprintf(version, "PCSX2 %u.%u.%u-%lld", PCSX2_VersionHi, PCSX2_VersionMid, PCSX2_VersionLo, SVN_REV); + } version[255] = 0x00; if (!SafetyChecks(buf_cnt, 0, ret_cnt, 256, buf_size)) goto error; diff --git a/pcsx2/System.cpp b/pcsx2/System.cpp index bcb48c2bae..a4893bb410 100644 --- a/pcsx2/System.cpp +++ b/pcsx2/System.cpp @@ -156,13 +156,21 @@ void SysLogMachineCaps() { if ( !PCSX2_isReleaseVersion ) { - Console.WriteLn(Color_StrongGreen, "\nPCSX2 %u.%u.%u-%lld %s" + if (GIT_TAGGED_COMMIT) // Nightly builds + { + // tagged commit - more modern implementation of dev build versioning + // - there is no need to include the commit - that is associated with the tag, + // - git is implied and the tag is timestamped + Console.WriteLn(Color_StrongGreen, "\nPCSX2 Nightly - %s", GIT_TAG); + } else { + Console.WriteLn(Color_StrongGreen, "\nPCSX2 %u.%u.%u-%lld" #ifndef DISABLE_BUILD_DATE - "- compiled on " __DATE__ + "- compiled on " __DATE__ #endif - , PCSX2_VersionHi, PCSX2_VersionMid, PCSX2_VersionLo, - SVN_REV, SVN_MODS ? "(modded)" : "" - ); + , + PCSX2_VersionHi, PCSX2_VersionMid, PCSX2_VersionLo, + SVN_REV); + } } else { // shorter release version string Console.WriteLn(Color_StrongGreen, "PCSX2 %u.%u.%u-%lld" diff --git a/pcsx2/gui/MainFrame.cpp b/pcsx2/gui/MainFrame.cpp index de78a502e5..91fb9fd5ab 100644 --- a/pcsx2/gui/MainFrame.cpp +++ b/pcsx2/gui/MainFrame.cpp @@ -621,6 +621,12 @@ MainEmuFrame::MainEmuFrame(wxWindow* parent, const wxString& title) // stable releases, with a simple title. wintitle.Printf(L"%s %d.%d.%d", pxGetAppName().c_str(), PCSX2_VersionHi, PCSX2_VersionMid, PCSX2_VersionLo); } + else if (GIT_TAGGED_COMMIT) // Nightly builds + { + // tagged commit - more modern implementation of dev build versioning + // - there is no need to include the commit - that is associated with the tag, git is implied + wintitle.Printf(L"%s Nightly - %s", pxGetAppName().c_str(), GIT_TAG); + } else { // beta / development editions, which feature revision number and compile date. @@ -630,8 +636,8 @@ MainEmuFrame::MainEmuFrame(wxWindow* parent, const wxString& title) } else { - wintitle.Printf(L"%s %d.%d.%d-%lld%s (git)", pxGetAppName().c_str(), PCSX2_VersionHi, PCSX2_VersionMid, - PCSX2_VersionLo, SVN_REV, SVN_MODS ? L"m" : wxEmptyString); + wintitle.Printf(L"%s %d.%d.%d-%lld (git)", pxGetAppName().c_str(), PCSX2_VersionHi, PCSX2_VersionMid, + PCSX2_VersionLo, SVN_REV); } }