diff --git a/Source/Installer/Installer.iss b/Source/Installer/Installer.iss index 7d0c180d5..28fde4054 100644 --- a/Source/Installer/Installer.iss +++ b/Source/Installer/Installer.iss @@ -5,11 +5,11 @@ AppId={{BEB5FB69-4080-466F-96C4-F15DF271718B} AppName=Project64 AppVersion={#AppVersion} -DefaultDirName={pf32}\Project64 2.3 +DefaultDirName={pf32}\Project64 Dev 3.0 VersionInfoVersion={#AppVersion} OutputDir={#BaseDir}\Bin\{#Configuration} -OutputBaseFilename=Setup Project64 2.3 -VersionInfoDescription=Installation Setup of Project64 2.3 +OutputBaseFilename=Setup Project64 Dev 3.0 +VersionInfoDescription=Installation Setup of Project64 Dev 3.0 Compression=lzma2/ultra64 WizardImageFile=Installer-Sidebar.bmp WizardSmallImageFile=Pj64LogoSmallImage.bmp diff --git a/Source/Project64-audio/Version.h.in b/Source/Project64-audio/Version.h.in index 6b7191081..38b7cc5f9 100644 --- a/Source/Project64-audio/Version.h.in +++ b/Source/Project64-audio/Version.h.in @@ -1,15 +1,20 @@ #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) -#define VERSION_MAJOR 1 +#define VERSION_MAJOR 3 #define VERSION_MINOR 0 -#define VERSION_REVISION 1 +#define VERSION_REVISION 0 #define VERSION_BUILD 9999 -#define GIT_VERSION "" +#define VERSION_PREFIX "Dev-" + +#define GIT_REVISION "" +#define GIT_REVISION_SHORT "" +#define GIT_DIRTY "" +#define GIT_VERSION "Unknown" #define VER_FILE_DESCRIPTION_STR "Project64-audio" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD -#define VER_FILE_VERSION_STR STRINGIZE(VERSION_MAJOR) \ +#define VER_FILE_VERSION_STR VERSION_PREFIX STRINGIZE(VERSION_MAJOR) \ "." STRINGIZE(VERSION_MINOR) \ "." STRINGIZE(VERSION_REVISION) \ "." STRINGIZE(VERSION_BUILD) \ diff --git a/Source/Project64-core/Project64-core.vcxproj b/Source/Project64-core/Project64-core.vcxproj index 108b4ff60..b5ea8a949 100644 --- a/Source/Project64-core/Project64-core.vcxproj +++ b/Source/Project64-core/Project64-core.vcxproj @@ -247,4 +247,7 @@ {1968162c-0793-491d-91a1-81645a24d399} + + + \ No newline at end of file diff --git a/Source/Project64-core/Project64-core.vcxproj.filters b/Source/Project64-core/Project64-core.vcxproj.filters index 1800e122d..b4cc7a264 100644 --- a/Source/Project64-core/Project64-core.vcxproj.filters +++ b/Source/Project64-core/Project64-core.vcxproj.filters @@ -348,6 +348,9 @@ Source Files\N64 System\Enhancement + + Source Files + @@ -669,4 +672,9 @@ Header Files\N64 System\Enhancement + + + Resource Files + + \ No newline at end of file diff --git a/Source/Project64-core/Version.h.in b/Source/Project64-core/Version.h.in index 8c49cf055..17c7716c0 100644 --- a/Source/Project64-core/Version.h.in +++ b/Source/Project64-core/Version.h.in @@ -1,21 +1,20 @@ #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) -#ifdef ANDROID -#define VERSION_MAJOR 2 -#define VERSION_MINOR 3 -#define VERSION_REVISION 3 -#else -#define VERSION_MAJOR 2 -#define VERSION_MINOR 4 +#define VERSION_MAJOR 3 +#define VERSION_MINOR 0 #define VERSION_REVISION 0 -#endif #define VERSION_BUILD 9999 -#define GIT_VERSION "" +#define VERSION_PREFIX "Dev-" + +#define GIT_REVISION "" +#define GIT_REVISION_SHORT "" +#define GIT_DIRTY "" +#define GIT_VERSION "Unknown" #define VER_FILE_DESCRIPTION_STR "Project64" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD -#define VER_FILE_VERSION_STR STRINGIZE(VERSION_MAJOR) \ +#define VER_FILE_VERSION_STR VERSION_PREFIX STRINGIZE(VERSION_MAJOR) \ "." STRINGIZE(VERSION_MINOR) \ "." STRINGIZE(VERSION_REVISION) \ "." STRINGIZE(VERSION_BUILD) \ diff --git a/Source/Project64-input/Version.h.in b/Source/Project64-input/Version.h.in index 00c3dfcc5..79defbcec 100644 --- a/Source/Project64-input/Version.h.in +++ b/Source/Project64-input/Version.h.in @@ -1,15 +1,20 @@ #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) -#define VERSION_MAJOR 1 +#define VERSION_MAJOR 3 #define VERSION_MINOR 0 #define VERSION_REVISION 0 #define VERSION_BUILD 9999 -#define GIT_VERSION "" +#define VERSION_PREFIX "Dev-" + +#define GIT_REVISION "" +#define GIT_REVISION_SHORT "" +#define GIT_DIRTY "" +#define GIT_VERSION "Unknown" #define VER_FILE_DESCRIPTION_STR "Project64-input" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD -#define VER_FILE_VERSION_STR STRINGIZE(VERSION_MAJOR) \ +#define VER_FILE_VERSION_STR VERSION_PREFIX STRINGIZE(VERSION_MAJOR) \ "." STRINGIZE(VERSION_MINOR) \ "." STRINGIZE(VERSION_REVISION) \ "." STRINGIZE(VERSION_BUILD) \ diff --git a/Source/Project64-video/Version.h.in b/Source/Project64-video/Version.h.in index c58f21bee..e7e4552d5 100644 --- a/Source/Project64-video/Version.h.in +++ b/Source/Project64-video/Version.h.in @@ -1,15 +1,20 @@ #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) -#define VERSION_MAJOR 2 -#define VERSION_MINOR 2 +#define VERSION_MAJOR 3 +#define VERSION_MINOR 0 #define VERSION_REVISION 0 #define VERSION_BUILD 9999 -#define GIT_VERSION "" +#define VERSION_PREFIX "Dev-" + +#define GIT_REVISION "" +#define GIT_REVISION_SHORT "" +#define GIT_DIRTY "" +#define GIT_VERSION "Unknown" #define VER_FILE_DESCRIPTION_STR "Project64-video" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD -#define VER_FILE_VERSION_STR STRINGIZE(VERSION_MAJOR) \ +#define VER_FILE_VERSION_STR VERSION_PREFIX STRINGIZE(VERSION_MAJOR) \ "." STRINGIZE(VERSION_MINOR) \ "." STRINGIZE(VERSION_REVISION) \ "." STRINGIZE(VERSION_BUILD) \ diff --git a/Source/RSP/Version.h.in b/Source/RSP/Version.h.in index 998b3fcb4..eaf0830f6 100644 --- a/Source/RSP/Version.h.in +++ b/Source/RSP/Version.h.in @@ -1,21 +1,26 @@ #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) -#define VERSION_MAJOR 1 -#define VERSION_MINOR 7 -#define VERSION_REVISION 4 +#define VERSION_MAJOR 3 +#define VERSION_MINOR 0 +#define VERSION_REVISION 0 #define VERSION_BUILD 9999 -#define GIT_VERSION "" +#define VERSION_PREFIX "Dev-" -#define VER_FILE_DESCRIPTION_STR "RSP emulation plugin" +#define GIT_REVISION "" +#define GIT_REVISION_SHORT "" +#define GIT_DIRTY "" +#define GIT_VERSION "Unknown" + +#define VER_FILE_DESCRIPTION_STR "Project64-RSP" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD -#define VER_FILE_VERSION_STR STRINGIZE(VERSION_MAJOR) \ +#define VER_FILE_VERSION_STR VERSION_PREFIX STRINGIZE(VERSION_MAJOR) \ "." STRINGIZE(VERSION_MINOR) \ "." STRINGIZE(VERSION_REVISION) \ "." STRINGIZE(VERSION_BUILD) \ "-" GIT_VERSION -#define VER_PRODUCTNAME_STR "RSP" +#define VER_PRODUCTNAME_STR "Project64-RSP" #define VER_PRODUCT_VERSION VER_FILE_VERSION #define VER_PRODUCT_VERSION_STR VER_FILE_VERSION_STR #define VER_ORIGINAL_FILENAME_STR VER_PRODUCTNAME_STR ".dll" diff --git a/Source/Script/SetGitProperties.cmd b/Source/Script/SetGitProperties.cmd index b2aec39c7..bbd83c8a3 100644 --- a/Source/Script/SetGitProperties.cmd +++ b/Source/Script/SetGitProperties.cmd @@ -6,24 +6,21 @@ cd /d %~dp0..\.. set base_dir=%cd% cd /d %origdir% -for /f %%i in ('git describe --tags --long') do set GIT_DESCRIBE=%%i > nul +for /f %%i in ('git rev-parse --short HEAD') do set GIT_REVISION_SHORT=%%i > nul +for /f %%i in ('git rev-list --count HEAD') do set GIT_BUILD_VERSION=%%i > nul -for /F "tokens=1,2,3 delims=-" %%i in ("%GIT_DESCRIBE%") do call :process_git_desc %%i %%j %%k for /F "tokens=1,2,3" %%i in (%base_dir%\Source\Project64-core\version.h.in) do call :process_version %%i %%j %%k -set VERSION=v%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_REVISION%-%VERSION_BUILD%-%VERSION_COMMIT% +set GIT_REVISION_SHORT=%GIT_REVISION_SHORT: =% +set GIT_BUILD_VERSION=%GIT_BUILD_VERSION: =% +set VERSION=%VERSION_PREFIX%%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_REVISION%-%GIT_BUILD_VERSION%-%GIT_REVISION_SHORT% echo %VERSION% echo GIT_DESCRIBE = %VERSION% > "%base_dir%\git.properties" goto :EOF - -:process_git_desc -set VERSION_BUILD=%2 -set VERSION_COMMIT=%3 -goto :EOF - :process_version if "%1" == "#define" if "%2" == "VERSION_MAJOR" set VERSION_MAJOR=%3 if "%1" == "#define" if "%2" == "VERSION_MINOR" set VERSION_MINOR=%3 if "%1" == "#define" if "%2" == "VERSION_REVISION" set VERSION_REVISION=%3 +if "%1" == "#define" if "%2" == "VERSION_PREFIX" set VERSION_PREFIX=%~3 goto :EOF diff --git a/Source/UpdateVersion/UpdateVersion.cpp b/Source/UpdateVersion/UpdateVersion.cpp index 36e72e874..ba05b0204 100644 --- a/Source/UpdateVersion/UpdateVersion.cpp +++ b/Source/UpdateVersion/UpdateVersion.cpp @@ -4,6 +4,111 @@ #include #include +bool GitCommand(CPath & SourceDirectory, const char * Command, std::string & Output) +{ + CPath CurrentDir(CPath::CURRENT_DIRECTORY); + if (CurrentDir != SourceDirectory) + { + SourceDirectory.ChangeDirectory(); + } + Output.clear(); + FILE * pipe = _popen(stdstr_f("git %s", Command).c_str(), "r"); + if (pipe == nullptr) + { + if (CurrentDir != SourceDirectory) + { + CurrentDir.ChangeDirectory(); + } + return false; + } + + char buffer[128]; + + while (!feof(pipe)) + { + // use buffer to read and add to result + if (fgets(buffer, 128, pipe) != NULL) + { + Output += buffer; + } + } + if (CurrentDir != SourceDirectory) + { + CurrentDir.ChangeDirectory(); + } + if (feof(pipe)) + { + _pclose(pipe); + return true; + } + return false; +} + +uint32_t GitBuildVersion(CPath & SourceDirectory) +{ + enum + { + DefaultBuildVersion = 9999 + }; + std::string Result; + if (!GitCommand(SourceDirectory, "rev-list --count HEAD", Result)) + { + return DefaultBuildVersion; + } + if (Result.empty()) + { + return DefaultBuildVersion; + } + uint32_t BuildVersion = atoi(Result.c_str()); + if (BuildVersion != 0) + { + return BuildVersion; + } + return 9999; +} + +bool GitBuildDirty(CPath & SourceDirectory) +{ + std::string Result; + if (!GitCommand(SourceDirectory, "diff --stat", Result)) + { + return false; + } + return !Result.empty(); +} + +std::string GitRevision(CPath & SourceDirectory) +{ + stdstr Result; + if (!GitCommand(SourceDirectory, "rev-parse HEAD", Result)) + { + return ""; + } + Result.Replace("\r", ""); + strvector ResultVector = Result.Tokenize("\n"); + if (ResultVector.size() > 0) + { + return ResultVector[0]; + } + return ""; +} + +std::string GitRevisionShort(CPath & SourceDirectory) +{ + stdstr Result; + if (!GitCommand(SourceDirectory, "rev-parse --short HEAD", Result)) + { + return ""; + } + Result.Replace("\r", ""); + strvector ResultVector = Result.Tokenize("\n"); + if (ResultVector.size() > 0) + { + return ResultVector[0]; + } + return ""; +} + int main() { if (__argc < 4) @@ -25,6 +130,12 @@ int main() } } + CPath SourceDirectory(SourceFile.GetDriveDirectory(), ""); + uint32_t VersionBuild = GitBuildVersion(SourceDirectory); + bool BuildDirty = GitBuildDirty(SourceDirectory); + std::string Revision = GitRevision(SourceDirectory); + std::string RevisionShort = GitRevisionShort(SourceDirectory); + CFile InFile(SourceFile, CFileBase::modeRead); if (!InFile.IsOpen()) { @@ -36,16 +147,6 @@ int main() InFile.Read(InputData.get(), FileLen); strvector VersionData = stdstr(std::string((char *)InputData.get(), FileLen)).Tokenize("\n"); - strvector verinfo = stdstr(__argv[3]).Tokenize('-'); - if (verinfo.size() < 3 || verinfo.size() > 4) - { - return 0; - } - if (verinfo.size() == 4) - { - verinfo[2] += "-" + verinfo[3]; - } - CFile OutFile(DestFile, CFileBase::modeWrite | CFileBase::modeCreate); if (!OutFile.IsOpen()) { @@ -56,13 +157,25 @@ int main() { stdstr &line = VersionData[i]; line += "\n"; - if (_strnicmp(line.c_str(), "#define VERSION_BUILD", 21) == 0) + if (_strnicmp(line.c_str(), "#define GIT_VERSION ", 20) == 0) { - line = "#define VERSION_BUILD " + verinfo[1] + "\n"; + line.Format("#define GIT_VERSION \"%s%s%s\"\n", RevisionShort.c_str(), BuildDirty ? "-" : "", BuildDirty ? "Dirty" : ""); } - if (_strnicmp(line.c_str(), "#define GIT_VERSION", 18) == 0) + else if (_strnicmp(line.c_str(), "#define VERSION_BUILD", 21) == 0) { - line = "#define GIT_VERSION \"" + verinfo[2] + "\"\n"; + line.Format("#define VERSION_BUILD %d\n", VersionBuild); + } + else if (_strnicmp(line.c_str(), "#define GIT_REVISION ", 21) == 0) + { + line.Format("#define GIT_REVISION \"%s\"\n", Revision.c_str()); + } + else if (_strnicmp(line.c_str(), "#define GIT_REVISION_SHORT ", 26) == 0) + { + line.Format("#define GIT_REVISION_SHORT \"%s\"\n", RevisionShort.c_str()); + } + else if (_strnicmp(line.c_str(), "#define GIT_DIRTY ", 11) == 0) + { + line.Format("#define GIT_DIRTY \"%s\"\n", BuildDirty ? "Dirty" : ""); } if (!OutFile.Write(line.c_str(), (uint32_t)line.length())) { diff --git a/Source/nragev20/Version.h.in b/Source/nragev20/Version.h.in index 4dc7e828e..71f953022 100644 --- a/Source/nragev20/Version.h.in +++ b/Source/nragev20/Version.h.in @@ -23,19 +23,20 @@ #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) -#define VERSION_MAJOR 2 -#define VERSION_MINOR 5 -#define VERSION_REVISION 3 -#ifndef VERSION_BUILD +#define VERSION_MAJOR 3 +#define VERSION_MINOR 0 +#define VERSION_REVISION 0 #define VERSION_BUILD 9999 -#endif -#ifndef GIT_VERSION -#define GIT_VERSION "" -#endif +#define VERSION_PREFIX "Dev-" + +#define GIT_REVISION "" +#define GIT_REVISION_SHORT "" +#define GIT_DIRTY "" +#define GIT_VERSION "Unknown" #define VER_FILE_DESCRIPTION_STR "N-Rage for Project64" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD -#define VER_FILE_VERSION_STR STRINGIZE(VERSION_MAJOR) \ +#define VER_FILE_VERSION_STR VERSION_PREFIX STRINGIZE(VERSION_MAJOR) \ "." STRINGIZE(VERSION_MINOR) \ "." STRINGIZE(VERSION_REVISION) \ "." STRINGIZE(VERSION_BUILD) \ @@ -46,7 +47,7 @@ #define VER_PRODUCT_VERSION_STR VER_FILE_VERSION_STR #define VER_ORIGINAL_FILENAME_STR VER_PRODUCTNAME_STR ".dll" #define VER_INTERNAL_NAME_STR VER_PRODUCTNAME_STR -#define VER_COPYRIGHT_STR "Copyright (C) 2017" +#define VER_COPYRIGHT_STR "Copyright (C) 2021" #ifdef _DEBUG #define VER_VER_DEBUG VS_FF_DEBUG