diff --git a/Makefile b/Makefile index a83a38d6..f974edcc 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,37 @@ -CC = gcc -CXX = g++ -std=c++17 -CFLAGS = -g -O3 -LDFLAGS = +export BUILDTYPE +BUILDTYPE ?= host -OBJ = .obj +ifeq ($(BUILDTYPE),windows) + MINGW = i686-w64-mingw32- + CC = $(MINGW)gcc + CXX = $(MINGW)g++ -std=c++17 + CFLAGS += -g -O3 + CXXFLAGS += \ + -fext-numeric-literals \ + -Wno-deprecated-enum-float-conversion \ + -Wno-deprecated-enum-enum-conversion + LDFLAGS += -static + AR = $(MINGW)ar + PKG_CONFIG = $(MINGW)pkg-config -static + WINDRES = $(MINGW)windres + WX_CONFIG = /usr/i686-w64-mingw32/sys-root/mingw/bin/wx-config-3.0 --static=yes + EXT = .exe +else + CC = gcc + CXX = g++ -std=c++17 + CFLAGS = -g -O3 + LDFLAGS = + AR = ar + PKG_CONFIG = pkg-config +endif + +HOSTCC = gcc +HOSTCXX = g++ -std=c++17 +HOSTCFLAGS = -g -O3 +HOSTLDFLAGS = + +REALOBJ = .obj +OBJ = $(REALOBJ)/$(BUILDTYPE) DESTDIR ?= PREFIX ?= /usr/local BINDIR ?= $(PREFIX)/bin @@ -54,6 +82,9 @@ README.md: $(OBJ)/scripts/+mkdocindex/+mkdocindex$(EXT) .PHONY: install install-bin install:: all install-bin +clean:: + $(hide) rm -rf $(REALOBJ) + install-bin: @echo "INSTALL" $(hide) install -D -v "$(OBJ)/src+fluxengine/src+fluxengine" "$(DESTDIR)$(BINDIR)/fluxengine" diff --git a/README.md b/README.md index dd2cc632..8f2f3320 100644 --- a/README.md +++ b/README.md @@ -103,45 +103,45 @@ particular filesystem and can read (and sometimes write, support varies) files directly from disks, flux files or disk images. Some formats have multiple choices because they can store multiple types of file system. - - - -| Profile | Format | Read? | Write? | Filesystem? | -|:--------|:-------|:-----:|:------:|:------------| -| [`acornadfs`](doc/disk-acornadfs.md) | Acorn ADFS: BBC Micro, Archimedes | 🦖 | | | -| [`acorndfs`](doc/disk-acorndfs.md) | Acorn DFS: Acorn Atom, BBC Micro series | 🦄 | | ACORNDFS | -| [`aeslanier`](doc/disk-aeslanier.md) | AES Lanier "No Problem": 616kB 5.25" 77-track SSDD hard sectored | 🦖 | | | -| [`agat`](doc/disk-agat.md) | Agat: 840kB 5.25" 80-track DS | 🦖 | 🦖 | | -| [`amiga`](doc/disk-amiga.md) | Amiga: 880kB 3.5" DSDD | 🦄 | 🦄 | AMIGAFFS | -| [`ampro`](doc/disk-ampro.md) | Ampro Little Board: CP/M | 🦖 | | CPMFS | -| [`apple2`](doc/disk-apple2.md) | Apple II: Prodos, Appledos, and CP/M | 🦄 | 🦄 | APPLEDOS CPMFS PRODOS | -| [`atarist`](doc/disk-atarist.md) | Atari ST: Almost PC compatible | 🦄 | 🦄 | | -| [`bk`](doc/disk-bk.md) | BK: 800kB 5.25"/3.5" 80-track 10-sector DSDD | 🦖 | 🦖 | | -| [`brother`](doc/disk-brother.md) | Brother word processors: GCR family | 🦄 | 🦄 | BROTHER120 FATFS | -| [`commodore`](doc/disk-commodore.md) | Commodore: 1541, 1581, 8050 and variations | 🦄 | 🦄 | CBMFS | -| [`eco1`](doc/disk-eco1.md) | VDS Eco1: CP/M; 1210kB 77-track mixed format DSHD | 🦖 | | CPMFS | -| [`epsonpf10`](doc/disk-epsonpf10.md) | Epson PF-10: CP/M; 3.5" 40-track DSDD | 🦖 | | CPMFS | -| [`f85`](doc/disk-f85.md) | Durango F85: 461kB 5.25" 77-track SS | 🦖 | | | -| [`fb100`](doc/disk-fb100.md) | Brother FB-100: 100kB 3.5" 40-track SSSD | 🦖 | | | -| [`hplif`](doc/disk-hplif.md) | Hewlett-Packard LIF: a variety of disk formats used by HP | 🦄 | 🦄 | LIF | -| [`ibm`](doc/disk-ibm.md) | IBM PC: Generic PC 3.5"/5.25" disks | 🦄 | 🦄 | FATFS | -| [`icl30`](doc/disk-icl30.md) | ICL Model 30: CP/M; 263kB 35-track DSSD | 🦖 | | CPMFS | -| [`mac`](doc/disk-mac.md) | Macintosh: 400kB/800kB 3.5" GCR | 🦄 | 🦄 | MACHFS | -| [`micropolis`](doc/disk-micropolis.md) | Micropolis: 100tpi MetaFloppy disks | 🦄 | 🦄 | | -| [`ms2000`](doc/disk-ms2000.md) | : MS2000 Microdisk Development System | | | MICRODOS | -| [`mx`](doc/disk-mx.md) | DVK MX: Soviet-era PDP-11 clone | 🦖 | | | -| [`n88basic`](doc/disk-n88basic.md) | N88-BASIC: PC8800/PC98 5.25" 77-track 26-sector DSHD | 🦄 | 🦄 | | -| [`northstar`](doc/disk-northstar.md) | Northstar: 5.25" hard sectored | 🦄 | 🦄 | | -| [`psos`](doc/disk-psos.md) | pSOS: 800kB DSDD with PHILE | 🦄 | 🦄 | PHILE | -| [`rolandd20`](doc/disk-rolandd20.md) | Roland D20: 3.5" electronic synthesiser disks | 🦄 | 🦖 | ROLAND | -| [`rx50`](doc/disk-rx50.md) | Digital RX50: 400kB 5.25" 80-track 10-sector SSDD | 🦖 | 🦖 | | -| [`smaky6`](doc/disk-smaky6.md) | Smaky 6: 308kB 5.25" 77-track 16-sector SSDD, hard sectored | 🦖 | | SMAKY6 | -| [`tids990`](doc/disk-tids990.md) | Texas Instruments DS990: 1126kB 8" DSSD | 🦖 | 🦖 | | -| [`tiki`](doc/disk-tiki.md) | Tiki 100: CP/M | | | CPMFS | -| [`victor9k`](doc/disk-victor9k.md) | Victor 9000 / Sirius One: 1224kB 5.25" DSDD GCR | 🦖 | 🦖 | | -| [`zilogmcz`](doc/disk-zilogmcz.md) | Zilog MCZ: 320kB 8" 77-track SSSD hard-sectored | 🦖 | | ZDOS | -{: .datatable } - + + + +| Profile | Format | Read? | Write? | Filesystem? | +|:--------|:-------|:-----:|:------:|:------------| +| [`acornadfs`](doc/disk-acornadfs.md) | Acorn ADFS: BBC Micro, Archimedes | 🦖 | | | +| [`acorndfs`](doc/disk-acorndfs.md) | Acorn DFS: Acorn Atom, BBC Micro series | 🦄 | | ACORNDFS | +| [`aeslanier`](doc/disk-aeslanier.md) | AES Lanier "No Problem": 616kB 5.25" 77-track SSDD hard sectored | 🦖 | | | +| [`agat`](doc/disk-agat.md) | Agat: 840kB 5.25" 80-track DS | 🦖 | 🦖 | | +| [`amiga`](doc/disk-amiga.md) | Amiga: 880kB 3.5" DSDD | 🦄 | 🦄 | AMIGAFFS | +| [`ampro`](doc/disk-ampro.md) | Ampro Little Board: CP/M | 🦖 | | CPMFS | +| [`apple2`](doc/disk-apple2.md) | Apple II: Prodos, Appledos, and CP/M | 🦄 | 🦄 | APPLEDOS CPMFS PRODOS | +| [`atarist`](doc/disk-atarist.md) | Atari ST: Almost PC compatible | 🦄 | 🦄 | | +| [`bk`](doc/disk-bk.md) | BK: 800kB 5.25"/3.5" 80-track 10-sector DSDD | 🦖 | 🦖 | | +| [`brother`](doc/disk-brother.md) | Brother word processors: GCR family | 🦄 | 🦄 | BROTHER120 FATFS | +| [`commodore`](doc/disk-commodore.md) | Commodore: 1541, 1581, 8050 and variations | 🦄 | 🦄 | CBMFS | +| [`eco1`](doc/disk-eco1.md) | VDS Eco1: CP/M; 1210kB 77-track mixed format DSHD | 🦖 | | CPMFS | +| [`epsonpf10`](doc/disk-epsonpf10.md) | Epson PF-10: CP/M; 3.5" 40-track DSDD | 🦖 | | CPMFS | +| [`f85`](doc/disk-f85.md) | Durango F85: 461kB 5.25" 77-track SS | 🦖 | | | +| [`fb100`](doc/disk-fb100.md) | Brother FB-100: 100kB 3.5" 40-track SSSD | 🦖 | | | +| [`hplif`](doc/disk-hplif.md) | Hewlett-Packard LIF: a variety of disk formats used by HP | 🦄 | 🦄 | LIF | +| [`ibm`](doc/disk-ibm.md) | IBM PC: Generic PC 3.5"/5.25" disks | 🦄 | 🦄 | FATFS | +| [`icl30`](doc/disk-icl30.md) | ICL Model 30: CP/M; 263kB 35-track DSSD | 🦖 | | CPMFS | +| [`mac`](doc/disk-mac.md) | Macintosh: 400kB/800kB 3.5" GCR | 🦄 | 🦄 | MACHFS | +| [`micropolis`](doc/disk-micropolis.md) | Micropolis: 100tpi MetaFloppy disks | 🦄 | 🦄 | | +| [`ms2000`](doc/disk-ms2000.md) | : MS2000 Microdisk Development System | | | MICRODOS | +| [`mx`](doc/disk-mx.md) | DVK MX: Soviet-era PDP-11 clone | 🦖 | | | +| [`n88basic`](doc/disk-n88basic.md) | N88-BASIC: PC8800/PC98 5.25" 77-track 26-sector DSHD | 🦄 | 🦄 | | +| [`northstar`](doc/disk-northstar.md) | Northstar: 5.25" hard sectored | 🦄 | 🦄 | | +| [`psos`](doc/disk-psos.md) | pSOS: 800kB DSDD with PHILE | 🦄 | 🦄 | PHILE | +| [`rolandd20`](doc/disk-rolandd20.md) | Roland D20: 3.5" electronic synthesiser disks | 🦄 | 🦖 | ROLAND | +| [`rx50`](doc/disk-rx50.md) | Digital RX50: 400kB 5.25" 80-track 10-sector SSDD | 🦖 | 🦖 | | +| [`smaky6`](doc/disk-smaky6.md) | Smaky 6: 308kB 5.25" 77-track 16-sector SSDD, hard sectored | 🦖 | | SMAKY6 | +| [`tids990`](doc/disk-tids990.md) | Texas Instruments DS990: 1126kB 8" DSSD | 🦖 | 🦖 | | +| [`tiki`](doc/disk-tiki.md) | Tiki 100: CP/M | | | CPMFS | +| [`victor9k`](doc/disk-victor9k.md) | Victor 9000 / Sirius One: 1224kB 5.25" DSDD GCR | 🦖 | 🦖 | | +| [`zilogmcz`](doc/disk-zilogmcz.md) | Zilog MCZ: 320kB 8" 77-track SSSD hard-sectored | 🦖 | | ZDOS | +{: .datatable } + ### Notes diff --git a/build.py b/build.py index d92c3845..6b19314c 100644 --- a/build.py +++ b/build.py @@ -1,7 +1,7 @@ from build.ab import export from build.c import clibrary, cxxlibrary from build.protobuf import proto, protocc -from build.pkg import package +from build.pkg import package, hostpackage from build.utils import test from glob import glob import config @@ -9,9 +9,14 @@ import re package(name="protobuf_lib", package="protobuf") package(name="z_lib", package="zlib") -package(name="fmt_lib", package="fmt") +package(name="fmt_lib", package="fmt", fallback="dep/fmt") package(name="sqlite3_lib", package="sqlite3") +hostpackage(name="protobuf_host_lib", package="protobuf") +hostpackage(name="z_host_lib", package="zlib") +hostpackage(name="fmt_host_lib", package="fmt") +hostpackage(name="sqlite3_host_lib", package="sqlite3") + clibrary(name="protocol", hdrs={"protocol.h": "./protocol.h"}) proto(name="fl2_proto", srcs=["lib/fl2.proto"]) @@ -211,14 +216,15 @@ cxxlibrary( }, deps=[ "+fl2_proto_lib", + "+fmt_lib", "+protocol", - "lib+config_proto_lib", "dep/adflib", "dep/agg", "dep/fatfs", "dep/hfsutils", "dep/libusbp", "dep/stb", + "lib+config_proto_lib", ], ) diff --git a/build/ab.mk b/build/ab.mk index 61da4fb0..5674b1a9 100644 --- a/build/ab.mk +++ b/build/ab.mk @@ -43,7 +43,7 @@ update-ab: .PHONY: clean clean:: @echo CLEAN - $(hide) rm -rf $(OBJ) bin + $(hide) rm -rf $(OBJ) export PYTHONHASHSEED = 1 build-files = $(shell find . -name 'build.py') $(wildcard build/*.py) $(wildcard config.py) diff --git a/build/ab.py b/build/ab.py index 4b485745..025b33a0 100644 --- a/build/ab.py +++ b/build/ab.py @@ -401,6 +401,7 @@ def emitter_endrule(rule, outs): emit("\t$(hide) touch", rule.sentinel) for f in filenamesof(outs): + emit(".SECONDARY:", f) emit(f, ":", rule.sentinel, ";") diff --git a/build/c.py b/build/c.py index 3cb32be0..e55bae5d 100644 --- a/build/c.py +++ b/build/c.py @@ -18,6 +18,26 @@ from os.path import * from types import SimpleNamespace +class Toolchain: + label = "" + cfile = ["$(CC) -c -o {outs[0]} {ins[0]} $(CFLAGS) {cflags}"] + cxxfile = ["$(CXX) -c -o {outs[0]} {ins[0]} $(CFLAGS) {cflags}"] + clibrary = ["$(AR) cqs {outs[0]} {ins}"] + cxxlibrary = ["$(AR) cqs {outs[0]} {ins}"] + cprogram = ["$(CC) -o {outs[0]} {ins} {ldflags} $(LDFLAGS)"] + cxxprogram = ["$(CXX) -o {outs[0]} {ins} {ldflags} $(LDFLAGS)"] + + +class HostToolchain: + label = "HOST " + cfile = ["$(HOSTCC) -c -o {outs[0]} {ins[0]} $(HOSTCFLAGS) {cflags}"] + cxxfile = ["$(HOSTCXX) -c -o {outs[0]} {ins[0]} $(HOSTCFLAGS) {cflags}"] + clibrary = ["$(HOSTAR) cqs {outs[0]} {ins}"] + cxxlibrary = ["$(HOSTAR) cqs {outs[0]} {ins}"] + cprogram = ["$(HOSTCC) -o {outs[0]} {ins} {ldflags} $(HOSTLDFLAGS)"] + cxxprogram = ["$(HOSTCXX) -o {outs[0]} {ins} {ldflags} $(HOSTLDFLAGS)"] + + def cfileimpl(self, name, srcs, deps, suffix, commands, label, kind, cflags): outleaf = stripext(basename(filenameof(srcs[0]))) + suffix @@ -40,9 +60,14 @@ def cfile( deps: Targets = None, cflags: List = [], suffix=".o", - commands=["$(CC) -c -o {outs[0]} {ins[0]} $(CFLAGS) {cflags}"], - label="CC", + toolchain=Toolchain, + commands=None, + label=None, ): + if not label: + label = toolchain.label + "CC" + if not commands: + commands = toolchain.cfile cfileimpl(self, name, srcs, deps, suffix, commands, label, "cfile", cflags) @@ -54,15 +79,20 @@ def cxxfile( deps: Targets = None, cflags: List = [], suffix=".o", - commands=["$(CXX) -c -o {outs[0]} {ins[0]} $(CFLAGS) {cflags}"], - label="CXX", + toolchain=Toolchain, + commands=None, + label=None, ): + if not label: + label = toolchain.label + "CC" + if not commands: + commands = toolchain.cfile cfileimpl( self, name, srcs, deps, suffix, commands, label, "cxxfile", cflags ) -def findsources(name, srcs, deps, cflags, filerule): +def findsources(name, srcs, deps, cflags, toolchain, filerule): objs = [] for s in flatten(srcs): objs += [ @@ -71,6 +101,7 @@ def findsources(name, srcs, deps, cflags, filerule): srcs=[f], deps=deps, cflags=cflags, + toolchain=toolchain, ) for f in filenamesof(s) if f.endswith(".c") @@ -131,6 +162,7 @@ def libraryimpl( caller_ldflags, cflags, ldflags, + toolchain, commands, label, kind, @@ -159,6 +191,7 @@ def libraryimpl( srcs, targetswithtraitsof(deps, "cheaders"), cflags + bubbledattrsof(deps, "caller_cflags"), + toolchain, kind, ) @@ -188,10 +221,15 @@ def clibrary( caller_ldflags: List = [], cflags: List = [], ldflags: List = [], - commands=["$(AR) cqs {outs[0]} {ins}"], - label="LIB", + toolchain=Toolchain, + commands=None, + label=None, cfilerule=cfile, ): + if not label: + label = toolchain.label + "LIB" + if not commands: + commands = toolchain.clibrary libraryimpl( self, name, @@ -202,6 +240,7 @@ def clibrary( caller_ldflags, cflags, ldflags, + toolchain, commands, label, cfilerule, @@ -219,9 +258,14 @@ def cxxlibrary( caller_ldflags: List = [], cflags: List = [], ldflags: List = [], - commands=["$(AR) cqs {outs[0]} {ins}"], - label="LIB", + toolchain=Toolchain, + commands=None, + label=None, ): + if not label: + label = toolchain.label + "LIB" + if not commands: + commands = toolchain.clibrary libraryimpl( self, name, @@ -232,6 +276,7 @@ def cxxlibrary( caller_ldflags, cflags, ldflags, + toolchain, commands, label, cxxfile, @@ -239,19 +284,29 @@ def cxxlibrary( def programimpl( - self, name, srcs, deps, cflags, ldflags, commands, label, filerule, kind + self, + name, + srcs, + deps, + cflags, + ldflags, + toolchain, + commands, + label, + filerule, + kind, ): ars = filenamesmatchingof(deps, "*.a") deps = deps + filenamesmatchingof(srcs, "*.h") ldflags = ldflags + bubbledattrsof(deps, "caller_ldflags") - cfiles = findsources(name, srcs, deps, cflags, filerule) + cfiles = findsources(name, srcs, deps, cflags, toolchain, filerule) normalrule( replaces=self, ins=cfiles + ars + ars, outs=[basename(name) + "$(EXT)"], deps=deps, - label=label, + label=toolchain.label + label, commands=commands, ldflags=ldflags, ) @@ -265,11 +320,14 @@ def cprogram( deps: Targets = None, cflags: List = [], ldflags: List = [], - commands=["$(CC) -o {outs[0]} {ins} {ldflags} $(LDFLAGS)"], + toolchain=Toolchain, + commands=None, label="CLINK", cfilerule=cfile, cfilekind="cprogram", ): + if not commands: + commands = toolchain.cprogram programimpl( self, name, @@ -277,6 +335,7 @@ def cprogram( deps, cflags, ldflags, + toolchain, commands, label, cfilerule, @@ -292,9 +351,12 @@ def cxxprogram( deps: Targets = None, cflags: List = [], ldflags: List = [], - commands=["$(CXX) -o {outs[0]} {ins} {ldflags} $(LDFLAGS)"], + toolchain=Toolchain, + commands=None, label="CXXLINK", ): + if not commands: + commands = toolchain.cxxprogram programimpl( self, name, @@ -302,6 +364,7 @@ def cxxprogram( deps, cflags, ldflags, + toolchain, commands, label, cxxfile, diff --git a/build/pkg.py b/build/pkg.py index a4200ad3..f7677bca 100644 --- a/build/pkg.py +++ b/build/pkg.py @@ -1,4 +1,4 @@ -from build.ab import Rule, emit, Target, bubbledattrsof +from build.ab import Rule, emit, Target, bubbledattrsof, filenamesof from types import SimpleNamespace import os import subprocess @@ -7,12 +7,18 @@ emit( """ PKG_CONFIG ?= pkg-config PACKAGES := $(shell $(PKG_CONFIG) --list-all | cut -d' ' -f1 | sort) + +HOST_PKG_CONFIG ?= pkg-config +HOST_PACKAGES := $(shell $(HOST_PKG_CONFIG) --list-all | cut -d' ' -f1 | sort) """ ) @Rule def package(self, name, package=None, fallback: Target = None): + self.ins = [] + self.outs = [] + emit("ifeq ($(filter %s, $(PACKAGES)),)" % package) if fallback: emit( @@ -23,7 +29,7 @@ def package(self, name, package=None, fallback: Target = None): f"PACKAGE_LDFLAGS_{package} := ", bubbledattrsof(fallback, "caller_ldflags"), ) - emit(f"PACKAGE_DEP_{package} := ", fallback.name) + self.outs = filenamesof(fallback) else: emit(f"$(error Required package '{package}' not installed.)") emit("else") @@ -33,11 +39,41 @@ def package(self, name, package=None, fallback: Target = None): emit( f"PACKAGE_LDFLAGS_{package} := $(shell $(PKG_CONFIG) --libs {package})" ) - emit(f"PACKAGE_DEP_{package} := ") emit("endif") self.attr.caller_cflags = [f"$(PACKAGE_CFLAGS_{package})"] self.attr.caller_ldflags = [f"$(PACKAGE_LDFLAGS_{package})"] + self.traits.add("clibrary") + self.traits.add("cheaders") + + +@Rule +def hostpackage(self, name, package=None, fallback: Target = None): + emit("ifeq ($(filter %s, $(HOST_PACKAGES)),)" % package) + if fallback: + emit( + f"HOST_PACKAGE_CFLAGS_{package} :=", + bubbledattrsof(fallback, "caller_cflags"), + ) + emit( + f"HOST_PACKAGE_LDFLAGS_{package} := ", + bubbledattrsof(fallback, "caller_ldflags"), + ) + emit(f"HOST_PACKAGE_DEP_{package} := ", fallback.name) + else: + emit(f"$(error Required host package '{package}' not installed.)") + emit("else") + emit( + f"HOST_PACKAGE_CFLAGS_{package} := $(shell $(HOST_PKG_CONFIG) --cflags {package})" + ) + emit( + f"HOST_PACKAGE_LDFLAGS_{package} := $(shell $(HOST_PKG_CONFIG) --libs {package})" + ) + emit(f"HOST_PACKAGE_DEP_{package} := ") + emit("endif") + + self.attr.caller_cflags = [f"$(HOST_PACKAGE_CFLAGS_{package})"] + self.attr.caller_ldflags = [f"$(HOST_PACKAGE_LDFLAGS_{package})"] self.ins = [] - self.outs = [f"$(PACKAGE_DEP_{package})"] + self.outs = [f"$(HOST_PACKAGE_DEP_{package})"] diff --git a/config.py b/config.py index 08073692..062d0f28 100644 --- a/config.py +++ b/config.py @@ -1,5 +1,11 @@ import platform +import os -windows = platform.system() == "Windows" -osx = platform.system() == "Darwin" -unix = not windows +if os.getenv("BUILDTYPE") == "windows": + windows = True + osx = False + unix = False +else: + windows = False + osx = platform.system() == "Darwin" + unix = True diff --git a/dep/fmt/build.py b/dep/fmt/build.py new file mode 100644 index 00000000..9bd272f9 --- /dev/null +++ b/dep/fmt/build.py @@ -0,0 +1,17 @@ +from build.c import cxxlibrary, HostToolchain + +cxxlibrary( + name="fmt", + srcs=[ + "./src/format.cc", + "./src/os.cc", + ], + cflags=["-Idep/fmt/include"], + hdrs={ + "fmt/args.h": "./include/fmt/args.h", + "fmt/chrono.h": "./include/fmt/chrono.h", + "fmt/core.h": "./include/fmt/core.h", + "fmt/format.h": "./include/fmt/format.h", + "fmt/ostream.h": "./include/fmt/ostream.h", + "fmt/ranges.h": "./include/fmt/ranges.h", + }) \ No newline at end of file diff --git a/dep/libusbp/build.py b/dep/libusbp/build.py index 2fe67486..491f7b0e 100644 --- a/dep/libusbp/build.py +++ b/dep/libusbp/build.py @@ -61,7 +61,7 @@ clibrary( name="libusbp", srcs=srcs, cflags=["-Idep/libusbp/include", "-Idep/libusbp/src"], - ldflags=ldflags, + caller_ldflags=ldflags, deps=deps, hdrs={ "libusbp_internal.h": "./src/libusbp_internal.h", diff --git a/scripts/build.py b/scripts/build.py index 021b829e..7d53348a 100644 --- a/scripts/build.py +++ b/scripts/build.py @@ -1,5 +1,5 @@ from build.ab import Rule, normalrule, Targets -from build.c import cxxprogram +from build.c import cxxprogram, HostToolchain encoders = {} diff --git a/src/gui/windres.rc b/src/gui/windres.rc index 9d2a5059..410df629 100644 --- a/src/gui/windres.rc +++ b/src/gui/windres.rc @@ -6,4 +6,4 @@ #include "winuser.h" CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "src/gui/manifest.xml" -101 ICON DISCARDABLE ".obj/extras+fluxengine_ico/fluxengine.ico" +101 ICON DISCARDABLE ".obj/windows/extras/+fluxengine_ico/fluxengine.ico"