X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2FMakefile;h=b9a75a6bb4289a691393fc810c41ff534e8943b4;hp=5f57dd34f0a2825547463c8a568b83322456bbb9;hb=HEAD;hpb=a4e95e0a6d4b53732ea0a585be0b6df55ae41e42 diff --git a/src/Makefile b/src/Makefile index 5f57dd34..b7289d01 100644 --- a/src/Makefile +++ b/src/Makefile @@ -44,8 +44,6 @@ DEBUGGER = gdb -batch -ex "run" -ex "bt" PROGBASE = rocksndiamonds PROGNAME = ../$(PROGBASE) -EDITION ?= default - # ----------------------------------------------------------------------------- # configuring platform @@ -62,14 +60,17 @@ endif ifeq ($(PLATFORM),emscripten) # compiling with Emscripten PROGNAME = ../$(PROGBASE).js +DATA_FILE = $(PROGBASE).data CC = emcc AR = emar RANLIB = emranlib STRIP = true +FILE_PACKAGER = file_packager endif ifeq ($(shell uname -s),Darwin) # compiling on Mac OS X DEBUGGER = lldb --batch -o "run" -k "bt" -k "quit" +SANITIZING_FLAGS = -fsanitize=undefined ifdef BUILD_DIST # distribution build MAC_TARGET_VERSION_MIN = 10.7 EXTRA_FLAGS_MAC = -mmacosx-version-min=$(MAC_TARGET_VERSION_MIN) @@ -79,6 +80,11 @@ MACOSX_DEPLOYMENT_TARGET = $MAC_TARGET_VERSION_MIN endif endif +ifeq ($(shell uname -s),OS/2) # compiling on OS/2 +PROGNAME = ../$(PROGBASE).exe +EXTRA_LDFLAGS = -Zomf -Zbin-files -Zmap -lcx -Zhigh-mem +endif + # ----------------------------------------------------------------------------- # configuring target @@ -97,10 +103,12 @@ endif 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"]' +SDL_LIBS = -s USE_SDL_IMAGE=2 -s USE_SDL_MIXER=2 -s USE_SDL_NET=2 -s USE_MODPLUG=1 -s USE_MPG123=1 -s USE_ZLIB=1 +SDL_FMTS = -s SDL2_IMAGE_FORMATS='["bmp","png","pcx","xpm"]' -s SDL2_MIXER_FORMATS='["mod","mp3"]' EXTRA_CFLAGS = $(SDL_LIBS) -EXTRA_LDFLAGS = $(SDL_FMTS) -s INITIAL_MEMORY=81920000 -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 -lidbfs.js +EXTRA_LDFLAGS = $(SDL_FMTS) -s INITIAL_MEMORY=81920000 -s ALLOW_MEMORY_GROWTH=1 -s FORCE_FILESYSTEM -s NO_EXIT_RUNTIME=0 -s ASYNCIFY -O2 -lidbfs.js +DATA_DIRS = conf docs levels graphics sounds music +FILE_PACKAGER_ARGS = --preload $(DATA_DIRS) --js-output=$(DATA_FILE).js else SDL_LIBS = -lSDL2_image -lSDL2_mixer -lSDL2_net endif @@ -114,33 +122,39 @@ endif # configuring compile-time definitions # ----------------------------------------------------------------------------- -ifdef RO_GAME_DIR # path to read-only game data specified -CONFIG_RO_GAME_DIR = -DRO_GAME_DIR="\"$(RO_GAME_DIR)\"" +ifdef BASE_PATH # path to read-only game data +CONFIG_BASE_PATH = -DBASE_PATH="\"$(BASE_PATH)\"" endif -CONFIG = $(CONFIG_RO_GAME_DIR) $(JOYSTICK) +CONFIG = $(CONFIG_BASE_PATH) $(JOYSTICK) DEBUG = -DDEBUG -g -# PROFILING = $(PROFILING_FLAGS) +# ANALYZE = $(PROFILING_FLAGS) +# ANALYZE = $(SANITIZING_FLAGS) # OPTIONS = $(DEBUG) -Wall # only for debugging purposes # OPTIONS = $(DEBUG) -O2 -Wall # only for debugging purposes # OPTIONS = $(DEBUG) -Wall # only for debugging purposes OPTIONS = $(DEBUG) -Wall -Wstrict-prototypes -Wmissing-prototypes +# OPTIONS = $(DEBUG) -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes # OPTIONS = $(DEBUG) -Wall -ansi -pedantic # only for debugging purposes # OPTIONS = -O2 -Wall -ansi -pedantic # OPTIONS = -O2 -Wall # OPTIONS = -O2 +ifdef BUILD_TEST # test build +OPTIONS := $(OPTIONS) -DTESTING +endif + ifdef BUILD_DIST # distribution build SYS_LDFLAGS := $(shell echo $(SYS_LDFLAGS) | \ sed -e "s%-rpath,[^ ]*%-rpath,'\$$ORIGIN/lib'%") OPTIONS = -O2 -Wall endif -CFLAGS = $(OPTIONS) $(SYS_CFLAGS) $(EXTRA_CFLAGS) $(CONFIG) -LDFLAGS = $(SYS_LDFLAGS) $(EXTRA_LDFLAGS) +CFLAGS = $(OPTIONS) $(ANALYZE) $(SYS_CFLAGS) $(EXTRA_CFLAGS) $(CONFIG) +LDFLAGS = $(ANALYZE) $(SYS_LDFLAGS) $(EXTRA_LDFLAGS) SRCS = main.c \ @@ -158,6 +172,7 @@ SRCS = main.c \ files.c \ tape.c \ anim.c \ + api.c \ network.c \ netserv.c @@ -176,6 +191,7 @@ OBJS = main.o \ files.o \ tape.o \ anim.o \ + api.o \ network.o \ netserv.o @@ -188,6 +204,8 @@ CNFS = conf_gfx.h \ conf_cus.h \ conf_grp.c \ conf_grp.h \ + conf_emp.c \ + conf_emp.h \ conf_e2g.c \ conf_esg.c \ conf_e2s.c \ @@ -230,10 +248,10 @@ RNDLIBS = $(LIBGAME) $(GAME_EM) $(GAME_SP) $(GAME_MM) AUTOCONF = conf_gfx.h conf_snd.h conf_mus.h ICONBASE = windows_icon -ICON_BASEPATH = ../Special/Icons/windows_icons +ICON_BASEPATH = ../build-projects/windows/icons ifeq ($(PLATFORM_BASE),cross-win) -ICON_PATH = $(ICON_BASEPATH)/$(EDITION) +ICON_PATH = $(ICON_BASEPATH) ICON = $(ICONBASE).o endif @@ -247,10 +265,13 @@ GRAPHICS_DIR = ../graphics all: $(AUTOCONF) libgame_dir game_em_dir game_sp_dir game_mm_dir $(PROGNAME) graphics_dir $(PROGNAME): $(RNDLIBS) $(TIMESTAMP_FILE) $(COMMIT_HASH_FILE) $(OBJS) $(ICON) - $(CC) $(PROFILING) $(OBJS) $(ICON) $(RNDLIBS) $(LDFLAGS) -o $(PROGNAME) + $(CC) $(OBJS) $(ICON) $(RNDLIBS) $(LDFLAGS) -o $(PROGNAME) ifdef BUILD_DIST $(STRIP) $(PROGNAME) endif +ifeq ($(PLATFORM),emscripten) + (cd .. ; $(FILE_PACKAGER) $(DATA_FILE) $(FILE_PACKAGER_ARGS)) +endif libgame_dir: @$(MAKE) -C $(LIBGAME_DIR) @@ -301,6 +322,8 @@ conf-hash: @echo '#define SOURCE_HASH_STRING "$(SOURCE_HASH_STRING)"' \ > $(COMMIT_HASH_FILE) +config.o: config.c $(TIMESTAMP_FILE) + $(TIMESTAMP_FILE): $(SRCS) $(RNDLIBS) @$(MAKE) conf-time @@ -308,12 +331,11 @@ $(COMMIT_HASH_FILE): $(SRCS) $(RNDLIBS) @$(MAKE) conf-hash $(ICON): -# $(CONVERT) $(ICON32X32) $(CONVERT_ICON_ARGS) $(ICONBASE).ico $(CONVERT) $(ICON_PATH)/*.png $(CONVERT_ICON_ARGS) $(ICONBASE).ico echo "$(ICONBASE) ICON $(ICONBASE).ico" | $(WINDRES) -o $(ICON) .c.o: - $(CC) $(PROFILING) $(CFLAGS) -c $*.c + $(CC) $(CFLAGS) -c $*.c graphics_dir: @test -f $(GRAPHICS_DIR)/Makefile && $(MAKE) -C $(GRAPHICS_DIR) || true