Files
fluxengine/src/gui/build.py
2025-08-20 00:02:43 +02:00

99 lines
3.2 KiB
Python

from build.ab import emit, simplerule
from build.c import cxxprogram
from glob import glob
import config
emit(
"""
WX_CONFIG ?= wx-config
ifneq ($(strip $(shell command -v $(WX_CONFIG) >/dev/null 2>&1; echo $$?)),0)
WX_CFLAGS = $(error Required binary 'wx-config' not found.)
WX_LDFLAGS = $(error Required binary 'wx-config' not found.)
else
WX_CFLAGS := $(shell $(WX_CONFIG) --cxxflags base adv aui richtext core)
WX_LDFLAGS := $(shell $(WX_CONFIG) --libs base adv aui richtext core)
endif
"""
)
extrasrcs = ["./layout.cpp"]
if config.windows:
extrasrcs += [
simplerule(
name="rc",
ins=["./windres.rc"],
outs=["=rc.o"],
deps=["./manifest.xml", "extras+fluxengine_ico"],
commands=["$(WINDRES) $[ins[0]] $[outs[0]]"],
label="WINDRES",
)
]
cxxprogram(
name="gui",
srcs=glob("src/gui/*.cc") + glob("src/gui/*.h") + extrasrcs,
cflags=["$(WX_CFLAGS)"],
ldflags=["$(WX_LDFLAGS)"],
deps=[
"lib/external+fl2_proto_lib",
"+protocol",
"dep/adflib",
"dep/fatfs",
"dep/hfsutils",
"dep/libusbp",
"extras+icons",
"lib/core",
"lib/data",
"lib/vfs",
"lib/config",
"arch",
"src/formats",
"src/gui/drivetypes",
"+z_lib",
"+fmt_lib",
"+protobuf_lib",
],
)
if config.osx:
simplerule(
name="fluxengine_app_zip",
ins=[
".+gui",
"extras+fluxengine_icns",
"extras+fluxengine_template",
],
outs=["=FluxEngine.app.zip"],
commands=[
"rm -rf $[outs[0]]",
"unzip -q $[ins[2]]", # creates FluxEngine.app
"cp $[ins[0]] FluxEngine.app/Contents/MacOS/fluxengine-gui",
"mkdir -p FluxEngine.app/Contents/Resources",
"cp $[ins[1]] FluxEngine.app/Contents/Resources/FluxEngine.icns",
"dylibbundler -of -x FluxEngine.app/Contents/MacOS/fluxengine-gui -b -d FluxEngine.app/Contents/libs -cd > /dev/null",
"cp $$(brew --prefix wxwidgets)/README.md FluxEngine.app/Contents/libs/wxWidgets.md",
"cp $$(brew --prefix protobuf)/LICENSE FluxEngine.app/Contents/libs/protobuf.txt",
"cp $$(brew --prefix fmt)/LICENSE* FluxEngine.app/Contents/libs/fmt.rst",
"cp $$(brew --prefix libpng)/LICENSE FluxEngine.app/Contents/libs/libpng.txt",
"cp $$(brew --prefix libjpeg)/README FluxEngine.app/Contents/libs/libjpeg.txt",
"cp $$(brew --prefix abseil)/LICENSE FluxEngine.app/Contents/libs/abseil.txt",
"cp $$(brew --prefix libtiff)/LICENSE.md FluxEngine.app/Contents/libs/libtiff.txt",
"cp $$(brew --prefix zstd)/LICENSE FluxEngine.app/Contents/libs/zstd.txt",
"zip -rq $[outs[0]] FluxEngine.app",
],
label="MKAPP",
)
simplerule(
name="fluxengine_pkg",
ins=[
".+fluxengine_app_zip",
],
outs=["=FluxEngine.pkg"],
commands=[
"unzip -q $[ins[0]]",
"pkgbuild --quiet --install-location /Applications --component FluxEngine.app $[outs[0]]",
],
label="MKPKG",
)