mirror of
				https://github.com/davidgiven/fluxengine.git
				synced 2025-10-24 11:11:02 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			297 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			297 lines
		
	
	
		
			11 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"})
 | |
| 
 | |
| proto(name="fl2_proto", srcs=["lib/fl2.proto"])
 | |
| protocc(name="fl2_proto_lib", srcs=["+fl2_proto"])
 | |
| 
 | |
| cxxlibrary(
 | |
|     name="lib",
 | |
|     srcs=[
 | |
|         "./lib/config.cc",
 | |
|         "./lib/decoders/decoders.cc",
 | |
|         "./lib/decoders/fluxdecoder.cc",
 | |
|         "./lib/decoders/fluxmapreader.cc",
 | |
|         "./lib/decoders/fluxpattern.cc",
 | |
|         "./lib/decoders/fmmfm.cc",
 | |
|         "./lib/encoders/encoders.cc",
 | |
|         "./lib/fl2.cc",
 | |
|         "./lib/flags.cc",
 | |
|         "./lib/fluxmap.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/globals.cc",
 | |
|         "./lib/image.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/layout.cc",
 | |
|         "./lib/ldbs.cc",
 | |
|         "./lib/logrenderer.cc",
 | |
|         "./lib/proto.cc",
 | |
|         "./lib/readerwriter.cc",
 | |
|         "./lib/sector.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/a2r.h": "./lib/a2r.h",
 | |
|         "lib/config.h": "./lib/config.h",
 | |
|         "lib/decoders/decoders.h": "./lib/decoders/decoders.h",
 | |
|         "lib/decoders/fluxdecoder.h": "./lib/decoders/fluxdecoder.h",
 | |
|         "lib/decoders/fluxmapreader.h": "./lib/decoders/fluxmapreader.h",
 | |
|         "lib/decoders/fluxpattern.h": "./lib/decoders/fluxpattern.h",
 | |
|         "lib/decoders/rawbits.h": "./lib/decoders/rawbits.h",
 | |
|         "lib/encoders/encoders.h": "./lib/encoders/encoders.h",
 | |
|         "lib/scp.h": "./lib/scp.h",
 | |
|         "lib/fl2.h": "./lib/fl2.h",
 | |
|         "lib/flags.h": "./lib/flags.h",
 | |
|         "lib/flux.h": "./lib/flux.h",
 | |
|         "lib/fluxmap.h": "./lib/fluxmap.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/globals.h": "./lib/globals.h",
 | |
|         "lib/image.h": "./lib/image.h",
 | |
|         "lib/imagereader/imagereader.h": "./lib/imagereader/imagereader.h",
 | |
|         "lib/imagewriter/imagewriter.h": "./lib/imagewriter/imagewriter.h",
 | |
|         "lib/layout.h": "./lib/layout.h",
 | |
|         "lib/ldbs.h": "./lib/ldbs.h",
 | |
|         "lib/proto.h": "./lib/proto.h",
 | |
|         "lib/readerwriter.h": "./lib/readerwriter.h",
 | |
|         "lib/sector.h": "./lib/sector.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=[
 | |
|         "+fl2_proto_lib",
 | |
|         "+fmt_lib",
 | |
|         "+protocol",
 | |
|         "dep/adflib",
 | |
|         "dep/fatfs",
 | |
|         "dep/hfsutils",
 | |
|         "dep/libusbp",
 | |
|         "dep/stb",
 | |
|         "lib+config_proto_lib",
 | |
|         "lib/core",
 | |
|         "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,
 | |
| )
 |