aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2025-05-13 18:09:30 +0200
committerJeroen van Rijn <Kelimion@users.noreply.github.com>2025-05-13 18:09:30 +0200
commited56a7ca102339d2b711ec5ca9529a02bd621a7b (patch)
tree82c49f4b61e8a69ed1549b99fe4384b6257b1f04
parent0a12c464abcc8e5bf2cc47204bd2fe74e461d443 (diff)
Parse odin version date out of HEAD commit if available
-rw-r--r--build.bat44
-rwxr-xr-xbuild_odin.sh8
-rw-r--r--misc/get-date.c2
-rw-r--r--src/bug_report.cpp8
4 files changed, 33 insertions, 29 deletions
diff --git a/build.bat b/build.bat
index ae733ff2a..b1ff9b173 100644
--- a/build.bat
+++ b/build.bat
@@ -19,16 +19,27 @@ if "%VSCMD_ARG_TGT_ARCH%" neq "x64" (
)
)
+where /Q git.exe || goto skip_git_hash
+if not exist .git\ goto skip_git_hash
+for /f "tokens=1,2" %%i IN ('git show "--pretty=%%cd %%h" "--date=format:%%Y-%%m-%%d" --no-patch --no-notes HEAD') do (
+ set CURR_DATE_TIME=%%i
+ set GIT_SHA=%%j
+)
+if %ERRORLEVEL% equ 0 (
+ goto have_git_hash_and_date
+)
+:skip_git_hash
pushd misc
cl /nologo get-date.c
-popd
-
-for /f %%i in ('misc\get-date') do (
+for /f %%i in ('get-date') do (
set CURR_DATE_TIME=%%i
+ rem Don't set GIT_SHA
)
+popd
+:have_git_hash_and_date
set curr_year=%CURR_DATE_TIME:~0,4%
-set curr_month=%CURR_DATE_TIME:~4,2%
-set curr_day=%CURR_DATE_TIME:~6,2%
+set curr_month=%CURR_DATE_TIME:~5,2%
+set curr_day=%CURR_DATE_TIME:~8,2%
:: Make sure this is a decent name and not generic
set exe_name=odin.exe
@@ -61,31 +72,14 @@ if %release_mode% equ 0 (
set V4=0
set odin_version_full="%V1%.%V2%.%V3%.%V4%"
set odin_version_raw="dev-%V1%-%V2%"
-
set compiler_flags= -nologo -Oi -TP -fp:precise -Gm- -MP -FC -EHsc- -GR- -GF
rem Parse source code as utf-8 even on shift-jis and other codepages
rem See https://learn.microsoft.com/en-us/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-170
set compiler_flags= %compiler_flags% /utf-8
-set compiler_defines= -DODIN_VERSION_RAW=\"%odin_version_raw%\"
+set compiler_defines= -DODIN_VERSION_RAW=\"%odin_version_raw%\" -DGIT_SHA=\"%GIT_SHA%\"
rem fileversion is defined as {Major,Minor,Build,Private: u16} so a bit limited
-set rc_flags=-nologo ^
--DV1=%V1% -DV2=%V2% -DV3=%V3% -DV4=%V4% ^
--DVF=%odin_version_full% -DNIGHTLY=%nightly%
-
-where /Q git.exe || goto skip_git_hash
-if not exist .git\ goto skip_git_hash
-for /f "tokens=1,2" %%i IN ('git show "--pretty=%%cd %%h" "--date=format:%%Y-%%m" --no-patch --no-notes HEAD') do (
- set odin_version_raw=dev-%%i
- set GIT_SHA=%%j
-)
-if %ERRORLEVEL% equ 0 (
- set compiler_defines=%compiler_defines% -DGIT_SHA=\"%GIT_SHA%\"
- set rc_flags=%rc_flags% -DGIT_SHA=%GIT_SHA% -DVP=%odin_version_raw%:%GIT_SHA%
-) else (
- set rc_flags=%rc_flags% -DVP=%odin_version_raw%
-)
-:skip_git_hash
+set rc_flags="-DGIT_SHA=%GIT_SHA% -DVP=dev-%V1%-%V2%:%GIT_SHA% nologo -DV1=%V1% -DV2=%V2% -DV3=%V3% -DV4=%V4% -DVF=%odin_version_full% -DNIGHTLY=%nightly%"
if %nightly% equ 1 set compiler_defines=%compiler_defines% -DNIGHTLY
@@ -153,4 +147,4 @@ if %release_mode% EQU 0 echo: & echo Debug compiler built. Note: run "build.bat
del *.obj > NUL 2> NUL
-:end_of_build
+:end_of_build \ No newline at end of file
diff --git a/build_odin.sh b/build_odin.sh
index 19bb82a11..7bbe82ba1 100755
--- a/build_odin.sh
+++ b/build_odin.sh
@@ -6,7 +6,6 @@ set -eu
: ${LDFLAGS=}
: ${LLVM_CONFIG=}
-CPPFLAGS="$CPPFLAGS -DODIN_VERSION_RAW=\"dev-$(date +"%Y-%m")\""
CXXFLAGS="$CXXFLAGS -std=c++14"
DISABLED_WARNINGS="-Wno-switch -Wno-macro-redefined -Wno-unused-value"
LDFLAGS="$LDFLAGS -pthread -lm"
@@ -15,8 +14,12 @@ OS_NAME="$(uname -s)"
if [ -d ".git" ] && [ -n "$(command -v git)" ]; then
GIT_SHA=$(git show --pretty='%h' --no-patch --no-notes HEAD)
+ GIT_DATE=$(git show "--pretty=%cd" "--date=format:%Y-%m" --no-patch --no-notes HEAD)
CPPFLAGS="$CPPFLAGS -DGIT_SHA=\"$GIT_SHA\""
+else
+ GIT_DATE=$(date +"%Y-%m")
fi
+CPPFLAGS="$CPPFLAGS -DODIN_VERSION_RAW=\"dev-$GIT_DATE\""
error() {
printf "ERROR: %s\n" "$1"
@@ -158,7 +161,8 @@ build_odin() {
}
run_demo() {
- ./odin run examples/demo -vet -strict-style -- Hellope World
+ #./odin run examples/demo -vet -strict-style -- Hellope World
+ ./odin report
}
if [ $# -eq 0 ]; then
diff --git a/misc/get-date.c b/misc/get-date.c
index bf5b32738..b3eb1be78 100644
--- a/misc/get-date.c
+++ b/misc/get-date.c
@@ -9,5 +9,5 @@
int main(int arg_count, char const **arg_ptr) {
time_t t = time(NULL);
struct tm* now = localtime(&t);
- printf("%04d%02d%02d", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday);
+ printf("%04d-%02d-%02d", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday);
} \ No newline at end of file
diff --git a/src/bug_report.cpp b/src/bug_report.cpp
index 0a617fe39..32210c23e 100644
--- a/src/bug_report.cpp
+++ b/src/bug_report.cpp
@@ -667,8 +667,14 @@ gb_internal void print_bug_report_help() {
gb_printf("-nightly");
#endif
+ String version = {};
+
#ifdef GIT_SHA
- gb_printf(":%s", GIT_SHA);
+ version.text = cast(u8 *)GIT_SHA;
+ version.len = gb_strlen(GIT_SHA);
+ if (version != "") {
+ gb_printf(":%.*s", LIT(version));
+ }
#endif
gb_printf("\n");