android: android-package
+emscripten:
+ @emmake $(MAKE_CMD) PLATFORM=emscripten
+
clean:
@$(MAKE_CMD) clean
dist-build-android:
@BUILD_DIST=TRUE $(MAKE) android
+dist-build-emscripten:
+ @BUILD_DIST=TRUE $(MAKE) emscripten
+
dist-package-linux:
$(MAKE_DIST) package linux
EXTRA_LDFLAGS = -lshfolder -lwsock32
endif
+ifeq ($(PLATFORM),emscripten) # compiling with Emscripten
+PROGNAME = ../$(PROGBASE).js
+CC = emcc
+AR = emar
+RANLIB = emranlib
+STRIP = true
+endif
+
ifdef BUILD_DIST # distribution build
ifeq ($(shell uname -s),Darwin) # compiling on Mac OS X
MAC_TARGET_VERSION_MIN = 10.7
# $(info Using SDL version $(SDL_VERSION) [TARGET == $(TARGET)])
ifeq ($(TARGET),sdl2) # compiling for SDL2 target
+ifeq ($(PLATFORM),emscripten)
+SDL_LIBS = -s USE_SDL_IMAGE=2 -s USE_SDL_MIXER=2 -s USE_SDL_NET=2 -s USE_ZLIB=1
+SDL_FMTS = -s SDL2_IMAGE_FORMATS='["bmp","png","pcx","xpm"]'
+EXTRA_CFLAGS = $(SDL_LIBS)
+EXTRA_LDFLAGS = $(SDL_FMTS) -s INITIAL_MEMORY=65536000 -s ALLOW_MEMORY_GROWTH=1 --preload-file ../graphics/ --preload-file ../sounds/ --preload-file ../levels/ --preload-file ../music/ -s NO_EXIT_RUNTIME=0 -s ASYNCIFY -O2
+else
SDL_LIBS = -lSDL2_image -lSDL2_mixer -lSDL2_net
+endif
+
SYS_CFLAGS := -DTARGET_SDL2 $(shell sdl2-config --cflags)
SYS_LDFLAGS := $(SDL_LIBS) $(shell sdl2-config --libs) -lm -lz
endif
clean-bin:
$(RM) $(PROGNAME)
- $(RM) ../*.exe
+ $(RM) $(PROGNAME).exe
+ $(RM) $(PROGNAME).js
+ $(RM) $(PROGNAME).wasm
+ $(RM) $(PROGNAME).data
clean: clean-obj clean-ico clean-bin
#if defined(PLATFORM_UNIX)
static struct passwd *getPasswdEntry(void)
{
+#if defined(PLATFORM_EMSCRIPTEN)
+ // currently not fully supported; force fallback to default values
+ return NULL;
+#else
return getpwuid(getuid());
+#endif
}
char *getUnixLoginName(void)
#define PLATFORM_STRING "Android"
#endif
+#if defined(__EMSCRIPTEN__)
+#define PLATFORM_EMSCRIPTEN
+#undef PLATFORM_STRING
+#define PLATFORM_STRING "Emscripten"
+#endif
+
// ============================================================================
// define additional platform keywords for CPU architecture
#define STR_SPECIAL_RENDERING_TARGET "target_texture_only"
#define STR_SPECIAL_RENDERING_DOUBLE "stream_and_target_texture"
+#if defined(PLATFORM_EMSCRIPTEN)
+#define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_BITMAP
+#else
#define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_DOUBLE
+#endif
#define SPECIAL_RENDERING_OFF 0
#define SPECIAL_RENDERING_BITMAP 1
# define ftello64 ftell
# define fseeko64 fseek
#else
-# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__ANDROID__) || defined(__linux__)
+# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__ANDROID__) || defined(__linux__) || defined(__EMSCRIPTEN__)
# define fopen64 fopen
# define ftello64 ftello
# define fseeko64 fseeko