From fe9b6f53848b41dfbad67a907a92770a0b965f3d Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Thu, 10 Jan 2019 06:04:29 +0100 Subject: [PATCH] emscripten: use __attribute__(used) in code instead of EXPORTED_FUNCTIONS in cmake --- cmake/libsuperderpy.cmake | 2 +- src/gamestate.h | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cmake/libsuperderpy.cmake b/cmake/libsuperderpy.cmake index e56947a..5684e81 100644 --- a/cmake/libsuperderpy.cmake +++ b/cmake/libsuperderpy.cmake @@ -194,7 +194,7 @@ if (NOT LIBSUPERDERPY_CONFIG_INCLUDED) set(CMAKE_EXECUTABLE_SUFFIX ".bc") set(CMAKE_SHARED_LIBRARY_SUFFIX ".so") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -s SIDE_MODULE=2 -s EXPORTED_FUNCTIONS=[\"_Gamestate_ProgressCount\",\"_Gamestate_Draw\",\"_Gamestate_Logic\",\"_Gamestate_Tick\",\"_Gamestate_Load\",\"_Gamestate_PostLoad\",\"_Gamestate_Start\",\"_Gamestate_Pause\",\"_Gamestate_Resume\",\"_Gamestate_Stop\",\"_Gamestate_Unload\",\"_Gamestate_ProcessEvent\",\"_Gamestate_Reload\"]") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -s SIDE_MODULE=2") set(EMSCRIPTEN_FLAGS --llvm-lto 1 --use-preload-plugins --pre-js "${LIBSUPERDERPY_DIR}/src/emscripten-pre-js.js" -s FULL_ES2=1 -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1 -s EMTERPRETIFY_WHITELIST=[\"_libsuperderpy_emscripten_mainloop\",\"_libsuperderpy_mainloop\",\"_MainloopTick\",\"_GamestateLoadingThread\"] -s EXPORT_ALL=1 -s EXTRA_EXPORTED_RUNTIME_METHODS=[\"Pointer_stringify\"]) set(LIBSUPERDERPY_EMSCRIPTEN_MODE "asm.js" CACHE STRING "Emscripten compilation mode (JavaScript or WebAssembly)") diff --git a/src/gamestate.h b/src/gamestate.h index 1a00da4..756e259 100644 --- a/src/gamestate.h +++ b/src/gamestate.h @@ -79,17 +79,17 @@ void UnloadCurrentGamestate(struct Game* game); // Gamestate API extern int Gamestate_ProgressCount; -void Gamestate_Draw(struct Game* game, struct GamestateResources* data); -void Gamestate_Logic(struct Game* game, struct GamestateResources* data, double delta); -void Gamestate_Tick(struct Game* game, struct GamestateResources* data); -void* Gamestate_Load(struct Game* game, void (*progress)(struct Game*)); -void Gamestate_PostLoad(struct Game* game, struct GamestateResources* data); -void Gamestate_Start(struct Game* game, struct GamestateResources* data); -void Gamestate_Pause(struct Game* game, struct GamestateResources* data); -void Gamestate_Resume(struct Game* game, struct GamestateResources* data); -void Gamestate_Stop(struct Game* game, struct GamestateResources* data); -void Gamestate_Unload(struct Game* game, struct GamestateResources* data); -void Gamestate_ProcessEvent(struct Game* game, struct GamestateResources* data, ALLEGRO_EVENT* ev); -void Gamestate_Reload(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_Draw(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_Logic(struct Game* game, struct GamestateResources* data, double delta); +__attribute__((used)) void Gamestate_Tick(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void* Gamestate_Load(struct Game* game, void (*progress)(struct Game*)); +__attribute__((used)) void Gamestate_PostLoad(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_Start(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_Pause(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_Resume(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_Stop(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_Unload(struct Game* game, struct GamestateResources* data); +__attribute__((used)) void Gamestate_ProcessEvent(struct Game* game, struct GamestateResources* data, ALLEGRO_EVENT* ev); +__attribute__((used)) void Gamestate_Reload(struct Game* game, struct GamestateResources* data); #endif