diff --git a/compiler/test_gen/src/helpers/wasm.rs b/compiler/test_gen/src/helpers/wasm.rs index 0bd30b636f..d2d7fa8a99 100644 --- a/compiler/test_gen/src/helpers/wasm.rs +++ b/compiler/test_gen/src/helpers/wasm.rs @@ -122,7 +122,7 @@ pub fn helper_wasm<'a, T: Wasm32TestResult>( ); // We can either generate the test platform or write an external source file, whatever works - generate_test_platform(&mut wasm_module, arena); + // generate_test_platform(&mut wasm_module, arena); let mut module_bytes = std::vec::Vec::with_capacity(4096); wasm_module.serialize_mut(&mut module_bytes); diff --git a/compiler/test_gen/src/helpers/wasm_test_platform.c b/compiler/test_gen/src/helpers/wasm_test_platform.c new file mode 100644 index 0000000000..a607d38a8c --- /dev/null +++ b/compiler/test_gen/src/helpers/wasm_test_platform.c @@ -0,0 +1,23 @@ +#include +extern void* test_wrapper(); + +void* roc_alloc(size_t size, unsigned int alignment) { + return malloc(size); +} + +void* roc_realloc(void* ptr, size_t old_size, size_t new_size, unsigned int alignment) { + return realloc(ptr, new_size); +} + +void roc_dealloc(void* ptr, unsigned int alignment) { + free(ptr); +} + +// Having a main function seems to make it easier to convince tools +// to include everything in the output binary. +// Using C as the source language makes it easier to convince them +// to include libc for wasm target, not host. +// The returned int is the memory address of the test result +int main(void) { + return test_wrapper(); +}