Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 32 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,23 @@ endif()

message(STATUS "dethrace version ${DETHRACE_VERSION}")

if (CMAKE_SYSTEM_NAME MATCHES "Emscripten")
set(USE_FLAGS "--use-port=sdl2 --use-port=sdl2_image")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${USE_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${USE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${USE_FLAGS} \
-Wl,-u,scalbnl \
-sASYNCIFY \
-sALLOW_MEMORY_GROWTH -sINITIAL_MEMORY=256mb -sMEMORY_GROWTH_LINEAR_STEP=128mb \
-sSTACK_SIZE=1024kb \
-sENVIRONMENT=web \
-sMODULARIZE \
-sEXPORT_ALL -sEXPORTED_RUNTIME_METHODS=callMain,addRunDependency,removeRunDependency \
-sEXIT_RUNTIME \
-lwebsocket.js -lidbfs.js -sCASE_INSENSITIVE_FS -sASSERTIONS=2 --profiling-funcs")
endif ()

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")

set(DETHRACE_IDE_ARGUMENTS "" CACHE STRING "DethRace arguments (only used by MSVC when debugging")
Expand Down Expand Up @@ -67,19 +84,23 @@ option(DETHRACE_PLATFORM_SDL2 "Support SDL 2 platform driver" ON)
set(count_sdl_platforms 0)

set(DETHRACE_PLATFORMS )
if(DETHRACE_PLATFORM_SDL1)
find_package(SDL REQUIRED)
list(APPEND DETHRACE_PLATFORMS SDL1)
math(EXPR count_sdl_platforms "${count_sdl_platforms} + 1")
endif()
if(DETHRACE_PLATFORM_SDL2)
find_package(SDL2 CONFIG)
if(NOT SDL2_FOUND)
find_package(SDL2 MODULE REQUIRED)
if (NOT CMAKE_SYSTEM_NAME MATCHES "Emscripten")
if(DETHRACE_PLATFORM_SDL1)
find_package(SDL REQUIRED)
list(APPEND DETHRACE_PLATFORMS SDL1)
math(EXPR count_sdl_platforms "${count_sdl_platforms} + 1")
endif()
if(DETHRACE_PLATFORM_SDL2)
find_package(SDL2 CONFIG)
if(NOT SDL2_FOUND)
find_package(SDL2 MODULE REQUIRED)
endif()
list(APPEND DETHRACE_PLATFORMS SDL2)
math(EXPR count_sdl_platforms "${count_sdl_platforms} + 1")
endif()
else ()
list(APPEND DETHRACE_PLATFORMS SDL2)
math(EXPR count_sdl_platforms "${count_sdl_platforms} + 1")
endif()
endif ()

if(count_sdl_platforms GREATER 1)
# Force dynamic SDL when enabling 2 (or more) SDL platform backends
Expand Down
4 changes: 3 additions & 1 deletion src/harness/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,9 @@ if(DETHRACE_PLATFORM_SDL2)
set_property(SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/platforms/sdl2.c" APPEND PROPERTY INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:SDL2::SDL2,INTERFACE_INCLUDE_DIRECTORIES>")
set_property(GLOBAL APPEND PROPERTY DETHRACE_BUILD_RPATHS "$<TARGET_FILE_DIR:SDL2::SDL2>")
else()
target_link_libraries(harness PRIVATE SDL2::SDL2)
if (NOT CMAKE_SYSTEM_NAME MATCHES "Emscripten")
target_link_libraries(harness PRIVATE SDL2::SDL2)
endif ()
endif()
endif()

Expand Down
7 changes: 6 additions & 1 deletion src/harness/os/linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
#include <dirent.h>
#include <err.h>
#include <errno.h>
#ifndef __EMSCRIPTEN__
#include <execinfo.h>
#endif
#include <fcntl.h>
#include <ifaddrs.h>
#include <libgen.h>
Expand Down Expand Up @@ -73,6 +75,7 @@ int addr2line(char const* const program_name, void const* const addr) {
}

static void print_stack_trace(void) {
#ifndef __EMSCRIPTEN__
int i, trace_size = 0;
char** messages = (char**)NULL;

Expand All @@ -91,6 +94,7 @@ static void print_stack_trace(void) {
if (messages) {
free(messages);
}
#endif
}

static void signal_handler(int sig, siginfo_t* siginfo, void* context) {
Expand Down Expand Up @@ -205,10 +209,11 @@ void OS_InstallSignalHandler(char* program_name) {
}
ss.ss_size = 2 * MINSIGSTKSZ;
ss.ss_flags = 0;

#ifndef __EMSCRIPTEN__
if (sigaltstack(&ss, NULL) != 0) {
err(1, "sigaltstack");
}
#endif
}

/* register our signal handlers */
Expand Down
4 changes: 4 additions & 0 deletions src/harness/platforms/sdl2.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ static void SDL2_Harness_ProcessWindowMessages(void) {
}
} else if (event.key.type == SDL_KEYUP) {
if (is_only_key_modifier(event.key.keysym.mod, KMOD_ALT)) {
#ifndef __EMSCRIPTEN__
SDL2_SetWindowFullscreen(window, (SDL2_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN_DESKTOP) ? 0 : SDL_WINDOW_FULLSCREEN_DESKTOP);
#endif
}
}
}
Expand Down Expand Up @@ -318,7 +320,9 @@ static void SDL2_Harness_CreateWindow(const char* title, int width, int height,
viewport.scale_y = 1;

if (harness_game_config.start_full_screen) {
#ifndef __EMSCRIPTEN__
SDL2_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
#endif
}
}

Expand Down