# -*- mode: makefile; compile-command: "make -j3 MEMDEBUG=TRUE install"; -*-
# Copyright 2021 by Eric House (xwords@eehouse.org).  All rights
# reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

include ../common/config.mk

DEBS = cmake

INPUTS = main.c wasmdict.c wasmutls.c wasmdraw.c wasmutil.c wasmdutil.c ${COMMONSRC}

DEFINES += -DXWFEATURE_BONUSALL
DEFINES += -DMAX_ROWS=32
DEFINES += -DCOMMON_LAYOUT
DEFINES += -DDROP_BITMAPS
DEFINES += -D__LITTLE_ENDIAN
# DEFINES += -DXWFEATURE_DEVID
DEFINES += -D__WORDSIZE=32
DEFINES += -DXWFEATURE_COMMSACK
DEFINES += -DENABLE_LOGGING
DEFINES += -DKEYBOARD_NAV
DEFINES += -DXWFEATURE_CHAT
DEFINES += -DDISABLE_TILE_SEL
DEFINES += -DKEY_SUPPORT
DEFINES += -DSTREAM_VERS_HASHSTREAM
DEFINES += -DXWFEATURE_KNOWNPLAYERS
DEFINES += -DXWFEATURE_DICTSANITY
DEFINES += -DPOINTER_SUPPORT
DEFINES += -DPLATFORM_WASM
DEFINES += -DXWFEATURE_CROSSHAIRS
DEFINES += -DXWFEATURE_STREAMREF
DEFINES += -DXWFEATURE_TURNCHANGENOTIFY
DEFINES += -DXWFEATURE_BOARDWORDS
DEFINES += -DXWFEATURE_DEVICE
DEFINES += -DNATIVE_NLI
DEFINES += -DDEBUG_REF
DEFINES += -DXWFEATURE_COMMS_INVITE
DEFINES += -DMQTT_DEV_TOPICS
DEFINES += -DMQTT_GAMEID_TOPICS
DEFINES += -DXWFEATURE_NLI_FROM_ARGV
DEFINES += -DNO_NATIVE_MD5SDUM


DEFINES += -Wno-switch
DEFINES += -DGITREV=\"$(shell git describe --tags --dirty)\"

ifeq ($(MEMDEBUG),TRUE)
	DEFINES += -DMEM_DEBUG -DDEBUG -O0
	WEBDIR = wasm/dbg
	ROOT_PATH = "/persisted0.3"
else
	DEFINES += -O3
	WEBDIR = wasm/rel
	ROOT_PATH = "/persisted_rel0.0"
endif
DEFINES += -DROOT_PATH=\"$(ROOT_PATH)\"

OUTPUTS = main.html main.js main.js.mem main.data main.html.mem main.wasm

all: main.html

# PHONY: install

# main.js: ${INPUTS} Makefile
# 	emcc $(DEFINES) -O2 -I . -I ../common -I ../relay -s USE_SDL=2 \
# 		--preload-file assets_dir --memory-init-file 1 \
# 		-s USE_SDL_TTF=2 -s USE_SDL_IMAGE=2 -s SDL2_IMAGE_FORMATS='["png"]' \
# 		-s EXPORTED_FUNCTIONS='["_mainf", "_button", "_newgame", "_gotMQTTMsg"]' -s WASM=0 \
# 		-s "EXPORTED_RUNTIME_METHODS=['ccall']" \
# 		${INPUTS} -o $@

# This isn't a thing any more
main.html: ${INPUTS} Makefile shell_minimal.html
	emcc $(DEFINES) -I . -I ../common -I ../relay -s USE_SDL=2 \
		--preload-file assets_dir --shell-file shell_minimal.html \
		-s USE_SDL_TTF=2 -s USE_SDL_IMAGE=2 -s SDL2_IMAGE_FORMATS='["png"]' -lidbfs.js \
		-s "EXPORTED_RUNTIME_METHODS=['ccall']" \
		-s EXPORTED_FUNCTIONS='["_main", "_mainPostSync", "_cbckMsg", "_cbckVoid", "_cbckString", "_MQTTConnectedChanged", "_onNewGame", "_gotDictBinary", "_onResize"]' \
		-s WASM=1 \
		${INPUTS} -o $@

install: main.html
	@if [ -n "${XW_WASM_DEST}" -a -n "${XW_WASM_HOST}" ]; then \
		ssh "${XW_WASM_HOST}" mkdir -p ${XW_WASM_DEST}/${WEBDIR}/; \
		for FILE in ${OUTPUTS} paho-mqtt.js xwutils.js; do \
			if [ -f $$FILE ]; then \
				scp $$FILE ${XW_WASM_HOST}:${XW_WASM_DEST}/${WEBDIR}/; \
				echo "$$FILE copied"; \
			fi; \
		done; \
	else \
		echo "ERROR: XW_WASM_DEST ($$XW_WASM_DEST) or XW_WASM_HOST ($$XW_WASM_HOST) unset"; \
	fi

clean:
	rm -f ${OUTPUTS}

debs_install:
	sudo apt-get install ${DEBS}

help:
	@echo 'usage: debs_install OR'
	@echo 'usage: make [MEMDEBUG=TRUE] [clean] install'
	@echo '(expects XW_WASM_HOST and XW_WASM_DEST to be set in env)'
