]> git.seodisparate.com - LudumDare45_StartWithNothing/commitdiff
Fix wasm build (normal build is broken)
authorStephen Seo <seo.disparate@gmail.com>
Wed, 22 Feb 2023 04:56:31 +0000 (13:56 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 22 Feb 2023 04:56:31 +0000 (13:56 +0900)
src/lib.rs
wasm/Makefile
wasm/include/raylib.h
wasm/lib/libraylib.a
wasm/src/main.c

index c8d84537990b1d2600b29cab0d966dd28129f4cc..0331a45247489aa0275a04722e5d1dd3c875894b 100644 (file)
@@ -1,17 +1,27 @@
-use agnostic_interface::raylib_impl::RaylibGame;
-use faux_quicksilver::Window;
-use original_impl::GameState;
-
 mod agnostic_interface;
 mod faux_quicksilver;
 mod original_impl;
 mod shaders;
 
+use agnostic_interface::raylib_impl::RaylibGame;
+use faux_quicksilver::Window;
+use original_impl::GameState;
+
 struct WasmState {
     pub window: Window,
     pub game_state: GameState,
 }
 
+impl WasmState {
+    pub fn get_window_mut(&mut self) -> &mut Window {
+        &mut self.window
+    }
+
+    pub fn get_state_mut(&mut self) -> &mut GameState {
+        &mut self.game_state
+    }
+}
+
 #[no_mangle]
 pub extern "C" fn ld45_initialize() -> *mut ::std::os::raw::c_void {
     let game_interface = RaylibGame::new_boxed(800, 600);
@@ -25,14 +35,14 @@ pub extern "C" fn ld45_initialize() -> *mut ::std::os::raw::c_void {
 pub extern "C" fn ld45_iterate(context: *mut ::std::os::raw::c_void) {
     let state_ptr = context as *mut WasmState;
     unsafe {
-        (*state_ptr).window.update_music().unwrap();
+        (*state_ptr).get_window_mut().update_music().unwrap();
         (*state_ptr)
-            .game_state
-            .update(&mut (*state_ptr).window)
+            .get_state_mut()
+            .update(&mut (*state_ptr).get_window_mut())
             .unwrap();
         (*state_ptr)
-            .game_state
-            .draw(&mut (*state_ptr).window)
+            .get_state_mut()
+            .draw(&mut (*state_ptr).get_window_mut())
             .unwrap();
     }
 }
index 9821613d1665d7925654cf478028336f441e730a..cffb398a4c5a4e068ab737e3e85c90bc635fa0e2 100644 (file)
@@ -5,14 +5,22 @@ all: ld45.html
 ld45.html: src/main.c ../target/wasm32-unknown-emscripten/release/libld45_lib.a
        ${CC} -o ld45.html -s USE_GLFW=3 -Iinclude \
                -Llib -lraylib \
-               -L../target/wasm32-unknown-emscripten/debug -lld45_lib \
-               -sSAFE_HEAP=1 \
+               -L../target/wasm32-unknown-emscripten/release -lld45_lib \
+               -sTOTAL_MEMORY=1024MB \
+               -sALLOW_MEMORY_GROWTH=1 \
+               -O2 \
+               -sEXPORTED_FUNCTIONS="['_malloc', '_main']" \
                -sEXPORTED_RUNTIME_METHODS=ccall,cwrap \
+-fsanitize=address \
+-sWARN_UNALIGNED=1 \
                --preload-file ../static src/main.c
        ln -sf ld45.html index.html
 
-../target/wasm32-unknown-emscripten/debug/libld45_lib.a: ../src/lib.rs
-       cd ..; source "${HOME}/git/emsdk/emsdk_env.sh"; cargo build --lib --target wasm32-unknown-emscripten
+#-fsanitize=address \
+#-sWARN_UNALIGNED=1 \
+
+../target/wasm32-unknown-emscripten/release/libld45_lib.a: ../src/lib.rs
+       cd ..; source "${HOME}/git/emsdk/emsdk_env.sh"; cargo build --lib --release --target wasm32-unknown-emscripten
 
 .PHONY: clean
 
@@ -22,3 +30,4 @@ clean:
        rm -f ld45.wasm
        rm -f ld45.data
        rm -f index.html
+       cd ..; cargo clean
index 0ace726b05f38260293b2593af205063fd468afb..187d6130f77b06fa613867770f1f3a9dc63651f0 120000 (symlink)
@@ -1 +1 @@
-../raylib/raylib.h
\ No newline at end of file
+../../raylib/raylib.h
\ No newline at end of file
index bcc4351e98420a49e322cc243b5b63041b8eaf1e..09e9745882b4ced2a26017f049c3b92b35f1c8ce 100644 (file)
Binary files a/wasm/lib/libraylib.a and b/wasm/lib/libraylib.a differ
index 56be6a88eeded598a51a56537d0e760f715c8888..83632972d05e29b6085acb8d64e6e4d076052156 100644 (file)
@@ -3,6 +3,8 @@
 
 #include <ld45_lib.h>
 
+#include <stdio.h>
+
 void main_loop(void *ud) {
     ld45_iterate(ud);
 }