added unpack & moved build stuff

This commit is contained in:
Niklas Kapelle 2024-04-16 11:05:28 +02:00
parent baae1428bd
commit adb758bd53
Signed by: niklas
GPG Key ID: 4EB651B36D841D16
7 changed files with 73 additions and 18 deletions

View File

@ -1,32 +1,57 @@
BUNDLE_NAME = bundle.lua BUNDLE_NAME = bundle.lua
HAXE_NAME = haxe.lua HAXE_NAME = haxe.lua
MINIFYD_NAME = bundle.min.lua MINIFYD_NAME = bundle.min.lua
HAXE_ZIP_NAME = "haxe.zip"
UNPACK_NAME = unpack.lua
UNPACK_POLYFILLED_NAME = unpack.polyfill.lua
UNPACK_MINIFYD_NAME = unpack.min.lua
BUILD_DIR = build BUILD_DIR = build
HAXE_FLAGS = HAXE_FLAGS =
POLYFILLED_NAME = bundle.polyfill.lua POLYFILLED_NAME = bundle.polyfill.lua
POLYFILL_SRC = src/polyfill.lua POLYFILL_SRC = src/polyfill.lua
CREAFTOS_PATH = craftos CREAFTOS_PATH = craftos
BUILD_HXML = build.hxml
HAXE_PATH := $(BUILD_DIR)/$(HAXE_NAME) HAXE_PATH := $(BUILD_DIR)/$(HAXE_NAME)
MIN_PATH := $(BUILD_DIR)/$(MINIFYD_NAME) MIN_PATH := $(BUILD_DIR)/$(MINIFYD_NAME)
POLYFILL_PATH := $(BUILD_DIR)/$(POLYFILLED_NAME) POLYFILL_PATH := $(BUILD_DIR)/$(POLYFILLED_NAME)
UNPACK_PATH := $(BUILD_DIR)/$(UNPACK_NAME)
UNPACK_MINIFYD_PATH := $(BUILD_DIR)/$(UNPACK_MINIFYD_NAME)
HAXE_ZIP_PATH := $(BUILD_DIR)/$(HAXE_ZIP_NAME)
UNPACK_POLYFILLED_PATH := $(BUILD_DIR)/$(UNPACK_POLYFILLED_NAME)
all: clean build all: clean build unpack
build: HAXE_FLAGS += --main kernel.Entrypoint -D analyzer-optimize build: HAXE_FLAGS += -D analyzer-optimize
build: $(MIN_PATH) build: $(MIN_PATH)
debug: HAXE_FLAGS += -D webconsole -D error_stack --debug debug: HAXE_FLAGS += -D webconsole -D error_stack --debug
debug: build debug: $(MIN_PATH)
unpack: $(UNPACK_MINIFYD_PATH) $(HAXE_ZIP_PATH)
$(HAXE_PATH): HAXE_FLAGS += --main kernel.Entrypoint --lua $(HAXE_PATH)
$(HAXE_PATH): $(shell find src -name '*.hx') $(HAXE_PATH): $(shell find src -name '*.hx')
haxe build.hxml $(HAXE_FLAGS) haxe $(BUILD_HXML) $(HAXE_FLAGS)
$(POLYFILL_PATH): $(POLYFILL_SRC) $(HAXE_PATH) $(POLYFILL_PATH): $(POLYFILL_SRC) $(HAXE_PATH)
cat $(POLYFILL_SRC) $(HAXE_PATH) > $@ cat $(POLYFILL_SRC) $(HAXE_PATH) > $@
$(MIN_PATH): $(POLYFILL_PATH) $(MIN_PATH): $(POLYFILL_PATH)
node minify.js $(POLYFILL_PATH) $@ node tools/minify.js < $(POLYFILL_PATH) > $@
$(HAXE_ZIP_PATH): $(MIN_PATH)
node tools/zlibDeflate.js < $(MIN_PATH) > $@
$(UNPACK_PATH): HAXE_FLAGS += --main Unpack -D analyzer-optimize --lua $(UNPACK_PATH)
$(UNPACK_PATH): $(shell find src -name '*.hx')
haxe $(BUILD_HXML) $(HAXE_FLAGS)
$(UNPACK_POLYFILLED_PATH): $(UNPACK_PATH)
cat $(POLYFILL_SRC) $(UNPACK_PATH) > $@
$(UNPACK_MINIFYD_PATH): $(UNPACK_POLYFILLED_PATH)
node tools/minify.js < $(UNPACK_POLYFILLED_PATH) > $@
.PHONY: deps .PHONY: deps
deps: deps-hx deps-node deps: deps-hx deps-node
@ -54,7 +79,7 @@ emulator:
.PHONY: webconsole .PHONY: webconsole
webconsole: webconsole:
node console.js node tools/console.js
.PHONY: format .PHONY: format
format: format:

View File

@ -10,5 +10,3 @@
-D lua-ver 5.1 -D lua-ver 5.1
--macro include("bin") --macro include("bin")
--lua build/haxe.lua

View File

@ -1,10 +0,0 @@
const fs = require("fs");
const luamin = require("luamin");
const haxeOutput = fs.readFileSync(process.argv[2] ?? "build/Haxe.min.lua",{encoding:"utf8"});
const minified = luamin.minify(haxeOutput);
fs.writeFileSync(process.argv[3] ?? "build/Haxe.min.lua",minified);
console.log("minified lua");

29
src/Unpack.hx Normal file
View File

@ -0,0 +1,29 @@
import lua.Lua;
import haxe.io.Bytes;
import kernel.fs.FS;
import haxe.zip.Uncompress;
class Unpack {
public static function main() {
var filename = "/haxe.zip";
var handle = FS.openReadBinary(filename);
var size = FS.attributes(filename).size;
var data = Bytes.alloc(size);
for (i in 0...size) {
data.set(i, handle.readByte());
}
var uncompressed = Uncompress.run(data);
var res = Lua.load(uncompressed.toString()); // FIXME: Haxe is missing some parameters. This does not work.
var f = res.func; // Required for silly haxe bug.
if (res.message == null) {
f();
} else {
trace('Failed: ${res.message}');
}
}
}

8
tools/minify.js Normal file
View File

@ -0,0 +1,8 @@
const fs = require("fs");
const luamin = require("luamin");
const haxeOutput = fs.readFileSync(0, { encoding: "utf8" });
const minified = luamin.minify(haxeOutput);
fs.writeFileSync(1, minified);

5
tools/zlibDeflate.js Normal file
View File

@ -0,0 +1,5 @@
const zlib = require('node:zlib');
let def = zlib.createDeflate();
process.stdin.pipe(def).pipe(process.stdout);