mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-24 11:11:02 -07:00
268 lines
10 KiB
Python
268 lines
10 KiB
Python
from build.ab import export
|
|
from build.c import clibrary, cxxlibrary
|
|
from build.protobuf import proto, protocc
|
|
from build.pkg import package, hostpackage
|
|
from build.utils import test
|
|
from glob import glob
|
|
import config
|
|
import re
|
|
|
|
package(name="protobuf_lib", package="protobuf")
|
|
package(name="z_lib", package="zlib")
|
|
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", fallback="dep/fmt")
|
|
hostpackage(name="sqlite3_host_lib", package="sqlite3")
|
|
|
|
clibrary(name="protocol", hdrs={"protocol.h": "./protocol.h"})
|
|
|
|
cxxlibrary(
|
|
name="lib",
|
|
srcs=[
|
|
"./lib/decoders/decoders.cc",
|
|
"./lib/decoders/fluxdecoder.cc",
|
|
"./lib/decoders/fmmfm.cc",
|
|
"./lib/encoders/encoders.cc",
|
|
"./lib/fluxsink/a2rfluxsink.cc",
|
|
"./lib/fluxsink/aufluxsink.cc",
|
|
"./lib/fluxsink/fl2fluxsink.cc",
|
|
"./lib/fluxsink/fluxsink.cc",
|
|
"./lib/fluxsink/hardwarefluxsink.cc",
|
|
"./lib/fluxsink/scpfluxsink.cc",
|
|
"./lib/fluxsink/vcdfluxsink.cc",
|
|
"./lib/fluxsource/a2rfluxsource.cc",
|
|
"./lib/fluxsource/catweasel.cc",
|
|
"./lib/fluxsource/cwffluxsource.cc",
|
|
"./lib/fluxsource/dmkfluxsource.cc",
|
|
"./lib/fluxsource/erasefluxsource.cc",
|
|
"./lib/fluxsource/fl2fluxsource.cc",
|
|
"./lib/fluxsource/fluxsource.cc",
|
|
"./lib/fluxsource/flx.cc",
|
|
"./lib/fluxsource/flxfluxsource.cc",
|
|
"./lib/fluxsource/hardwarefluxsource.cc",
|
|
"./lib/fluxsource/kryoflux.cc",
|
|
"./lib/fluxsource/kryofluxfluxsource.cc",
|
|
"./lib/fluxsource/memoryfluxsource.cc",
|
|
"./lib/fluxsource/scpfluxsource.cc",
|
|
"./lib/fluxsource/testpatternfluxsource.cc",
|
|
"./lib/imagereader/d64imagereader.cc",
|
|
"./lib/imagereader/d88imagereader.cc",
|
|
"./lib/imagereader/dimimagereader.cc",
|
|
"./lib/imagereader/diskcopyimagereader.cc",
|
|
"./lib/imagereader/fdiimagereader.cc",
|
|
"./lib/imagereader/imagereader.cc",
|
|
"./lib/imagereader/imdimagereader.cc",
|
|
"./lib/imagereader/imgimagereader.cc",
|
|
"./lib/imagereader/jv3imagereader.cc",
|
|
"./lib/imagereader/nfdimagereader.cc",
|
|
"./lib/imagereader/nsiimagereader.cc",
|
|
"./lib/imagereader/td0imagereader.cc",
|
|
"./lib/imagewriter/d64imagewriter.cc",
|
|
"./lib/imagewriter/d88imagewriter.cc",
|
|
"./lib/imagewriter/diskcopyimagewriter.cc",
|
|
"./lib/imagewriter/imagewriter.cc",
|
|
"./lib/imagewriter/imdimagewriter.cc",
|
|
"./lib/imagewriter/imgimagewriter.cc",
|
|
"./lib/imagewriter/ldbsimagewriter.cc",
|
|
"./lib/imagewriter/nsiimagewriter.cc",
|
|
"./lib/imagewriter/rawimagewriter.cc",
|
|
"./lib/readerwriter.cc",
|
|
"./lib/usb/applesauceusb.cc",
|
|
"./lib/usb/fluxengineusb.cc",
|
|
"./lib/usb/greaseweazle.cc",
|
|
"./lib/usb/greaseweazleusb.cc",
|
|
"./lib/usb/serial.cc",
|
|
"./lib/usb/usb.cc",
|
|
"./lib/usb/usbfinder.cc",
|
|
"./arch/aeslanier/decoder.cc",
|
|
"./arch/agat/agat.cc",
|
|
"./arch/agat/decoder.cc",
|
|
"./arch/agat/encoder.cc",
|
|
"./arch/amiga/amiga.cc",
|
|
"./arch/amiga/decoder.cc",
|
|
"./arch/amiga/encoder.cc",
|
|
"./arch/apple2/decoder.cc",
|
|
"./arch/apple2/encoder.cc",
|
|
"./arch/brother/decoder.cc",
|
|
"./arch/brother/encoder.cc",
|
|
"./arch/c64/c64.cc",
|
|
"./arch/c64/decoder.cc",
|
|
"./arch/c64/encoder.cc",
|
|
"./arch/f85/decoder.cc",
|
|
"./arch/fb100/decoder.cc",
|
|
"./arch/ibm/decoder.cc",
|
|
"./arch/ibm/encoder.cc",
|
|
"./arch/macintosh/decoder.cc",
|
|
"./arch/macintosh/encoder.cc",
|
|
"./arch/micropolis/decoder.cc",
|
|
"./arch/micropolis/encoder.cc",
|
|
"./arch/mx/decoder.cc",
|
|
"./arch/northstar/decoder.cc",
|
|
"./arch/northstar/encoder.cc",
|
|
"./arch/rolandd20/decoder.cc",
|
|
"./arch/smaky6/decoder.cc",
|
|
"./arch/tartu/decoder.cc",
|
|
"./arch/tartu/encoder.cc",
|
|
"./arch/tids990/decoder.cc",
|
|
"./arch/tids990/encoder.cc",
|
|
"./arch/victor9k/decoder.cc",
|
|
"./arch/victor9k/encoder.cc",
|
|
"./arch/zilogmcz/decoder.cc",
|
|
],
|
|
hdrs={
|
|
"arch/ibm/ibm.h": "./arch/ibm/ibm.h",
|
|
"arch/apple2/data_gcr.h": "./arch/apple2/data_gcr.h",
|
|
"arch/apple2/apple2.h": "./arch/apple2/apple2.h",
|
|
"arch/smaky6/smaky6.h": "./arch/smaky6/smaky6.h",
|
|
"arch/tids990/tids990.h": "./arch/tids990/tids990.h",
|
|
"arch/zilogmcz/zilogmcz.h": "./arch/zilogmcz/zilogmcz.h",
|
|
"arch/amiga/amiga.h": "./arch/amiga/amiga.h",
|
|
"arch/f85/data_gcr.h": "./arch/f85/data_gcr.h",
|
|
"arch/f85/f85.h": "./arch/f85/f85.h",
|
|
"arch/mx/mx.h": "./arch/mx/mx.h",
|
|
"arch/aeslanier/aeslanier.h": "./arch/aeslanier/aeslanier.h",
|
|
"arch/northstar/northstar.h": "./arch/northstar/northstar.h",
|
|
"arch/brother/data_gcr.h": "./arch/brother/data_gcr.h",
|
|
"arch/brother/brother.h": "./arch/brother/brother.h",
|
|
"arch/brother/header_gcr.h": "./arch/brother/header_gcr.h",
|
|
"arch/macintosh/data_gcr.h": "./arch/macintosh/data_gcr.h",
|
|
"arch/macintosh/macintosh.h": "./arch/macintosh/macintosh.h",
|
|
"arch/agat/agat.h": "./arch/agat/agat.h",
|
|
"arch/fb100/fb100.h": "./arch/fb100/fb100.h",
|
|
"arch/victor9k/data_gcr.h": "./arch/victor9k/data_gcr.h",
|
|
"arch/victor9k/victor9k.h": "./arch/victor9k/victor9k.h",
|
|
"arch/rolandd20/rolandd20.h": "./arch/rolandd20/rolandd20.h",
|
|
"arch/micropolis/micropolis.h": "./arch/micropolis/micropolis.h",
|
|
"arch/c64/data_gcr.h": "./arch/c64/data_gcr.h",
|
|
"arch/c64/c64.h": "./arch/c64/c64.h",
|
|
"arch/tartu/tartu.h": "./arch/tartu/tartu.h",
|
|
"lib/decoders/decoders.h": "./lib/decoders/decoders.h",
|
|
"lib/decoders/fluxdecoder.h": "./lib/decoders/fluxdecoder.h",
|
|
"lib/decoders/rawbits.h": "./lib/decoders/rawbits.h",
|
|
"lib/encoders/encoders.h": "./lib/encoders/encoders.h",
|
|
"lib/fluxsink/fluxsink.h": "./lib/fluxsink/fluxsink.h",
|
|
"lib/fluxsource/catweasel.h": "lib/fluxsource/catweasel.h",
|
|
"lib/fluxsource/fluxsource.h": "lib/fluxsource/fluxsource.h",
|
|
"lib/fluxsource/flx.h": "lib/fluxsource/flx.h",
|
|
"lib/fluxsource/kryoflux.h": "lib/fluxsource/kryoflux.h",
|
|
"lib/imagereader/imagereader.h": "./lib/imagereader/imagereader.h",
|
|
"lib/imagewriter/imagewriter.h": "./lib/imagewriter/imagewriter.h",
|
|
"lib/readerwriter.h": "./lib/readerwriter.h",
|
|
"lib/usb/applesauce.h": "./lib/usb/applesauce.h",
|
|
"lib/usb/greaseweazle.h": "./lib/usb/greaseweazle.h",
|
|
"lib/usb/usb.h": "./lib/usb/usb.h",
|
|
"lib/usb/usbfinder.h": "./lib/usb/usbfinder.h",
|
|
},
|
|
deps=[
|
|
"+fmt_lib",
|
|
"+protocol",
|
|
"dep/adflib",
|
|
"dep/fatfs",
|
|
"dep/hfsutils",
|
|
"dep/libusbp",
|
|
"dep/stb",
|
|
"src/formats",
|
|
"lib/core",
|
|
"lib/config",
|
|
"lib/data",
|
|
"lib/external",
|
|
"lib/fluxsource+proto_lib",
|
|
],
|
|
)
|
|
|
|
corpustests = []
|
|
if not glob("../fluxengine-testdata/data"):
|
|
print("fluxengine-testdata not found; skipping corpus tests")
|
|
else:
|
|
corpus = [
|
|
("acorndfs", "", "--200"),
|
|
("agat", "", ""),
|
|
("amiga", "", ""),
|
|
("apple2", "", "--140 40track_drive"),
|
|
("atarist", "", "--360"),
|
|
("atarist", "", "--370"),
|
|
("atarist", "", "--400"),
|
|
("atarist", "", "--410"),
|
|
("atarist", "", "--720"),
|
|
("atarist", "", "--740"),
|
|
("atarist", "", "--800"),
|
|
("atarist", "", "--820"),
|
|
("bk", "", ""),
|
|
("brother", "", "--120 40track_drive"),
|
|
("brother", "", "--240"),
|
|
(
|
|
"commodore",
|
|
"scripts/commodore1541_test.textpb",
|
|
"--171 40track_drive",
|
|
),
|
|
(
|
|
"commodore",
|
|
"scripts/commodore1541_test.textpb",
|
|
"--192 40track_drive",
|
|
),
|
|
("commodore", "", "--800"),
|
|
("commodore", "", "--1620"),
|
|
("hplif", "", "--264"),
|
|
("hplif", "", "--608"),
|
|
("hplif", "", "--616"),
|
|
("hplif", "", "--770"),
|
|
("ibm", "", "--1200"),
|
|
("ibm", "", "--1232"),
|
|
("ibm", "", "--1440"),
|
|
("ibm", "", "--1680"),
|
|
("ibm", "", "--180 40track_drive"),
|
|
("ibm", "", "--160 40track_drive"),
|
|
("ibm", "", "--320 40track_drive"),
|
|
("ibm", "", "--360 40track_drive"),
|
|
("ibm", "", "--720_96"),
|
|
("ibm", "", "--720_135"),
|
|
("mac", "scripts/mac400_test.textpb", "--400"),
|
|
("mac", "scripts/mac800_test.textpb", "--800"),
|
|
("n88basic", "", ""),
|
|
("rx50", "", ""),
|
|
("tartu", "", "--390 40track_drive"),
|
|
("tartu", "", "--780"),
|
|
("tids990", "", ""),
|
|
("victor9k", "", "--612"),
|
|
("victor9k", "", "--1224"),
|
|
]
|
|
|
|
for c in corpus:
|
|
name = re.sub(r"[^a-zA-Z0-9]", "_", "".join(c), 0)
|
|
corpustests += [
|
|
test(
|
|
name=f"corpustest_{name}_{format}",
|
|
ins=["src+fluxengine"],
|
|
deps=["scripts/encodedecodetest.sh"],
|
|
commands=[
|
|
"{deps[0]} "
|
|
+ c[0]
|
|
+ " "
|
|
+ format
|
|
+ " {ins[0]} '"
|
|
+ c[1]
|
|
+ "' '"
|
|
+ c[2]
|
|
+ "' $(dir {outs[0]}) > /dev/null"
|
|
],
|
|
label="CORPUSTEST",
|
|
)
|
|
for format in ["scp", "flux"]
|
|
]
|
|
|
|
export(
|
|
name="all",
|
|
items={
|
|
"fluxengine$(EXT)": "src+fluxengine",
|
|
"fluxengine-gui$(EXT)": "src/gui",
|
|
"brother120tool$(EXT)": "tools+brother120tool",
|
|
"brother240tool$(EXT)": "tools+brother240tool",
|
|
"upgrade-flux-file$(EXT)": "tools+upgrade-flux-file",
|
|
}
|
|
| ({"FluxEngine.pkg": "src/gui+fluxengine_pkg"} if config.osx else {}),
|
|
deps=["tests", "src/formats+docs", "scripts+mkdocindex"] + corpustests,
|
|
)
|