# SPDX-FileCopyrightText: 2016 ARM Limited
# SPDX-License-Identifier: Apache-2.0

# USAGE:
# specify the board using the command line:
# make BOARD=[mbed board name]

BOARD=$(subst [mbed] ,,$(shell mbed target))
HEAPSIZE=16

DEBUG=0
NO_JS=0
MBED_VERBOSE=0

MBED_CLI_FLAGS=-j0 --source . --source ../../

EXTRA_SRC=

ifneq ($(EXTRA_SRC),)
EXTRA_SRC_MOD=--source $(subst :, --source ,$(EXTRA_SRC))
MBED_CLI_FLAGS += $(EXTRA_SRC_MOD)
endif

EXTERN_BUILD_DIR=

ifneq ($(EXTERN_BUILD_DIR),)
MBED_CLI_FLAGS += --build $(EXTERN_BUILD_DIR)
endif

ifeq ($(DEBUG), 1)
MBED_CLI_FLAGS += -o debug-info
endif

ifeq ($(MBED_VERBOSE), 1)
MBED_CLI_FLAGS += -v
else ifeq ($(MBED_VERBOSE), 2)
MBED_CLI_FLAGS += -vv
endif

MBED_CLI_FLAGS += -D "CONFIG_MEM_HEAP_AREA_SIZE=(1024*$(HEAPSIZE))"
MBED_CLI_FLAGS += -t GCC_ARM

.PHONY: all js2c getlibs rebuild library
all: source/jerry_targetjs.h source/pins.cpp .mbed ../../.mbedignore
	mbed target $(BOARD)
	mbed compile $(MBED_CLI_FLAGS)

library: .mbed ../../.mbedignore
	# delete encoded js code if it exists
	rm -f source/jerry_targetjs.h
	mbed target $(BOARD)
	mbed compile $(MBED_CLI_FLAGS) --library

clean:
	rm -rf .build/$(BOARD)

js2c: js/main.js js/flash_leds.js
	python ../tools/js2c.py --ignore pins.js

source/pins.cpp: 
	python tools/generate_pins.py ${BOARD}

ifeq ($(NO_JS),0)
source/jerry_targetjs.h: js2c
else
source/jerry_targetjs.h: ;
endif

getlibs: .mbed

.mbed:
	mbed config root .
	mbed toolchain GCC_ARM
	mbed target $(BOARD)
	mbed deploy

../../.mbedignore:
	cp ./template-mbedignore.txt ../../.mbedignore
