Move the external file format stuff into its own module.

This commit is contained in:
David Given
2024-10-15 00:46:46 +02:00
parent ea4a147751
commit 7983a4b883
40 changed files with 96 additions and 154 deletions

View File

@@ -19,14 +19,10 @@ 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/decoders/decoders.cc",
"./lib/fl2.cc",
"./lib/decoders/fluxdecoder.cc",
"./lib/decoders/fmmfm.cc",
"./lib/encoders/encoders.cc",
@@ -52,7 +48,6 @@ cxxlibrary(
"./lib/fluxsource/memoryfluxsource.cc",
"./lib/fluxsource/scpfluxsource.cc",
"./lib/fluxsource/testpatternfluxsource.cc",
"./lib/globals.cc",
"./lib/imagereader/d64imagereader.cc",
"./lib/imagereader/d88imagereader.cc",
"./lib/imagereader/dimimagereader.cc",
@@ -74,7 +69,6 @@ cxxlibrary(
"./lib/imagewriter/ldbsimagewriter.cc",
"./lib/imagewriter/nsiimagewriter.cc",
"./lib/imagewriter/rawimagewriter.cc",
"./lib/ldbs.cc",
"./lib/readerwriter.cc",
"./lib/usb/applesauceusb.cc",
"./lib/usb/fluxengineusb.cc",
@@ -145,22 +139,17 @@ cxxlibrary(
"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/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/scp.h": "./lib/scp.h",
"lib/fl2.h": "./lib/fl2.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/imagereader/imagereader.h": "./lib/imagereader/imagereader.h",
"lib/imagewriter/imagewriter.h": "./lib/imagewriter/imagewriter.h",
"lib/ldbs.h": "./lib/ldbs.h",
"lib/readerwriter.h": "./lib/readerwriter.h",
"lib/usb/applesauce.h": "./lib/usb/applesauce.h",
"lib/usb/greaseweazle.h": "./lib/usb/greaseweazle.h",
@@ -168,7 +157,6 @@ cxxlibrary(
"lib/usb/usbfinder.h": "./lib/usb/usbfinder.h",
},
deps=[
"+fl2_proto_lib",
"+fmt_lib",
"+protocol",
"dep/adflib",
@@ -176,9 +164,11 @@ cxxlibrary(
"dep/hfsutils",
"dep/libusbp",
"dep/stb",
"src/formats",
"lib/core",
"lib/config",
"lib/data",
"lib/external",
"lib/fluxsource+proto_lib",
],
)

View File

@@ -7,21 +7,25 @@ protocc(name="common_proto_lib", srcs=[".+common_proto"])
proto(
name="layout_proto",
srcs=["./layout.proto"],
deps=[".+common_proto", "+fl2_proto"],
deps=[".+common_proto", "lib/external+fl2_proto"],
)
protocc(
name="layout_proto_lib",
srcs=[".+layout_proto"],
deps=[".+common_proto_lib", "+fl2_proto_lib"],
deps=[".+common_proto_lib", "lib/external+fl2_proto_lib"],
)
proto(
name="drive_proto",
srcs=["./drive.proto"],
deps=[".+common_proto", "+fl2_proto", ".+layout_proto"],
deps=[".+common_proto", "lib/external+fl2_proto", ".+layout_proto"],
)
protocc(
name="drive_proto_lib",
srcs=[".+drive_proto"],
deps=[".+common_proto_lib", "+fl2_proto_lib", ".+layout_proto_lib"],
deps=[
".+common_proto_lib",
"lib/external+fl2_proto_lib",
".+layout_proto_lib",
],
)

View File

@@ -8,7 +8,7 @@ proto(
"lib+common_proto",
"lib+layout_proto",
"lib+drive_proto",
"+fl2_proto",
"lib/external+fl2_proto",
"lib/fluxsource+proto",
"lib/fluxsink+proto",
"lib/vfs+proto",
@@ -22,7 +22,7 @@ proto(
protocc(
name="proto_lib",
srcs=[".+proto", "arch+proto", "+fl2_proto"],
srcs=[".+proto", "arch+proto"],
deps=[
"lib/fluxsource+proto_lib",
"lib/fluxsink+proto_lib",
@@ -32,6 +32,7 @@ protocc(
"lib/decoders+proto_lib",
"lib/imagereader+proto_lib",
"lib/imagewriter+proto_lib",
"lib/external+fl2_proto_lib",
"lib+drive_proto_lib",
],
)

View File

@@ -1,8 +1,11 @@
#include "lib/core/globals.h"
#include "lib/core/utils.h"
#include "lib/core/bytes.h"
#include "lib/core/logger.h"
#include <iomanip>
#include <fstream>
#include <sys/time.h>
#include <stdarg.h>
bool emergencyStop = false;
@@ -233,3 +236,17 @@ int findLowestSetBit(uint64_t value)
}
return bit;
}
double getCurrentTime(void)
{
struct timeval tv;
gettimeofday(&tv, NULL);
return double(tv.tv_sec) + tv.tv_usec / 1000000.0;
}
void warning(const std::string msg)
{
log(msg);
}

View File

@@ -1,7 +1,7 @@
syntax = "proto2";
import "lib/common.proto";
import "lib/fl2.proto";
import "lib/external/fl2.proto";
// Next: 15
message DriveProto

View File

20
lib/external/build.py vendored Normal file
View File

@@ -0,0 +1,20 @@
from build.c import cxxlibrary
from build.protobuf import proto, protocc
proto(name="fl2_proto", srcs=["./fl2.proto"])
protocc(name="fl2_proto_lib", srcs=[".+fl2_proto"])
cxxlibrary(
name="external",
srcs=[
"./ldbs.cc",
"./fl2.cc",
],
hdrs={
"lib/external/ldbs.h": "./ldbs.h",
"lib/external/a2r.h": "./a2r.h",
"lib/external/scp.h": "./scp.h",
"lib/external/fl2.h": "./fl2.h",
},
deps=["lib/core", ".+fl2_proto_lib", "lib/data"],
)

View File

@@ -1,7 +1,6 @@
#include "lib/core/globals.h"
#include "lib/config/proto.h"
#include "lib/data/fluxmap.h"
#include "lib/fl2.pb.h"
#include "lib/external/fl2.pb.h"
#include <fstream>
static void upgradeFluxFile(FluxFileProto& proto)

View File

View File

View File

@@ -1,7 +1,7 @@
#include "lib/core/globals.h"
#include <string.h>
#include "lib/core/bytes.h"
#include "lib/ldbs.h"
#include "lib/external/ldbs.h"
LDBS::LDBS() {}

View File

View File

View File

@@ -10,7 +10,7 @@
#include "lib/config/proto.h"
#include "lib/data/fluxmap.h"
#include "lib/data/layout.h"
#include "lib/a2r.h"
#include "lib/external/a2r.h"
#include <fstream>
#include <sys/stat.h>
#include <sys/types.h>

View File

@@ -8,8 +8,8 @@
#include "lib/data/fluxmapreader.h"
#include "lib/fluxsink/fluxsink.pb.h"
#include "lib/config/proto.h"
#include "lib/fl2.pb.h"
#include "lib/fl2.h"
#include "lib/external/fl2.pb.h"
#include "lib/external/fl2.h"
#include <fstream>
#include <sys/stat.h>
#include <sys/types.h>

View File

@@ -10,7 +10,7 @@
#include "lib/config/proto.h"
#include "lib/data/fluxmap.h"
#include "lib/data/layout.h"
#include "lib/scp.h"
#include "lib/external/scp.h"
#include "lib/core/logger.h"
#include <fstream>
#include <sys/stat.h>

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/data/fluxmap.h"
#include "lib/fluxsource/fluxsource.pb.h"
#include "lib/fl2.pb.h"
#include "lib/external/fl2.pb.h"
#include "lib/fluxsource/fluxsource.h"
#include "lib/config/proto.h"
#include "lib/fl2.h"
#include "lib/external/fl2.h"
#include "lib/data/fluxmap.h"
#include <fstream>

View File

@@ -4,7 +4,7 @@
#include "lib/fluxsource/fluxsource.pb.h"
#include "lib/core/utils.h"
#include "lib/fluxsource/fluxsource.h"
#include "lib/scp.h"
#include "lib/external/scp.h"
#include "lib/config/proto.h"
#include "lib/core/logger.h"
#include <fstream>

View File

@@ -1,17 +0,0 @@
#include "lib/core/globals.h"
#include "lib/core/logger.h"
#include <sys/time.h>
#include <stdarg.h>
double getCurrentTime(void)
{
struct timeval tv;
gettimeofday(&tv, NULL);
return double(tv.tv_sec) + tv.tv_usec / 1000000.0;
}
void warning(const std::string msg)
{
log(msg);
}

View File

@@ -1,72 +0,0 @@
#ifndef GLOBALS_H
#define GLOBALS_H
#include <stddef.h>
#include <functional>
#include <numeric>
#include <iostream>
#include <map>
#include <memory>
#include <sstream>
#include <string>
#include <vector>
#include <set>
#include <cassert>
#include <climits>
#include <variant>
#include <optional>
#include <regex>
#include "fmt/format.h"
#if defined(_WIN32) || defined(__WIN32__)
#include <direct.h>
#define mkdir(A, B) _mkdir(A)
#endif
template <class T>
static inline std::vector<T> vector_of(T item)
{
return std::vector<T>{item};
}
typedef double nanoseconds_t;
class Bytes;
extern double getCurrentTime();
extern void hexdump(std::ostream& stream, const Bytes& bytes);
extern void hexdumpForSrp16(std::ostream& stream, const Bytes& bytes);
struct ErrorException
{
ErrorException(const std::string& message): message(message) {}
const std::string message;
void print() const;
};
template <typename... Args>
[[noreturn]] inline void error(fmt::string_view fstr, const Args&... args)
{
throw ErrorException{fmt::format(fstr, args...)};
}
extern void warning(const std::string msg);
template <typename... Args>
inline void warning(fmt::string_view fstr, const Args&... args)
{
warning(fmt::format(fstr, args...));
}
template <class... Ts>
struct overloaded : Ts...
{
using Ts::operator()...;
};
template <class... Ts>
overloaded(Ts...) -> overloaded<Ts...>;
#include "lib/config/config.h"
#endif

View File

@@ -3,7 +3,7 @@
#include "lib/data/sector.h"
#include "lib/imagewriter/imagewriter.h"
#include "lib/data/image.h"
#include "lib/ldbs.h"
#include "lib/external/ldbs.h"
#include "lib/core/logger.h"
#include "lib/config/config.pb.h"
#include <algorithm>

View File

@@ -2,7 +2,7 @@
#include "lib/config/flags.h"
#include "lib/data/sector.h"
#include "lib/imagewriter/imagewriter.h"
#include "lib/ldbs.h"
#include "lib/external/ldbs.h"
#include "lib/data/image.h"
#include "lib/core/logger.h"
#include "lib/config/config.pb.h"

View File

@@ -2,7 +2,7 @@
#include "lib/config/flags.h"
#include "lib/data/sector.h"
#include "lib/imagewriter/imagewriter.h"
#include "lib/ldbs.h"
#include "lib/external/ldbs.h"
#include "lib/data/image.h"
#include "lib/core/logger.h"
#include "lib/config/config.pb.h"

View File

@@ -1,7 +1,7 @@
syntax = "proto2";
import "lib/common.proto";
import "lib/fl2.proto";
import "lib/external/fl2.proto";
message SectorListProto
{

View File

@@ -1,4 +1,4 @@
#include "lib/globals.h"
#include "lib/core/globals.h"
#include "protocol.h"
#include "lib/data/fluxmap.h"
#include "lib/core/bytes.h"

View File

@@ -4,7 +4,7 @@ from build.protobuf import proto, protocc
proto(
name="proto",
srcs=["./vfs.proto"],
deps=["lib+common_proto", "lib+layout_proto", "+fl2_proto"],
deps=["lib+common_proto", "lib+layout_proto", "lib/external+fl2_proto"],
)
protocc(
@@ -13,7 +13,7 @@ protocc(
deps=[
"lib+common_proto_lib",
"lib+layout_proto_lib",
"+fl2_proto_lib",
"lib/external+fl2_proto_lib",
],
)

View File

@@ -18,7 +18,6 @@ def protoencode_single(self, name, srcs: Targets, proto, symbol):
"tests+test_proto_lib",
"+protobuf_lib",
"+fmt_lib",
"+lib",
],
)
encoders[proto] = r
@@ -65,7 +64,6 @@ cxxprogram(
"lib/config+proto_lib",
"lib/fluxsource+proto_lib",
"lib/fluxsink+proto_lib",
"+lib",
"+fmt_lib",
"+protobuf_lib",
],
@@ -79,7 +77,6 @@ cxxprogram(
"lib/config+proto_lib",
"lib/fluxsource+proto_lib",
"lib/fluxsink+proto_lib",
"+lib",
"+fmt_lib",
"+protobuf_lib",
],

View File

@@ -1,4 +1,4 @@
#include "lib/globals.h"
#include "lib/core/globals.h"
#include "lib/config/proto.h"
#include "lib/config/flags.h"
#include "fmt/format.h"

View File

@@ -1,4 +1,4 @@
#include "lib/globals.h"
#include "lib/core/globals.h"
#include "lib/config/proto.h"
#include "lib/config/flags.h"
#include "fmt/format.h"

View File

@@ -123,7 +123,7 @@ int main(int argc, const char* argv[])
auto data = message.SerializeAsString();
auto name = argv[3];
output << "#include \"lib/globals.h\"\n"
output << "#include \"lib/core/globals.h\"\n"
<< "#include \"lib/config/proto.h\"\n"
<< "#include <string_view>\n"
<< "static const uint8_t " << name << "_rawData[] = {";

View File

@@ -30,8 +30,9 @@ cxxprogram(
],
cflags=["-I."],
deps=[
"+fl2_proto_lib",
"+fmt_lib",
"+lib",
"+protobuf_lib",
"+protobuf_lib",
"+protocol",
"+z_lib",
@@ -41,12 +42,12 @@ cxxprogram(
"dep/hfsutils",
"dep/libusbp",
"dep/stb",
"+lib",
"lib/config",
"lib/core",
"lib/data",
"lib/vfs",
"lib/config",
"lib/external",
"lib/fluxsource+proto_lib",
"lib/vfs",
"src/formats",
],
)

View File

@@ -4,8 +4,8 @@
#include "lib/data/sector.h"
#include "lib/config/proto.h"
#include "lib/data/flux.h"
#include "lib/fl2.h"
#include "lib/fl2.pb.h"
#include "lib/external/fl2.h"
#include "lib/external/fl2.pb.h"
#include "src/fluxengine.h"
#include <fstream>

View File

@@ -62,7 +62,7 @@ protoencode(
cxxlibrary(
name="formats",
srcs=[".+formats_cc", ".+table_cc"],
deps=["+lib", "lib/config+proto_lib"],
deps=["lib/config", "lib/core"],
)
export(

View File

@@ -56,7 +56,7 @@ cxxprogram(
cflags=["$(WX_CFLAGS)"],
ldflags=["$(WX_LDFLAGS)"],
deps=[
"+fl2_proto_lib",
"lib/external+fl2_proto_lib",
"+protocol",
"dep/adflib",
"dep/fatfs",

View File

@@ -52,7 +52,7 @@ export(
),
],
deps=[
"+fl2_proto_lib",
"lib/external+fl2_proto_lib",
"+fmt_lib",
"+lib",
"+protobuf_lib",
@@ -82,7 +82,7 @@ export(
name=f"{n}_test_exe",
srcs=[f"./{n}.cc"],
deps=[
"+fl2_proto_lib",
"lib/external+fl2_proto_lib",
"+fmt_lib",
"+lib",
"+protobuf_lib",

View File

@@ -3,7 +3,7 @@
#include <stdlib.h>
#include "lib/core/globals.h"
#include "lib/core/bytes.h"
#include "lib/ldbs.h"
#include "lib/external/ldbs.h"
static Bytes testdata{
// clang-format off

View File

@@ -1,4 +1,4 @@
#include "lib/globals.h"
#include "lib/core/globals.h"
#include "lib/core/bytes.h"
#include "fmt/format.h"
#include "lib/core/utils.h"

View File

@@ -1,4 +1,4 @@
#include "lib/globals.h"
#include "lib/core/globals.h"
#include "fmt/format.h"
#include <fstream>

View File

@@ -9,13 +9,14 @@ cxxprogram(
name="brother120tool",
srcs=["./brother120tool.cc"],
deps=[
"+fmt_lib",
"+lib",
"+protobuf_lib",
"+z_lib",
"lib/config",
"lib/core",
"lib/data",
"lib/config+proto_lib",
"lib/fluxsource+proto_lib",
"+fmt_lib",
"+z_lib",
]
+ emu,
)
@@ -24,13 +25,14 @@ cxxprogram(
name="brother240tool",
srcs=["./brother240tool.cc"],
deps=[
"+fmt_lib",
"+lib",
"+protobuf_lib",
"+z_lib",
"lib/config",
"lib/core",
"lib/data",
"lib/config+proto_lib",
"lib/fluxsource+proto_lib",
"+fmt_lib",
"+z_lib",
]
+ emu,
)
@@ -39,7 +41,6 @@ cxxprogram(
name="upgrade-flux-file",
srcs=["./upgrade-flux-file.cc"],
deps=[
"+fl2_proto_lib",
"+fmt_lib",
"+lib",
"+protobuf_lib",
@@ -48,9 +49,10 @@ cxxprogram(
"+z_lib",
"dep/libusbp",
"lib/config+proto_lib",
"lib/fluxsource+proto_lib",
"src/formats",
"lib/core",
"lib/data",
"lib/external+fl2_proto_lib",
"lib/fluxsource+proto_lib",
"src/formats",
],
)

View File

@@ -1,4 +1,4 @@
#include "lib/globals.h"
#include "lib/core/globals.h"
#include "lib/data/fluxmap.h"
#include "lib/fluxsink/fluxsink.h"
#include "lib/core/bytes.h"