Browse Source

Show Git revision: Win32 & Linux

Yihua LOU 7 years ago
parent
commit
e73a335d42
10 changed files with 75 additions and 5 deletions
  1. 2 0
      .gitignore
  2. 5 0
      common.h
  3. 1 1
      main.c
  4. 18 0
      scripts/gengitrev
  5. 13 0
      scripts/gengitrev.bat
  6. 3 1
      unix/Makefile
  7. 3 1
      win32/Makefile
  8. 4 2
      win32/Makefile.mingw
  9. 19 0
      win32/sdlpal.vcxproj
  10. 7 0
      win32/sdlpal.vcxproj.filters

+ 2 - 0
.gitignore

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

+ 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">