浏览代码

Merge pull request #38 from sdlpal/show_git_rev

Show Git revision: Windows & Linux & Android

* Fix Makefile-based builds
Yihua LOU 7 年之前
父节点
当前提交
cf2a642f61

+ 2 - 0
.gitignore

@@ -241,6 +241,8 @@ unix/sdlpal
 sdlpal.cfg
 data
 
+generated.h
+
 *.Td
 *.d
 

+ 3 - 2
android/app/src/main/cpp/Android.mk

@@ -5,6 +5,7 @@ SDL_PATH := $(SDLPAL_PATH)/3rd/SDL
 include $(SDL_PATH)/Android.mk
 
 include $(CLEAR_VARS)
+GENERATED := -DPAL_HAS_GIT_REVISION $(shell $(SDLPAL_PATH)/scripts/gengitrev)
 LOCAL_PATH := $(NDK_LOCAL_PATH)
 LOCAL_MODULE := main
 
@@ -21,9 +22,9 @@ LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \
     $(wildcard $(LOCAL_PATH)/*.cpp) \
     $(wildcard $(LOCAL_PATH)/*.c)
 
-LOCAL_CFLAGS += -std=gnu99 -DPAL_HAS_PLATFORM_SPECIFIC_UTILS
+LOCAL_CFLAGS += -std=gnu99 -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(GENERATED)
 
-LOCAL_CPPFLAGS += -std=c++11
+LOCAL_CPPFLAGS += -std=c++11 -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(GENERATED)
 
 LOCAL_SHARED_LIBRARIES := SDL2
 

+ 12 - 0
android/app/src/main/cpp/android_jni.cpp

@@ -14,6 +14,7 @@
 #include "global.h"
 #include "palcfg.h"
 #include "util.h"
+#include "generated.h"
 
 #include <string>
 
@@ -83,6 +84,17 @@ JNIEXPORT void JNICALL Java_io_github_sdlpal_PalActivity_setScreenSize(JNIEnv *e
     g_screenHeight = height;
 }
 
+/*
+ * Class:     io_github_sdlpal_SettingsActivity
+ * Method:    getGitRevision
+ * Signature: (V)Ljava/lang/String;
+ */
+EXTERN_C_LINKAGE
+JNIEXPORT jstring JNICALL Java_io_github_sdlpal_SettingsActivity_getGitRevision(JNIEnv *env, jclass cls)
+{
+    return env->NewStringUTF(PAL_GIT_REVISION);
+}
+
 /*
  * Class:     io_github_sdlpal_SettingsActivity
  * Method:    loadConfigFile

+ 2 - 0
android/app/src/main/java/io/github/sdlpal/SettingsActivity.java

@@ -29,6 +29,7 @@ public class SettingsActivity extends AppCompatActivity {
     public static native boolean setConfigBoolean(String item, boolean value);
     public static native boolean setConfigInt(String item, int value);
     public static native boolean setConfigString(String item, String value);
+    public static native String getGitRevision();
 
     private static final String KeepAspectRatio = "KeepAspectRatio";
     private static final String LaunchSetting = "LaunchSetting";
@@ -66,6 +67,7 @@ public class SettingsActivity extends AppCompatActivity {
         setContentView(R.layout.activity_settings);
         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
         setSupportActionBar(toolbar);
+        toolbar.setSubtitle(getResources().getString(R.string.title_settings) + " (" + getGitRevision() + ")");
 
         ((SwitchCompat)findViewById(R.id.swMsgFile)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override

+ 1 - 1
android/app/src/main/res/layout/activity_settings.xml

@@ -17,7 +17,7 @@
             android:layout_height="?attr/actionBarSize"
             app:popupTheme="@style/AppTheme.PopupOverlay"
             app:subtitle="@string/title_settings"
-            app:title="SDLPal" />
+            app:title="@string/app_name" />
 
     </android.support.design.widget.AppBarLayout>
 

+ 5 - 0
common.h

@@ -168,6 +168,11 @@ typedef const WCHAR        *LPCWSTR;
  */
 #include "pal_config.h"
 
+#if defined(PAL_HAS_GIT_REVISION)
+# undef PAL_GIT_REVISION
+# include "generated.h"
+#endif
+
 #ifndef PAL_DEFAULT_FULLSCREEN_HEIGHT
 # define PAL_DEFAULT_FULLSCREEN_HEIGHT PAL_DEFAULT_WINDOW_HEIGHT
 #endif

+ 1 - 1
main.c

@@ -108,7 +108,7 @@ PAL_Init(
 #else
 	   "",
 #endif
-#if defined(PAL_GIT_REVISION)
+#if defined(PAL_HAS_GIT_REVISION) && defined(PAL_GIT_REVISION)
 	   " ["  PAL_GIT_REVISION "] "
 #else
 	   ""

+ 18 - 0
scripts/gengitrev

@@ -0,0 +1,18 @@
+#!/bin/bash
+
+PAL_GIT_REVISION=$(git describe --tags 2> /dev/null)
+
+if [ -z "$PAL_GIT_REVISION" ]; then
+    PAL_GIT_REVISION=$(date -d @$(stat -c %Y ../.gitignore) +"%F %T")
+fi
+
+LINE="#define PAL_GIT_REVISION \"$PAL_GIT_REVISION\""
+FILE="$(dirname $0)/../generated.h"
+
+grep -F "$LINE" "$FILE" >/dev/null 2>&1
+if [ $? -ne 0 ]; then
+  echo Generating Git revision header... 1>&2
+  echo "$LINE" > "$FILE"
+fi
+
+echo -ne

+ 13 - 0
scripts/gengitrev.bat

@@ -0,0 +1,13 @@
+@echo off
+setlocal enableextensions
+setlocal enabledelayedexpansion
+for /f %%t in ('git describe --tags') do set PAL_GIT_REVISION=%%t
+if "!PAL_GIT_REVISION!" == "" (
+	for %%t in (%~dp0..\.gitignore) do set PAL_GIT_REVISION=%%~tt
+)
+findstr /c:"#define PAL_GIT_REVISION \"!PAL_GIT_REVISION!\"" "%~dp0..\generated.h" >nul 2>&1
+if errorlevel 1 (
+    echo Generating Git revision header... 1>&2
+    echo #define PAL_GIT_REVISION "!PAL_GIT_REVISION!" > "%~dp0..\generated.h"
+)
+exit /b 0

+ 3 - 1
unix/Makefile

@@ -6,6 +6,8 @@ TEST_TARGET = ./sdlpal-tests
 HOST =
 TEST_CCFLAGS =
 
+GENERATED = -DPAL_HAS_GIT_REVISION $(shell ../scripts/gengitrev)
+
 DEPFLAGS = -MT $@ -MMD -MP -MF $*.Td
 
 GTEST_DIR = ../3rd/googletest/googletest
@@ -17,7 +19,7 @@ DEPFILES = $(OBJFILES:.o=.d)
 TEST_CPPFILES = $(wildcard ../tests/*.cpp)
 TEST_OBJFILES = $(TEST_CPPFILES:.cpp=.o)
 
-CCFLAGS = `sdl2-config --cflags` -g -Wall -O2 -fno-strict-aliasing -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS)
+CCFLAGS = `sdl2-config --cflags` -g -Wall -O2 -fno-strict-aliasing -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS) $(GENERATED)
 CXXFLAGS = $(CCFLAGS) -std=c++11 `fltk-config --cxxflags`
 CFLAGS = $(CCFLAGS) -std=gnu99 `fltk-config --cflags`
 LDFLAGS = `sdl2-config --libs` `fltk-config --ldflags` -lstdc++ -lm -pthread

+ 3 - 1
win32/Makefile

@@ -6,6 +6,8 @@ TEST_TARGET = sdlpal-tests.exe
 HOST =
 TEST_CCFLAGS =
 
+GENERATED = -DPAL_HAS_GIT_REVISION $(shell ../scripts/gengitrev)
+
 DEPFLAGS = -MT $@ -MMD -MP -MF $*.Td
 
 GTEST_DIR = ../3rd/googletest/googletest
@@ -18,7 +20,7 @@ DEPFILES = $(CFILES:.c=.d) $(CPPFILES:.cpp=.d)
 TEST_CPPFILES = $(wildcard ../tests/*.cpp)
 TEST_OBJFILES = $(TEST_CPPFILES:.cpp=.o)
 
-override CCFLAGS += `sdl2-config --cflags` -g -msse2 -Wall -O2 -fno-strict-aliasing -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS)
+override CCFLAGS += `sdl2-config --cflags` -g -msse2 -Wall -O2 -fno-strict-aliasing -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS) $(GENERATED)
 CXXFLAGS = $(CCFLAGS) -std=c++11
 CFLAGS = $(CCFLAGS) -std=gnu99
 LDFLAGS = `sdl2-config --libs` -lm -lwinmm -lole32 -loleaut32 -limm32 -lcomctl32 -luuid -ldxguid -lversion -static -static-libgcc -static-libstdc++

+ 4 - 2
win32/Makefile.mingw

@@ -6,6 +6,8 @@ TEST_TARGET = sdlpal-tests.exe
 HOST =
 TEST_CCFLAGS =
 
+GENERATED = -DPAL_HAS_GIT_REVISION $(shell ..\scripts\gengitrev.bat)
+
 DEPFLAGS = -MT $@ -MMD -MP -MF $*.Td
 
 GTEST_DIR = ../3rd/googletest/googletest
@@ -18,7 +20,7 @@ DEPFILES = $(CFILES:.c=.d) $(CPPFILES:.cpp=.d)
 TEST_CPPFILES = $(wildcard ../tests/*.cpp)
 TEST_OBJFILES = $(TEST_CPPFILES:.cpp=.o)
 
-override CCFLAGS += -g -msse2 -Wall -O2 -fno-strict-aliasing -I../3rd/mingw-std-threads -I../3rd/SDL/include -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS)
+override CCFLAGS += -g -msse2 -Wall -O2 -fno-strict-aliasing -I../3rd/mingw-std-threads -I../3rd/SDL/include -I. -I../ -I../liboggvorbis/include -I../liboggvorbis/src -DPAL_HAS_PLATFORM_SPECIFIC_UTILS $(TEST_CCFLAGS) $(GENERATED)
 CXXFLAGS = $(CCFLAGS) -std=c++11
 CFLAGS = $(CCFLAGS) -std=gnu99
 LDFLAGS = -lmingw32 -lSDL2main -lSDL2 -mwindows -lm -lwinmm -lole32 -loleaut32 -limm32 -lcomctl32 -luuid -ldxguid -lversion -static -static-libgcc -static-libstdc++
@@ -58,7 +60,7 @@ $(TEST_TARGET): $(OBJFILES) $(TEST_OBJFILES) gtest-all.o
 	@$(HOST)g++ $^ -o $@ $(LDFLAGS) -pthread
 
 clean:
-	-del /Q $(subst /,\,$(TARGET)) $(subst /,\,$(TEST_TARGET)) $(subst /,\,$(OBJFILES)) $(subst /,\,$(TEST_OBJFILES)) $(subst /,\,$(DEPFILES))
+	-del /Q $(subst /,\,$(TARGET)) $(subst /,\,$(TEST_TARGET)) $(subst /,\,$(OBJFILES)) $(subst /,\,$(TEST_OBJFILES)) $(subst /,\,$(DEPFILES)) 2> NUL
 
 %.d: ;
 .PRECIOUS: %.d

+ 19 - 0
win32/sdlpal.vcxproj

@@ -139,6 +139,9 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
     <Bscmake />
+    <PreBuildEvent>
+      <Command>$(SolutionDir)..\scripts\gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
@@ -160,6 +163,9 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
     <Bscmake />
+    <PreBuildEvent>
+      <Command>$(SolutionDir)..\scripts\gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
@@ -185,6 +191,9 @@
       <TargetMachine>MachineX86</TargetMachine>
     </Link>
     <Bscmake />
+    <PreBuildEvent>
+      <Command>$(SolutionDir)..\scripts\gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Test|Win32'">
     <ClCompile>
@@ -211,6 +220,9 @@
       <SubSystem>Console</SubSystem>
     </Link>
     <Bscmake />
+    <PreBuildEvent>
+      <Command>$(SolutionDir)..\scripts\gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
@@ -233,6 +245,9 @@
       <SubSystem>Windows</SubSystem>
     </Link>
     <Bscmake />
+    <PreBuildEvent>
+      <Command>$(SolutionDir)..\scripts\gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Test|x64'">
     <ClCompile>
@@ -257,6 +272,9 @@
       </AdditionalLibraryDirectories>
     </Link>
     <Bscmake />
+    <PreBuildEvent>
+      <Command>$(SolutionDir)..\scripts\gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClCompile Include="..\3rd\googletest\googletest\src\gtest-all.cc">
@@ -489,6 +507,7 @@
     <ClInclude Include="..\libmad\timer.h" />
     <ClInclude Include="pal_config.h" />
     <ClInclude Include="resource.h" />
+    <ClInclude Include="..\generated.h" />
   </ItemGroup>
   <ItemGroup>
     <None Include="..\sdlpal.cfg.example" />

+ 7 - 0
win32/sdlpal.vcxproj.filters

@@ -60,6 +60,10 @@
     <Filter Include="Test Files\deps">
       <UniqueIdentifier>{5f2a83a2-9824-4e9e-a352-8dc90c92fbde}</UniqueIdentifier>
     </Filter>
+    <Filter Include="generated">
+      <UniqueIdentifier>{85918901-0fba-453a-8dca-fd0665d789b3}</UniqueIdentifier>
+      <SourceControlFiles>False</SourceControlFiles>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\battle.c">
@@ -670,6 +674,9 @@
     <ClInclude Include="resource.h">
       <Filter>Resource Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\generated.h">
+      <Filter>generated</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\sdlpal.ico">

+ 8 - 1
winrt/SDLPal.Common/MainPage.xaml

@@ -11,7 +11,14 @@
         <ScrollViewer HorizontalScrollMode="Disabled">
             <StackPanel VerticalAlignment="Top" Margin="10,0,20,10">
                 <TextBlock Text="SDLPAL" FontSize="48" />
-                <TextBlock x:Uid="Title" Text="设置模式" FontSize="28" VerticalAlignment="Center" />
+                <Grid>
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="Auto"/>
+                        <ColumnDefinition/>
+                    </Grid.ColumnDefinitions>
+                    <TextBlock x:Uid="Title" Text="设置模式" FontSize="28" VerticalAlignment="Center" Grid.Column="0" />
+                    <TextBlock x:Name="tbGitRevision" VerticalAlignment="Bottom" Grid.Column="1" />
+                </Grid>
                 <Grid>
                     <Grid.ColumnDefinitions>
                         <ColumnDefinition/>

+ 3 - 0
winrt/SDLPal.Common/MainPage.xaml.cpp

@@ -9,6 +9,7 @@
 #include "AsyncHelper.h"
 #include "../../global.h"
 #include "../../palcfg.h"
+#include "../../generated.h"
 
 using namespace SDLPal;
 
@@ -45,6 +46,8 @@ MainPage::MainPage()
 	m_acl[PALCFG_FONTFILE] = ref new AccessListEntry(tbFontFile, cbUseFontFile, ConvertString(PAL_ConfigName(PALCFG_FONTFILE)));
 	m_acl[PALCFG_LOGFILE] = ref new AccessListEntry(tbLogFile, cbUseLogFile, ConvertString(PAL_ConfigName(PALCFG_LOGFILE)));
 
+	tbGitRevision->Text = "  " PAL_GIT_REVISION;
+
 	LoadControlContents();
 
 	m_resLdr = Windows::ApplicationModel::Resources::ResourceLoader::GetForCurrentView();

+ 2 - 1
winrt/SDLPal.Common/WinRTUtil.cpp

@@ -158,7 +158,8 @@ INT UTIL_Platform_Init(int argc, char* argv[])
 	auto fal = Windows::Storage::AccessCache::StorageApplicationPermissions::FutureAccessList;
 	for each (auto entry in fal->Entries)
 	{
-		auto item = AWait(fal->GetItemAsync(entry.Token), g_eventHandle);
+		Windows::Storage::IStorageItem^ item = nullptr;
+		try { item = AWait(fal->GetItemAsync(entry.Token), g_eventHandle); } catch (Exception^) {}
 		if (!item)
 		{
 			invalid_tokens.push_back(entry.Token);

+ 31 - 36
winrt/SDLPal.UWP/SDLPal.Core.vcxproj

@@ -135,13 +135,12 @@
       <CompileAsWinRT>false</CompileAsWinRT>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>..\;..\..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
@@ -149,13 +148,12 @@
       <CompileAsWinRT>false</CompileAsWinRT>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>..\;..\..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm'">
     <ClCompile>
@@ -163,13 +161,12 @@
       <CompileAsWinRT>false</CompileAsWinRT>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>..\;..\..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm'">
     <ClCompile>
@@ -177,13 +174,12 @@
       <CompileAsWinRT>false</CompileAsWinRT>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>..\;..\..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
@@ -191,13 +187,12 @@
       <CompileAsWinRT>false</CompileAsWinRT>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>..\;..\..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
@@ -205,13 +200,12 @@
       <CompileAsWinRT>false</CompileAsWinRT>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>..\;..\..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
@@ -240,6 +234,7 @@
     <ClInclude Include="..\..\font.h" />
     <ClInclude Include="..\..\fontglyph.h" />
     <ClInclude Include="..\..\game.h" />
+    <ClInclude Include="..\..\generated.h" />
     <ClInclude Include="..\..\global.h" />
     <ClInclude Include="..\..\input.h" />
     <ClInclude Include="..\..\itemmenu.h" />

+ 7 - 0
winrt/SDLPal.UWP/SDLPal.Core.vcxproj.filters

@@ -48,6 +48,10 @@
     <Filter Include="native_midi">
       <UniqueIdentifier>{34823dc2-aeaf-4acc-bdef-5069e35186ed}</UniqueIdentifier>
     </Filter>
+    <Filter Include="generated">
+      <UniqueIdentifier>{715380f7-416a-47aa-8162-46cc7696849d}</UniqueIdentifier>
+      <SourceControlFiles>False</SourceControlFiles>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\adplug\binfile.h">
@@ -386,6 +390,9 @@
     <ClInclude Include="..\..\native_midi\native_midi_common.h">
       <Filter>native_midi</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\generated.h">
+      <Filter>generated</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\adplug\binfile.cpp">

+ 31 - 18
winrt/SDLPal.Windows/SDLPal.Core.vcxproj

@@ -130,68 +130,80 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
     <ClCompile>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
     <ClCompile>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <PreprocessorDefinitions>PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;__WINRT__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
@@ -220,6 +232,7 @@
     <ClInclude Include="..\..\font.h" />
     <ClInclude Include="..\..\fontglyph.h" />
     <ClInclude Include="..\..\game.h" />
+    <ClInclude Include="..\..\generated.h" />
     <ClInclude Include="..\..\global.h" />
     <ClInclude Include="..\..\input.h" />
     <ClInclude Include="..\..\itemmenu.h" />

+ 7 - 0
winrt/SDLPal.Windows/SDLPal.Core.vcxproj.filters

@@ -12,6 +12,10 @@
     <Filter Include="adplug">
       <UniqueIdentifier>{aa39a4b7-ac54-4518-940e-5a285e2e9222}</UniqueIdentifier>
     </Filter>
+    <Filter Include="generated">
+      <UniqueIdentifier>{74cfde2c-a12a-4077-9613-7fed53743229}</UniqueIdentifier>
+      <SourceControlFiles>False</SourceControlFiles>
+    </Filter>
     <Filter Include="libmad">
       <UniqueIdentifier>{539119ba-ede7-42c7-896b-b2cd0b578240}</UniqueIdentifier>
     </Filter>
@@ -89,6 +93,9 @@
     <ClInclude Include="..\..\adplug\dbopl.h">
       <Filter>adplug</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\generated.h">
+      <Filter>generated</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\liboggvorbis\include\ogg\config_types.h">
       <Filter>liboggvorbis\include\ogg</Filter>
     </ClInclude>

+ 21 - 32
winrt/SDLPal.WindowsPhone/SDLPal.Core.vcxproj

@@ -83,63 +83,51 @@
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;PAL_HAS_PLATFORM_SPECIFIC_UTILS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;$(IntermediateOutputPath);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalLibraryDirectories>$(OutDir)..\SDL-WinPhone81</AdditionalLibraryDirectories>
-      <AdditionalDependencies>sdl2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;PAL_HAS_PLATFORM_SPECIFIC_UTILS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;$(IntermediateOutputPath);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalLibraryDirectories>$(OutDir)..\SDL-WinPhone81</AdditionalLibraryDirectories>
-      <AdditionalDependencies>sdl2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
     <ClCompile>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;PAL_HAS_PLATFORM_SPECIFIC_UTILS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;$(IntermediateOutputPath);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalLibraryDirectories>$(OutDir)..\SDL-WinPhone81</AdditionalLibraryDirectories>
-      <AdditionalDependencies>sdl2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
     <ClCompile>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;PAL_HAS_PLATFORM_SPECIFIC_UTILS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PrecompiledHeader>NotUsing</PrecompiledHeader>
       <AdditionalIncludeDirectories>..\;..\..\liboggvorbis\include;$(IntermediateOutputPath);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <CompileAsWinRT>false</CompileAsWinRT>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
+      <PreprocessorDefinitions>PAL_HAS_GIT_REVISION;PAL_HAS_PLATFORM_SPECIFIC_UTILS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <DisableSpecificWarnings>4244</DisableSpecificWarnings>
     </ClCompile>
-    <Link>
-      <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
-      <AdditionalLibraryDirectories>$(OutDir)..\SDL-WinPhone81</AdditionalLibraryDirectories>
-      <AdditionalDependencies>sdl2.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
+    <PreBuildEvent>
+      <Command>$(SolutionDir)../scripts/gengitrev.bat</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClInclude Include="..\..\adplug\adlibemu.h" />
@@ -165,6 +153,7 @@
     <ClInclude Include="..\..\font.h" />
     <ClInclude Include="..\..\fontglyph.h" />
     <ClInclude Include="..\..\game.h" />
+    <ClInclude Include="..\..\generated.h" />
     <ClInclude Include="..\..\global.h" />
     <ClInclude Include="..\..\input.h" />
     <ClInclude Include="..\..\itemmenu.h" />

+ 7 - 0
winrt/SDLPal.WindowsPhone/SDLPal.Core.vcxproj.filters

@@ -4,6 +4,10 @@
     <Filter Include="adplug">
       <UniqueIdentifier>{e0154447-2329-47d7-8713-a66a8cc6b0c8}</UniqueIdentifier>
     </Filter>
+    <Filter Include="generated">
+      <UniqueIdentifier>{57bdc1bf-35de-46f5-a72d-d58fabea7512}</UniqueIdentifier>
+      <SourceControlFiles>False</SourceControlFiles>
+    </Filter>
     <Filter Include="libmad">
       <UniqueIdentifier>{03839bd5-b2c2-4ac7-b7bc-2b254ebe404d}</UniqueIdentifier>
     </Filter>
@@ -89,6 +93,9 @@
     <ClInclude Include="..\..\adplug\dbopl.h">
       <Filter>adplug</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\generated.h">
+      <Filter>generated</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\liboggvorbis\include\ogg\config_types.h">
       <Filter>liboggvorbis\include\ogg</Filter>
     </ClInclude>