]> gitweb.factorcode.org Git - factor.git/commitdiff
nmake: Fix caching on Windows when compiling without a manifest.
authorDoug Coleman <doug.coleman@gmail.com>
Mon, 9 Mar 2020 22:26:11 +0000 (17:26 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Mon, 9 Mar 2020 22:30:24 +0000 (17:30 -0500)
Nmakefile
factor.exe.manifest [deleted file]
factor.exe.manifest.in [new file with mode: 0644]

index f68c821101771a6c8ad0fda29a66be046629558f..065d24a757cc00a5710bf97b574b96c2e45e9b48 100644 (file)
--- a/Nmakefile
+++ b/Nmakefile
@@ -150,8 +150,15 @@ factor.com: $(EXE_OBJS) $(DLL_OBJS)
 factor.exe: $(EXE_OBJS) $(DLL_OBJS)
        link $(LINK_FLAGS) /out:factor.exe /SUBSYSTEM:$(SUBSYSTEM_EXE_FLAGS) $(EXE_OBJS) $(DLL_OBJS)
 
+# If we compile factor.exe, run mt.exe, and run factor.exe,
+# then Windows caches the manifest. Even on a recompile without applying
+# the mt.exe tool, if the factor.exe.manifest file is present, the manifest
+# is applied. To avoid this, we delete the .manifest file on clean
+# and copy it from a reference file on compilation and mt.exe.
+#
 factor.exe.manifest: factor.exe
-       mt -manifest factor.exe.manifest -outputresource:factor.exe;#1
+       copy factor.exe.manifest.in factor.exe.manifest
+       mt -manifest factor.exe.manifest -outputresource:"factor.exe;#1"
 
 all: factor.com factor.exe factor.dll.lib libfactor-ffi-test.dll
 
@@ -184,12 +191,15 @@ clean:
        if exist factor.lib del factor.lib
        if exist factor.com del factor.com
        if exist factor.exe del factor.exe
+       if exist factor.exe.manifest del factor.exe.manifest
+       if exist factor.exp del factor.exp
        if exist factor.dll del factor.dll
        if exist factor.dll.lib del factor.dll.lib
+       if exist factor.dll.exp del factor.dll.exp
        if exist libfactor-ffi-test.dll del libfactor-ffi-test.dll
        if exist libfactor-ffi-test.exp del libfactor-ffi-test.exp
        if exist libfactor-ffi-test.lib del libfactor-ffi-test.lib
 
-.PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean
+.PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean factor.exe.manifest
 
 .SUFFIXES: .rs
diff --git a/factor.exe.manifest b/factor.exe.manifest
deleted file mode 100644 (file)
index 42ade3e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
-  <assemblyIdentity type="win32"
-                    name="factor"
-                    version="0.9.8.0"
-  />
-  <application xmlns="urn:schemas-microsoft-com:asm.v3">
-    <windowsSettings>
-      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
-    </windowsSettings>
-  </application>
-</assembly>
diff --git a/factor.exe.manifest.in b/factor.exe.manifest.in
new file mode 100644 (file)
index 0000000..42ade3e
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity type="win32"
+                    name="factor"
+                    version="0.9.8.0"
+  />
+  <application xmlns="urn:schemas-microsoft-com:asm.v3">
+    <windowsSettings>
+      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
+    </windowsSettings>
+  </application>
+</assembly>