Some checks failed
Build / build-gentoo (push) Failing after 14s
Build / download-system-deps (push) Successful in 3m28s
Build / get-source-code (push) Successful in 9m18s
Build / build-deb (push) Failing after 3m41s
Build / build-appimage (push) Successful in 4m12s
Build / build-android (push) Failing after 2m47s
Build / build-windows (push) Failing after 7m10s
- Remove unused OpenMP from playback backend - Fix update_assets on macOS - Add support for Objective C++ on macOS - Add macOS-specific code into the Dear ImGui backend - Add macOS .app packaging - Add support for global menus, and include support for macOS global menu into the Dear ImGui backend
114 lines
4.7 KiB
Python
Executable file
114 lines
4.7 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
import os.path as path
|
|
import shutil
|
|
from shutil import which
|
|
from glob import glob
|
|
olddir = os.curdir
|
|
print("Entering assets directory to begin asset conversion...")
|
|
os.chdir(path.realpath(path.dirname(__file__)))
|
|
ASSETS = []
|
|
WARNINGS: dict[str, bool] = {}
|
|
def warn(id: str, message: str, WARNINGS = WARNINGS) -> None:
|
|
warned_already: bool = False
|
|
try:
|
|
warned_already = WARNINGS[id]
|
|
except KeyError:
|
|
pass
|
|
if not warned_already:
|
|
print("WARNING: %s" % message)
|
|
def run_btcc(args: list[str], outpath: str):
|
|
with open(outpath + ".h", "wt+") as f:
|
|
actual_args = ["./btcc"]
|
|
for arg in args:
|
|
actual_args += [arg]
|
|
actual_args += [outpath]
|
|
subprocess.call(actual_args, stdout=f)
|
|
def add_basic(input: str, output: str):
|
|
global ASSETS
|
|
ASSETS += [output + ".h"]
|
|
run_btcc(["-nocompress", input], output)
|
|
def add_base85(input: str, output: str):
|
|
global ASSETS
|
|
ASSETS += [output + ".h"]
|
|
run_btcc(["-base85", input], output)
|
|
def add_font(input: str, output: str|None = None):
|
|
if output == None:
|
|
FONT=path.basename(input).removesuffix(".ttf").lower().replace('-', '_')
|
|
else:
|
|
FONT=output
|
|
print("Adding font '%s' from file '%s'" % (FONT, path.abspath(input)))
|
|
add_base85(input, FONT)
|
|
def add_graphic(input: str):
|
|
GRAPHIC=path.basename(input).removesuffix(".png").lower().replace('-', '_')
|
|
print("Adding graphic '%s' from file '%s'" % (GRAPHIC, input))
|
|
add_basic(input, GRAPHIC)
|
|
def add_license(input: str, output: str):
|
|
LICENSE = output + "_license"
|
|
print("Adding license '%s' (C identifier: '%s') from file '%s'" % (output, LICENSE, input))
|
|
add_basic(input, LICENSE)
|
|
def compile_program(file: str, output: str):
|
|
print("Compiling file '%s' to '%s'" % (path.abspath(file), path.abspath(output)))
|
|
subprocess.call(["c++", file, "-o", output])
|
|
def add_css(file: str, output: str):
|
|
CSS_FILE = output + ".h"
|
|
print("Adding CSS file '%s' (C identifier '%s') from file '%s'" % (file, output, CSS_FILE))
|
|
add_basic(file, output)
|
|
def add_dbus(file: str, output_basename: str, adaptor: str|None = None, proxy: str|None = None, WARNINGS = WARNINGS):
|
|
if adaptor == None:
|
|
adaptor = output_basename + '_adaptor.hpp'
|
|
if proxy == None:
|
|
proxy = output_basename + '_proxy.hpp'
|
|
if which('sdbus-c++-xml2cpp') is not None:
|
|
subprocess.call(['sdbus-c++-xml2cpp', file, '--adaptor=' + adaptor, '--proxy=' + proxy])
|
|
else:
|
|
warn("dbus-nogen", "Not generating DBus API stubs.")
|
|
compile_program("../backends/ui/imgui/imgui/misc/fonts/binary_to_compressed_c.cpp", "btcc")
|
|
for i in glob("Noto_Sans/*.ttf"):
|
|
add_font(i)
|
|
for i in glob("Noto_Sans_JP/*.ttf"):
|
|
add_font(i)
|
|
add_font("ForkAwesome/fonts/forkawesome-webfont.ttf", "forkawesome")
|
|
add_graphic("icon.png")
|
|
add_graphic("catoc.png")
|
|
add_license("Noto_Sans/OFL.txt", "notosans")
|
|
add_license("Noto_Sans_JP/OFL.txt", "notosansjp")
|
|
add_license("../LICENSE.MIT", "looper_mit")
|
|
add_license("../LICENSE.GPL", "looper_gpl")
|
|
add_license("../COPYING.md", "looper")
|
|
add_license("../subprojects/jsoncpp/LICENSE", "jsoncpp")
|
|
|
|
add_license("../subprojects/SDL-Mixer-X/COPYING.txt", "sdl_mixer_x")
|
|
add_license("../backends/ui/imgui/imgui-filebrowser/LICENSE", "imgui_filebrowser")
|
|
add_license("../backends/ui/imgui/imgui/LICENSE.txt", "imgui")
|
|
add_license("licenses/lgpl-3.0.txt", "lgpl_3_0")
|
|
add_license("licenses/lgpl-2.1.txt", "lgpl_2_1")
|
|
add_license("licenses/lgpl-2.0.txt", "lgpl_2_0")
|
|
add_license("licenses/ForkAwesome.txt", "forkawesome")
|
|
add_license("licenses/cli11.txt", "cli11")
|
|
add_license("licenses/TomlPlusPlus.txt", "tomlplusplus")
|
|
add_license("licenses/x16emu.txt", "x16emu")
|
|
add_license("licenses/vgmstream.txt", "vgmstream")
|
|
add_license("../backends/ui/imgui/IconFontCppHeaders/licence.txt", "icnfntcpphdrs")
|
|
add_css("gtk-frontend.css", "gtk_frontend_css")
|
|
add_dbus('app.dbus.xml', 'dbus_stub')
|
|
add_dbus('mpris.dbus.xml', 'mpris_stub')
|
|
def finalize(output: str):
|
|
global ASSETS
|
|
print("Writing a header including all previous asset headers and writing it to '%s'..." % output)
|
|
with open(output, "wt+") as f:
|
|
f.write("#pragma once\n")
|
|
for asset in ASSETS:
|
|
print("Adding include for '%s'..." % (asset))
|
|
f.write("#include \"%s\"\n" % asset)
|
|
ASSETS = []
|
|
finalize("assets.h")
|
|
for file in os.listdir("testdata"):
|
|
fpath = path.join(os.curdir, "testdata", path.basename(file))
|
|
add_basic(fpath, "testdata_%s_%s" % (path.splitext(path.basename(file))[0], path.splitext(file)[1].removeprefix(".")))
|
|
finalize("test_assets.h")
|
|
os.remove("btcc")
|
|
print("Returning to previous directory, now that we're done!")
|
|
os.chdir(olddir)
|