diff options
Diffstat (limited to 'src/tools/wscript')
| -rw-r--r-- | src/tools/wscript | 86 |
1 files changed, 83 insertions, 3 deletions
diff --git a/src/tools/wscript b/src/tools/wscript index c3b2b5fe0..10a0793e1 100644 --- a/src/tools/wscript +++ b/src/tools/wscript @@ -22,6 +22,73 @@ import glob from waflib import Logs import i18n + +def description(tool, variant): + descriptions = { + 'dcpomatic': 'DCP-o-matic', + 'dcpomatic_batch': 'DCP-o-matic Batch Converter', + 'dcpomatic_server': 'DCP-o-matic Encode Server', + 'dcpomatic_kdm': 'DCP-o-matic KDM Creator', + 'dcpomatic_player': 'DCP-o-matic Player', + 'dcpomatic_playlist': 'DCP-o-matic Playlist Editor', + 'dcpomatic_combiner': 'DCP-o-matic Combiner', + 'dcpomatic_verifier': 'DCP-o-matic Verifier', + } + return descriptions[tool] if tool in descriptions else tool + + +def make_rc(tool, icon, variant): + 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}" +#include "wx-3.1/wx/msw/wx.rc"' +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,0,0,2 + PRODUCTVERSION 0,0,0,2 + FILEFLAGSMASK 0x3fL + #ifdef _DEBUG + FILEFLAGS 0x1L + #else + FILEFLAGS 0x0L + #endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +{{ + BLOCK "StringFileInfo" + {{ + BLOCK "040904b0" + {{ + VALUE "FileDescription", "{description(tool, variant)}\\0" + }} + }} + BLOCK "VarFileInfo" + {{ + VALUE "Translation", 0x409, 1200 + }} +}} + """, 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 +113,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 +125,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, bld.env.VARIANT)}' # 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') @@ -62,7 +134,15 @@ def build(bld): gui_tools = [] if not bld.env.DISABLE_GUI: - gui_tools = ['dcpomatic', 'dcpomatic_batch', 'dcpomatic_server', 'dcpomatic_kdm', 'dcpomatic_player', 'dcpomatic_playlist', 'dcpomatic_combiner', 'dcpomatic_editor'] + gui_tools = ['dcpomatic', + 'dcpomatic_batch', + 'dcpomatic_server', + 'dcpomatic_kdm', + 'dcpomatic_player', + 'dcpomatic_playlist', + 'dcpomatic_combiner', + 'dcpomatic_editor', + 'dcpomatic_verifier'] if bld.env.ENABLE_DISK: gui_tools.append('dcpomatic_disk') @@ -82,7 +162,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", bld.env.VARIANT)}' obj.target = t.replace('dcpomatic', 'dcpomatic2') i18n.po_to_mo(os.path.join('src', 'tools'), 'dcpomatic2', bld) |
