Build the GUI on OSX.

This commit is contained in:
David Given
2023-10-25 22:15:32 +02:00
parent 92d44f6ae3
commit c7f22c0dab
6 changed files with 71 additions and 4 deletions

View File

@@ -10,7 +10,8 @@ OBJ = .obj
ifeq ($(shell uname),Darwin) ifeq ($(shell uname),Darwin)
LDFLAGS += \ LDFLAGS += \
-framework IOKit \ -framework IOKit \
-framework Foundation -framework Foundation \
-Wl,-no_warn_duplicate_libraries
endif endif
.PHONY: all .PHONY: all

View File

@@ -2,6 +2,7 @@ from build.ab import export
from build.c import clibrary, cxxlibrary from build.c import clibrary, cxxlibrary
from build.protobuf import proto, protocc from build.protobuf import proto, protocc
from build.pkg import package from build.pkg import package
import config
package(name="protobuf_lib", package="protobuf") package(name="protobuf_lib", package="protobuf")
package(name="z_lib", package="zlib") package(name="z_lib", package="zlib")
@@ -223,6 +224,9 @@ export(
"brother120tool": "tools+brother120tool", "brother120tool": "tools+brother120tool",
"brother240tool": "tools+brother240tool", "brother240tool": "tools+brother240tool",
"upgrade-flux-file": "tools+upgrade-flux-file", "upgrade-flux-file": "tools+upgrade-flux-file",
}, }
| {"FluxEngine.pkg": "src/gui+fluxengine_pkg"}
if config.osx
else {},
deps=["tests", "src/formats+docs", "scripts+mkdocindex"], deps=["tests", "src/formats+docs", "scripts+mkdocindex"],
) )

View File

@@ -24,7 +24,7 @@ update-ab:
.PHONY: clean .PHONY: clean
clean:: clean::
@echo [-/-] CLEAN @echo CLEAN
$(hide) rm -rf $(OBJ) bin $(hide) rm -rf $(OBJ) bin
export PYTHONHASHSEED = 1 export PYTHONHASHSEED = 1

View File

@@ -247,6 +247,8 @@ def targetof(s, cwd):
s = cwd + s[1:] s = cwd + s[1:]
elif s.startswith("./"): elif s.startswith("./"):
s = normpath(join(cwd, s)) s = normpath(join(cwd, s))
elif s.endswith("/"):
return fileinvocation(s)
elif s.startswith("$"): elif s.startswith("$"):
return fileinvocation(s) return fileinvocation(s)

View File

@@ -1,3 +1,4 @@
from build.ab import normalrule, simplerule
from build.utils import objectify from build.utils import objectify
from build.c import clibrary from build.c import clibrary
@@ -12,3 +13,22 @@ clibrary(
for n in icons for n in icons
}, },
) )
normalrule(
name="fluxengine_iconset",
ins=["./icon.png"],
outs=["fluxengine.iconset"],
commands=[
"mkdir -p {outs[0]}",
"sips -z 64 64 {ins[0]} --out {outs[0]}/icon_32x32@2x.png > /dev/null",
],
label="ICONSET",
)
normalrule(
name="fluxengine_icns",
ins=[".+fluxengine_iconset"],
outs=["fluxengine.icns"],
commands=["iconutil -c icns -o {outs[0]} {ins[0]}"],
label="ICONUTIL",
)

View File

@@ -1,5 +1,6 @@
from build.ab import emit from build.ab import emit, normalrule
from build.c import cxxprogram from build.c import cxxprogram
import config
emit( emit(
""" """
@@ -54,3 +55,42 @@ cxxprogram(
"+protobuf_lib", "+protobuf_lib",
], ],
) )
if config.osx:
normalrule(
name="fluxengine_pkg",
ins=[".+fluxengine_app"],
outs=["FluxEngine.pkg"],
commands=[
"pkgbuild --quiet --install-location /Applications --component {ins[0]} {outs[0]}"
],
label="PKGBUILD",
)
normalrule(
name="fluxengine_app",
ins=[
".+gui",
"extras+fluxengine_icns",
"extras/FluxEngine.app.template/",
],
outs=["FluxEngine.app"],
commands=[
"rm -rf {outs[0]}",
"cp -a {ins[2]} {outs[0]}",
"touch {outs[0]}",
"cp {ins[0]} {outs[0]}/Contents/MacOS/fluxengine-gui",
"mkdir -p {outs[0]}/Contents/Resources",
"cp {ins[1]} {outs[0]}/Contents/Resources/FluxEngine.icns",
"dylibbundler -of -x {outs[0]}/Contents/MacOS/fluxengine-gui -b -d {outs[0]}/Contents/libs -cd > /dev/null",
"cp $$(brew --prefix wxwidgets)/README.md $@/Contents/libs/wxWidgets.md",
"cp $$(brew --prefix protobuf)/LICENSE $@/Contents/libs/protobuf.txt",
"cp $$(brew --prefix fmt)/LICENSE.rst $@/Contents/libs/fmt.rst",
"cp $$(brew --prefix libpng)/LICENSE $@/Contents/libs/libpng.txt",
"cp $$(brew --prefix libjpeg)/README $@/Contents/libs/libjpeg.txt",
"cp $$(brew --prefix abseil)/LICENSE $@/Contents/libs/abseil.txt",
"cp $$(brew --prefix libtiff)/LICENSE.md $@/Contents/libs/libtiff.txt",
"cp $$(brew --prefix zstd)/LICENSE $@/Contents/libs/zstd.txt",
],
label="MKAPP",
)