From 5e8b82f5a0e77fc3c0aed06f2940064a783422c7 Mon Sep 17 00:00:00 2001 From: MartinFillon Date: Tue, 11 Mar 2025 14:45:13 +0100 Subject: [PATCH 01/70] feat(ecs/compilation): add basic makefile --- packages/ecs/Makefile | 24 ++++++++++++++++++++++++ packages/ecs/wasm/lib.cpp | 0 2 files changed, 24 insertions(+) create mode 100644 packages/ecs/Makefile create mode 100644 packages/ecs/wasm/lib.cpp diff --git a/packages/ecs/Makefile b/packages/ecs/Makefile new file mode 100644 index 00000000..b213c336 --- /dev/null +++ b/packages/ecs/Makefile @@ -0,0 +1,24 @@ +SRC := wasm/lib.cpp + +NAME := libecs + +JS_NAME = $(NAME).js +WASM_NAME = $(NAME).wasm + +CC := emcc + +CFLAGS := -s WASM=1 -s EXPORTED_RUNTIME_METHODS='["cwrap"]' + +all: $(JS_NAME) + +$(JS_NAME): + $(CC) $(SRC) $(CFLAGS) -o $(JS_NAME) + +clean: + $(RM) $(JS_NAME) $(WASM_NAME) + +fclean: clean + +re: fclean all + +.PHONY: re fclean all clean $(JS_NAME) diff --git a/packages/ecs/wasm/lib.cpp b/packages/ecs/wasm/lib.cpp new file mode 100644 index 00000000..e69de29b From aa33dd112e36297bee56dfac1fe1bd890bceb73a Mon Sep 17 00:00:00 2001 From: Exelo Date: Tue, 11 Mar 2025 14:50:36 +0100 Subject: [PATCH 02/70] feat: add wasm compilation to package.json --- .idea/inspectionProfiles/Project_Default.xml | 6 ++ .idea/jsLinters/eslint.xml | 6 ++ .idea/prettier.xml | 7 +++ packages/ecs/.idea/.gitignore | 8 +++ packages/ecs/.idea/codeStyles/Project.xml | 57 +++++++++++++++++++ .../ecs/.idea/codeStyles/codeStyleConfig.xml | 5 ++ packages/ecs/.idea/ecs.iml | 12 ++++ packages/ecs/.idea/git_toolbox_blame.xml | 6 ++ packages/ecs/.idea/git_toolbox_prj.xml | 15 +++++ .../inspectionProfiles/Project_Default.xml | 6 ++ packages/ecs/.idea/modules.xml | 8 +++ packages/ecs/.idea/prettier.xml | 6 ++ packages/ecs/.idea/vcs.xml | 6 ++ packages/ecs/package.json | 8 ++- 14 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jsLinters/eslint.xml create mode 100644 .idea/prettier.xml create mode 100644 packages/ecs/.idea/.gitignore create mode 100644 packages/ecs/.idea/codeStyles/Project.xml create mode 100644 packages/ecs/.idea/codeStyles/codeStyleConfig.xml create mode 100644 packages/ecs/.idea/ecs.iml create mode 100644 packages/ecs/.idea/git_toolbox_blame.xml create mode 100644 packages/ecs/.idea/git_toolbox_prj.xml create mode 100644 packages/ecs/.idea/inspectionProfiles/Project_Default.xml create mode 100644 packages/ecs/.idea/modules.xml create mode 100644 packages/ecs/.idea/prettier.xml create mode 100644 packages/ecs/.idea/vcs.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..03d9549e --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/jsLinters/eslint.xml b/.idea/jsLinters/eslint.xml new file mode 100644 index 00000000..541945bb --- /dev/null +++ b/.idea/jsLinters/eslint.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 00000000..0c83ac4e --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/.gitignore b/packages/ecs/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/packages/ecs/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/packages/ecs/.idea/codeStyles/Project.xml b/packages/ecs/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..b70d7533 --- /dev/null +++ b/packages/ecs/.idea/codeStyles/Project.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/codeStyles/codeStyleConfig.xml b/packages/ecs/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..79ee123c --- /dev/null +++ b/packages/ecs/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/ecs.iml b/packages/ecs/.idea/ecs.iml new file mode 100644 index 00000000..24643cc3 --- /dev/null +++ b/packages/ecs/.idea/ecs.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/git_toolbox_blame.xml b/packages/ecs/.idea/git_toolbox_blame.xml new file mode 100644 index 00000000..7dc12496 --- /dev/null +++ b/packages/ecs/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/git_toolbox_prj.xml b/packages/ecs/.idea/git_toolbox_prj.xml new file mode 100644 index 00000000..02b915b8 --- /dev/null +++ b/packages/ecs/.idea/git_toolbox_prj.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/inspectionProfiles/Project_Default.xml b/packages/ecs/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..03d9549e --- /dev/null +++ b/packages/ecs/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/modules.xml b/packages/ecs/.idea/modules.xml new file mode 100644 index 00000000..e05b1565 --- /dev/null +++ b/packages/ecs/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/prettier.xml b/packages/ecs/.idea/prettier.xml new file mode 100644 index 00000000..b0c1c68f --- /dev/null +++ b/packages/ecs/.idea/prettier.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/vcs.xml b/packages/ecs/.idea/vcs.xml new file mode 100644 index 00000000..b2bdec2d --- /dev/null +++ b/packages/ecs/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/ecs/package.json b/packages/ecs/package.json index 2ce6f3d7..dab55c23 100644 --- a/packages/ecs/package.json +++ b/packages/ecs/package.json @@ -22,8 +22,12 @@ "directory": "packages/ecs" }, "scripts": { - "build": "tsc -b .", - "clean": "pnpm clean:types && pnpm clean:scripts && rm -f tsconfig.build.tsbuildinfo", + "build": "pnpm build:wasm && pnpm build:script", + "build:script": "tsc -b .", + "build:wasm": "make", + "clean": "pnpm clean:wasm && pnpm clean:script", + "clean:script": "pnpm clean:types && pnpm clean:scripts && rm -f tsconfig.build.tsbuildinfo", + "clean:wasm": "make fclean", "clean:types": "find src -name '*.d.ts' -delete", "clean:scripts": "find src -name '*.js' -delete", "lint": "eslint . && prettier --check .", From da68dcb31cec0903c4c2b14d522ec71af3601562 Mon Sep 17 00:00:00 2001 From: Exelo Date: Tue, 11 Mar 2025 14:55:58 +0100 Subject: [PATCH 03/70] chore: fix idea --- packages/ecs/.idea/[NanoForge] Engine ECS.iml | 12 ++++++++++++ packages/ecs/.idea/modules.xml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 packages/ecs/.idea/[NanoForge] Engine ECS.iml diff --git a/packages/ecs/.idea/[NanoForge] Engine ECS.iml b/packages/ecs/.idea/[NanoForge] Engine ECS.iml new file mode 100644 index 00000000..24643cc3 --- /dev/null +++ b/packages/ecs/.idea/[NanoForge] Engine ECS.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/ecs/.idea/modules.xml b/packages/ecs/.idea/modules.xml index e05b1565..976c039c 100644 --- a/packages/ecs/.idea/modules.xml +++ b/packages/ecs/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file From b4406f856e9f052c4d092cc8b992dd28502891c8 Mon Sep 17 00:00:00 2001 From: MartinFillon Date: Tue, 11 Mar 2025 15:01:21 +0100 Subject: [PATCH 04/70] feat(ecs/compilation): add wasm object creation --- packages/ecs/.gitignore | 5 +++++ packages/ecs/Makefile | 21 ++++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/ecs/.gitignore b/packages/ecs/.gitignore index e4b7d812..aa0eb0fb 100644 --- a/packages/ecs/.gitignore +++ b/packages/ecs/.gitignore @@ -229,3 +229,8 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# pubilc directory +public/ +*.o +compile_commands.json diff --git a/packages/ecs/Makefile b/packages/ecs/Makefile index b213c336..8f29c7d5 100644 --- a/packages/ecs/Makefile +++ b/packages/ecs/Makefile @@ -1,20 +1,27 @@ -SRC := wasm/lib.cpp +SRC = wasm/lib.cpp NAME := libecs -JS_NAME = $(NAME).js -WASM_NAME = $(NAME).wasm +OUT_DIR = public +JS_NAME = $(OUT_DIR)/$(NAME).js +WASM_NAME = $(OUT_DIR)/$(NAME).wasm -CC := emcc +CC = emcc -CFLAGS := -s WASM=1 -s EXPORTED_RUNTIME_METHODS='["cwrap"]' +OBJ = $(SRC:.cpp=.o) + +%.o: %.cpp + $(CC) -c $< -o $@ all: $(JS_NAME) -$(JS_NAME): - $(CC) $(SRC) $(CFLAGS) -o $(JS_NAME) +$(JS_NAME): $(OBJ) + @mkdir -p $(OUT_DIR) + $(CC) $(OBJ) $(CFLAGS) -o $(JS_NAME) clean: + $(RM) $(OBJ) + $(RM) -r $(OUT_DIR) $(RM) $(JS_NAME) $(WASM_NAME) fclean: clean From 82a46caab9d93033e9c64a2ec962f98f74da1971 Mon Sep 17 00:00:00 2001 From: Leo Date: Tue, 11 Mar 2025 16:01:27 +0100 Subject: [PATCH 05/70] feat(ecs/wasm): emsdk installation script in Readme.md --- packages/ecs/.gitignore | 1 + packages/ecs/.idea/codeStyles/Project.xml | 99 ++++++++++++++++++++ packages/ecs/.idea/ecs.iml | 12 +-- packages/ecs/.idea/editor.xml | 105 ++++++++++++++++++++++ packages/ecs/.idea/misc.xml | 17 ++++ packages/ecs/.idea/modules.xml | 1 + packages/ecs/README.md | 11 +++ 7 files changed, 235 insertions(+), 11 deletions(-) create mode 100644 packages/ecs/.idea/editor.xml create mode 100644 packages/ecs/.idea/misc.xml diff --git a/packages/ecs/.gitignore b/packages/ecs/.gitignore index aa0eb0fb..7a8862ed 100644 --- a/packages/ecs/.gitignore +++ b/packages/ecs/.gitignore @@ -234,3 +234,4 @@ src/**/*.d.ts public/ *.o compile_commands.json +emsdk/ diff --git a/packages/ecs/.idea/codeStyles/Project.xml b/packages/ecs/.idea/codeStyles/Project.xml index b70d7533..9ea8f6b5 100644 --- a/packages/ecs/.idea/codeStyles/Project.xml +++ b/packages/ecs/.idea/codeStyles/Project.xml @@ -11,6 +11,105 @@