diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a4b33e..5fac694 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,8 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/out) if(CMAKE_C_COMPILER_ID MATCHES "AppleClang|Clang|GNU") list(APPEND uvwasi_cflags -fvisibility=hidden --std=gnu89) + add_compile_definitions(NEED_UVWASI_EXPORT) + list(APPEND uvwasi_cflags -Wall -Wsign-compare -Wextra -Wstrict-prototypes) list(APPEND uvwasi_cflags -Wno-unused-parameter) endif() diff --git a/include/wasi_serdes.h b/include/wasi_serdes.h index 90db7cd..b482918 100644 --- a/include/wasi_serdes.h +++ b/include/wasi_serdes.h @@ -6,7 +6,9 @@ /* Basic uint{8,16,32,64}_t read/write functions. */ #define BASIC_TYPE(name, type) \ + UVWASI_EXPORT \ void uvwasi_serdes_write_##name(void* ptr, size_t offset, type value); \ + UVWASI_EXPORT \ type uvwasi_serdes_read_##name(const void* ptr, size_t offset); \ #define BASIC_TYPE_UVWASI(type) BASIC_TYPE(type, uvwasi_##type) @@ -83,15 +85,18 @@ BASIC_TYPE_UVWASI(whence_t) /* WASI structure read/write functions. */ #define STRUCT(name) \ + UVWASI_EXPORT \ void uvwasi_serdes_write_##name(void* ptr, \ size_t offset, \ const uvwasi_##name* value); \ + UVWASI_EXPORT \ void uvwasi_serdes_read_##name(const void* ptr, \ size_t offset, \ uvwasi_##name* value); /* iovs currently only need to be read from WASM memory. */ #define IOVS_STRUCT(name) \ + UVWASI_EXPORT \ uvwasi_errno_t uvwasi_serdes_read_##name(const void* ptr, \ size_t end, \ size_t offset, \ diff --git a/include/wasi_types.h b/include/wasi_types.h index 295c93e..85eadd7 100644 --- a/include/wasi_types.h +++ b/include/wasi_types.h @@ -322,10 +322,10 @@ typedef uint8_t uvwasi_whence_t; #define UVWASI_WHENCE_CUR 1 #define UVWASI_WHENCE_END 2 -#if defined(_WIN32) || defined(__CYGWIN__) - #define UVWASI_EXPORT -#else +#ifdef NEED_UVWASI_EXPORT #define UVWASI_EXPORT __attribute__((visibility("default"))) -#endif +#else + #define UVWASI_EXPORT +#endif /* NEED_UVWASI_EXPORT */ #endif /* __UVWASI_WASI_TYPES_H__ */