Build .rc files on the fly.
authorCarl Hetherington <cth@carlh.net>
Sat, 27 Apr 2024 15:29:38 +0000 (17:29 +0200)
committerCarl Hetherington <cth@carlh.net>
Sun, 28 Apr 2024 18:20:56 +0000 (20:20 +0200)
14 files changed:
platform/windows/dcpomatic.rc [deleted file]
platform/windows/dcpomatic2_disk_writer.exe.manifest [deleted file]
platform/windows/dcpomatic_batch.rc [deleted file]
platform/windows/dcpomatic_combiner.rc [deleted file]
platform/windows/dcpomatic_disk.rc [deleted file]
platform/windows/dcpomatic_disk_writer.rc [deleted file]
platform/windows/dcpomatic_editor.rc [deleted file]
platform/windows/dcpomatic_kdm.rc [deleted file]
platform/windows/dcpomatic_player.rc [deleted file]
platform/windows/dcpomatic_playlist.rc [deleted file]
platform/windows/dcpomatic_server.rc [deleted file]
platform/windows/dcpomatic_verifier.rc [deleted file]
platform/windows/wscript
src/tools/wscript

diff --git a/platform/windows/dcpomatic.rc b/platform/windows/dcpomatic.rc
deleted file mode 100644 (file)
index e58e81b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic2_disk_writer.exe.manifest b/platform/windows/dcpomatic2_disk_writer.exe.manifest
deleted file mode 100644 (file)
index 7d922a0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">\r
-    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="dcpomatic2_disk_writer" type="win32"/> \r
-    <description>DCP-o-matic Disk Writer</description> \r
-    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">\r
-           <security>\r
-                   <requestedPrivileges>\r
-                           <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>\r
-                   </requestedPrivileges>\r
-           </security>\r
-    </trustInfo>\r
-</assembly>\r
diff --git a/platform/windows/dcpomatic_batch.rc b/platform/windows/dcpomatic_batch.rc
deleted file mode 100644 (file)
index 9aea381..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_batch.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_combiner.rc b/platform/windows/dcpomatic_combiner.rc
deleted file mode 100644 (file)
index 700d85a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_combiner.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_disk.rc b/platform/windows/dcpomatic_disk.rc
deleted file mode 100644 (file)
index eac76a0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_disk.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_disk_writer.rc b/platform/windows/dcpomatic_disk_writer.rc
deleted file mode 100644 (file)
index 70138ed..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "winuser.h"\r
-1 RT_MANIFEST "dcpomatic2_disk_writer.exe.manifest"\r
diff --git a/platform/windows/dcpomatic_editor.rc b/platform/windows/dcpomatic_editor.rc
deleted file mode 100644 (file)
index 865590f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_editor.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_kdm.rc b/platform/windows/dcpomatic_kdm.rc
deleted file mode 100644 (file)
index 057a42c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_kdm.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_player.rc b/platform/windows/dcpomatic_player.rc
deleted file mode 100644 (file)
index dd5e0d1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_player.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_playlist.rc b/platform/windows/dcpomatic_playlist.rc
deleted file mode 100644 (file)
index 2bb4573..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_playlist.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_server.rc b/platform/windows/dcpomatic_server.rc
deleted file mode 100644 (file)
index fb9f4e8..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_server.ico"
-#include "wx-3.1/wx/msw/wx.rc"
diff --git a/platform/windows/dcpomatic_verifier.rc b/platform/windows/dcpomatic_verifier.rc
deleted file mode 100644 (file)
index 8f1ba07..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-id ICON "../../graphics/windows/dcpomatic2_verifier.ico"
-#include "wx-3.1/wx/msw/wx.rc"
index e0da35ed159f0181c9370d821417b1ff6d1f8a6f..9ddffca45a2eed8ec57b14ba1a4c7f6b76ed62c6 100644 (file)
@@ -418,7 +418,7 @@ SectionEnd
     if disk:
         print("""
 File "%binaries%/src/tools/dcpomatic2_disk_writer.exe"
-File "%resources%/dcpomatic2_disk_writer.exe.manifest"
+File "%binaries%/src/tools/dcpomatic2_disk_writer.exe.manifest"
     """, file=f)
 
     suffix = '_debug.bat' if debug else '.exe'
index 65e4d0e4c5fa10c5029549068747416b08b8bc9a..d23b6e16111bdc2a277c9729d352ab4c312e9d60 100644 (file)
@@ -22,6 +22,31 @@ import glob
 from waflib import Logs
 import i18n
 
+def make_rc(tool, icon):
+    filename = f'build/src/tools/{tool}.rc'
+    with open(filename, 'w') as rc:
+        if tool == 'dcpomatic_disk_writer':
+            print('#include "winuser.h"', file=rc)
+            print('1 RT_MANIFEST "dcpomatic2_disk_writer.exe.manifest"', file=rc)
+            with open("build/src/tools/dcpomatic2_disk_writer.exe.manifest", "w") as manifest:
+                print("""
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="dcpomatic2_disk_writer" type="win32"/> 
+    <description>DCP-o-matic Disk Writer</description> 
+    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+           <security>
+                   <requestedPrivileges>
+                           <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
+                   </requestedPrivileges>
+           </security>
+    </trustInfo>
+</assembly>""", file=manifest)
+        else:
+            print(f'id ICON "../../graphics/windows/{icon}"', file=rc)
+            print('#include "wx-3.1/wx/msw/wx.rc"', file=rc)
+    return filename
+
 def configure(conf):
     if conf.env.TARGET_WINDOWS_64 or conf.env.TARGET_WINDOWS_32:
         conf.env.append_value('CXXFLAGS', ['-mconsole'])
@@ -46,6 +71,11 @@ def build(bld):
     if bld.env.ENABLE_DISK and not bld.env.DISABLE_GUI:
         cli_tools.append('dcpomatic_disk_writer')
 
+    try:
+        os.makedirs('build/src/tools')
+    except:
+        pass
+
     for t in cli_tools:
         obj = bld(features='cxx cxxprogram')
         obj.uselib = uselib
@@ -53,7 +83,7 @@ def build(bld):
         obj.use    = ['libdcpomatic2']
         obj.source = '%s.cc' % t
         if (bld.env.TARGET_WINDOWS_64 or bld.env.TARGET_WINDOWS_32) and t == 'dcpomatic_disk_writer':
-            obj.source += ' ../../platform/windows/%s.rc' % t
+            obj.source += f' ../../{make_rc(t, None)}'
             # Prevent a console window opening when we start dcpomatic2_disk_writer
             obj.env.append_value('LINKFLAGS', '-Wl,-subsystem,windows')
         obj.target = t.replace('dcpomatic', 'dcpomatic2')
@@ -90,7 +120,7 @@ def build(bld):
         obj.use    = ['libdcpomatic2', 'libdcpomatic2-wx']
         obj.source = '%s.cc' % t
         if bld.env.TARGET_WINDOWS_64 or bld.env.TARGET_WINDOWS_32:
-            obj.source += ' ../../platform/windows/%s.rc' % t
+            obj.source += f' ../../{make_rc(t, t.replace("dcpomatic", "dcpomatic2") + ".ico")}'
         obj.target = t.replace('dcpomatic', 'dcpomatic2')
 
     i18n.po_to_mo(os.path.join('src', 'tools'), 'dcpomatic2', bld)