]> gitweb.factorcode.org Git - factor.git/blobdiff - Nmakefile
vm: Fix DEBUG flag, make REPRODUCIBLE work like debug, minor fixes to build.sh
[factor.git] / Nmakefile
index 3dd0b60cda4a47fe7ffe6d3c21282a935ad18f6b..709befb1a009f1ae57f2a866294f8b00fe5e12ed 100644 (file)
--- a/Nmakefile
+++ b/Nmakefile
@@ -1,11 +1,33 @@
-!IF !DEFINED(VERSION)
-VERSION = version-missing
+VERSION = 0.99
+
+# Crazy hack to do shell commands
+# We do it in Nmakefile because that way we don't have to invoke build through build.cmd
+# and we can just do ``nmake /f Nmakefile x86-64-vista`` or similar
+# and we still get the git branch, id, etc
+
+!IF [git describe --all > git-describe.tmp] == 0
+GIT_DESCRIBE = \
+!INCLUDE <git-describe.tmp>
+!IF [rm git-describe.tmp] == 0
+!ENDIF
+!ENDIF
+
+!IF [git rev-parse HEAD > git-id.tmp] == 0
+GIT_ID = \
+!INCLUDE <git-id.tmp>
+!IF [rm git-id.tmp] == 0
+!ENDIF
 !ENDIF
 
-!IF !DEFINED(GIT_LABEL)
-GIT_LABEL = git-label-missing
+!IF [git rev-parse --abbrev-ref HEAD > git-branch.tmp] == 0
+GIT_BRANCH = \
+!INCLUDE <git-branch.tmp>
+!IF [rm git-branch.tmp] == 0
+!ENDIF
 !ENDIF
 
+GIT_LABEL = $(GIT_DESCRIBE)-$(GIT_ID)
+
 !IF DEFINED(PLATFORM)
 
 LINK_FLAGS = /nologo shell32.lib user32.lib
@@ -43,6 +65,10 @@ LINK_FLAGS = $(LINK_FLAGS) /DEBUG
 CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
 !ENDIF
 
+!IF DEFINED(REPRODUCIBLE)
+CL_FLAGS = $(CL_FLAGS) /DFACTOR_REPRODUCIBLE
+!ENDIF
+
 ML_FLAGS = /nologo /safeseh
 
 EXE_OBJS = vm\main-windows.obj vm\factor.res
@@ -92,11 +118,12 @@ DLL_OBJS = $(PLAF_DLL_OBJS) \
        vm\vm.obj \
        vm\words.obj
 
-.cpp.obj:
-       cl /EHsc $(CL_FLAGS) /Fo$@ /c $<
+# batch mode has ::
+.cpp.obj::
+       cl /EHsc $(CL_FLAGS) /MP /Fovm/ /c $<
 
-.c.obj:
-       cl $(CL_FLAGS) /Fo$@ /c $<
+.c.obj::
+       cl /EHsc $(CL_FLAGS) /MP /Fovm/ /c $<
 
 .asm.obj:
        ml $(ML_FLAGS) /Fo$@ /c $<