#
# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
################################################################################
#
# NanoApp C/C++ Makefile Utils
#
################################################################################

# Configuration ################################################################

# Toolchain Prefix
ifndef CROSS_COMPILE
  $(error Please set the environment variable CROSS_COMPILE to the complete \
          path to the toolchain directory plus the binary prefix, e.g. export \
          CROSS_COMPILE=~/bin/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-)
endif

PREFIX = $(CROSS_COMPILE)
TOOLCHAIN_DIR = $(shell dirname `which $(CROSS_COMPILE)gcc`)/..

# NANOHUB_DIR is relative to CWD (which is always APP Makefile dir)

NANOAPP_POSTPROCESS := $(NANOHUB_DIR)/../util/nanoapp_postprocess/nanoapp_postprocess
NANOAPP_SIGN := $(NANOHUB_DIR)/../util/nanoapp_sign/nanoapp_sign

# TOP_RELPATH is ANDROID_TOP relative to NANOHUB_DIR
TOP_RELPATH := ../../../..
TOP_ABSPATH := $(realpath $(NANOHUB_DIR)/$(TOP_RELPATH))

# for local variants there is always a path; for out-of-tree variants there may be
# - a $(VARIANT) soft link under firmware/variant subdir, or
# - VARIANT_PATH is found as vendor/<vendor_name>/<variant_name>/nanohub, or
# - explicitly provided in VARIANT_CONFIG_PATH (path, where <variant>_conf.mk is located)
#
ifeq ($(VARIANT_CONFIG_PATH),)
  variant_conf := $(wildcard $(TOP_ABSPATH)/vendor/*/*/nanohub/$(VARIANT)_conf.mk)
  ifeq ($(words $(variant_conf)),1)
    VARIANT_CONFIG_PATH := $(patsubst $(TOP_ABSPATH)/%/$(VARIANT)_conf.mk,%,$(variant_conf))
  else
    VARIANT_CONFIG_PATH := device/google/contexthub/firmware/variant/$(VARIANT)
  endif
endif

include $(TOP_ABSPATH)/$(VARIANT_CONFIG_PATH)/$(VARIANT)_conf.mk

# $(VARIANT)_conf.mk defines VARIANT_PATH, PLATFORM, CHIP, CPU, VARIANT
# VARIANT_PATH from $(VARIANT)_conf.mk is ANDROID_TOP relative

# change VARIANT_PATH to become CWD-relative
VARIANT_PATH := $(NANOHUB_DIR)/$(TOP_RELPATH)/$(VARIANT_PATH)

# all output goes here
ifndef OUT
OUT:=out/nanohub/$(VARIANT)/app/$(BIN)
else
ifneq ($(filter $(TOP_ABSPATH)/out/target/product/%,$(OUT)),)
# this looks like Android OUT env var; update it
IMAGE_TARGET_OUT:=$(OUT)/vendor/firmware/$(BIN).napp
OUT:=$(OUT)/nanohub/$(VARIANT)/app/$(BIN)
endif
endif

################################################################################
#
# Nanoapp Libc/Libm Utils
#
################################################################################

include $(NANOHUB_DIR)/lib/lib.mk

# Tools ########################################################################

AS := $(PREFIX)gcc
CC := $(PREFIX)gcc
CXX := $(PREFIX)g++
OBJCOPY := $(PREFIX)objcopy
OBJDUMP := $(PREFIX)objdump

# Assembly Flags ###############################################################

AS_FLAGS +=

# C++ Flags ####################################################################

CXX_CFLAGS += -std=c++11
CXX_CFLAGS += -fno-exceptions
CXX_CFLAGS += -fno-rtti

# C Flags ######################################################################

C_CFLAGS +=

# Common Flags #################################################################

# Defines
CFLAGS += -DAPP_ID=$(APP_ID)
CFLAGS += -DAPP_VERSION=$(APP_VERSION)
CFLAGS += -D__NANOHUB__

# Optimization/debug
CFLAGS += -Os
CFLAGS += -g

# Include paths
CFLAGS += -I$(NANOHUB_DIR)/os/inc
CFLAGS += -I$(NANOHUB_DIR)/os/platform/$(PLATFORM)/inc
CFLAGS += -I$(NANOHUB_DIR)/os/cpu/$(CPU)/inc
CFLAGS += -I$(VARIANT_PATH)/inc
CFLAGS += -I$(NANOHUB_DIR)/../lib/include

# Warnings/error configuration.
CFLAGS += -Wall
CFLAGS += -Werror
CFLAGS += -Wmissing-declarations
CFLAGS += -Wlogical-op
CFLAGS += -Waddress
CFLAGS += -Wempty-body
CFLAGS += -Wpointer-arith
CFLAGS += -Wenum-compare
CFLAGS += -Wdouble-promotion
CFLAGS += -Wshadow
CFLAGS += -Wno-attributes

# Produce position independent code.
CFLAGS += -fpic
CFLAGS += -mno-pic-data-is-text-relative
CFLAGS += -msingle-pic-base
CFLAGS += -mpic-register=r9

# Code generation options for Cortex-M4F
CFLAGS += -mthumb
CFLAGS += -mcpu=cortex-m4
CFLAGS += -march=armv7e-m
CFLAGS += -mfloat-abi=softfp
CFLAGS += -mfpu=fpv4-sp-d16
CFLAGS += -mno-thumb-interwork
CFLAGS += -ffast-math
CFLAGS += -fsingle-precision-constant

# Platform defines
CFLAGS += -DARM
CFLAGS += -DUSE_NANOHUB_FLOAT_RUNTIME
CFLAGS += -DARM_MATH_CM4
CFLAGS += -D__FPU_PRESENT

# Miscellaneous
CFLAGS += -fno-strict-aliasing
CFLAGS += -fshort-double
CFLAGS += -fvisibility=hidden
CFLAGS += -fno-unwind-tables
CFLAGS += -fstack-reuse=all
CFLAGS += -ffunction-sections
CFLAGS += -fdata-sections

# Linker Configuration #########################################################

LD := $(PREFIX)g++

LDFLAGS := -T $(NANOHUB_DIR)/os/platform/$(PLATFORM)/lkr/app.lkr
LDFLAGS += -nostartfiles
LDFLAGS += -Wl,--gc-sections
LDFLAGS += -Wl,-Map,$(OUT)/$(BIN).map
LDFLAGS += -Wl,--cref
STATIC_LIBS += -lgcc
ifeq ($(BIN_MODE),static)
LDFLAGS += -Bstatic
LDFLAGS += -Wl,--emit-relocs
else
LDFLAGS += -Bdynamic
LDFLAGS += -Wl,--no-undefined
LDFLAGS += -Wl,--no-allow-shlib-undefined
endif

# Build Rules ##################################################################

AS_SRCS := $(filter %.S, $(SRCS))
C_SRCS := $(filter %.c, $(SRCS))
CXX_SRCS := $(filter %.cc, $(SRCS))
CPP_SRCS := $(filter %.cpp, $(SRCS))

OBJS := $(patsubst %.S, $(OUT)/%.o, $(AS_SRCS))
OBJS += $(patsubst %.c, $(OUT)/%.o, $(C_SRCS))
OBJS += $(patsubst %.cc, $(OUT)/%.o, $(CXX_SRCS))
OBJS += $(patsubst %.cpp, $(OUT)/%.o, $(CPP_SRCS))

UNSIGNED_BIN := $(BIN).unsigned.napp

NANOHUB_KEY_PATH := $(NANOHUB_DIR)/os/platform/$(PLATFORM)/misc

.PHONY: all clean sync
all: $(OUT)/$(BIN).S $(OUT)/$(BIN).napp $(IMAGE_TARGET_OUT)

$(OUT)/$(BIN).napp : $(OUT)/$(UNSIGNED_BIN) $(NANOAPP_SIGN)
	@mkdir -p $(dir $@)
	$(NANOAPP_SIGN) -e $(NANOHUB_KEY_PATH)/debug.privkey \
		-m $(NANOHUB_KEY_PATH)/debug.pubkey -s $< $@
ifdef IMAGE_TARGET_OUT
$(IMAGE_TARGET_OUT): $(OUT)/$(BIN).napp
	@mkdir -p $(dir $@)
	cp $< $(IMAGE_TARGET_OUT)
endif

ifeq ($(APP_VERSION),)
APP_VERSION := 0
endif

ifeq ($(BIN_MODE),static)
$(OUT)/$(UNSIGNED_BIN) : $(OUT)/$(BIN).elf $(NANOAPP_POSTPROCESS)
	@mkdir -p $(dir $@)
	$(NANOAPP_POSTPROCESS) -s -a $(APP_ID) -e $(APP_VERSION) -v $(BIN_POSTPROCESS_ARGS) $< $@
else
$(OUT)/$(UNSIGNED_BIN) : $(OUT)/$(BIN).bin $(NANOAPP_POSTPROCESS)
	@mkdir -p $(dir $@)
	$(NANOAPP_POSTPROCESS) -a $(APP_ID) -e $(APP_VERSION) -v $(BIN_POSTPROCESS_ARGS) $< $@

$(OUT)/$(BIN).bin : $(OUT)/$(BIN).elf
	@mkdir -p $(dir $@)
	$(OBJCOPY) -j.relocs -j.flash -j.data -j.dynsym -O binary $< $@
endif

$(OUT)/$(BIN).S : $(OUT)/$(BIN).elf
	@mkdir -p $(dir $@)
	$(OBJDUMP) $< -DS > $@

$(OUT)/$(BIN).elf : $(OBJS)
	@mkdir -p $(dir $@)
	$(LD) $(CFLAGS) $(CXX_FLAGS) $(LDFLAGS) $(OBJS) $(STATIC_LIBS) -o $@

$(OUT)/%.o : %.S
	@mkdir -p $(dir $@)
	$(AS) $(AS_FLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

$(OUT)/%.o : %.c
	@mkdir -p $(dir $@)
	$(CC) $(C_CFLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

$(OUT)/%.o : %.cc
	@mkdir -p $(dir $@)
	$(CXX) $(CXX_CFLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

$(OUT)/%.o : %.cpp
	@mkdir -p $(dir $@)
	$(CXX) $(CXX_CFLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

# Automatic dependency resolution ##############################################

DEPS_AS = $(OUT)/deps_as
DEPS_C = $(OUT)/deps_c
DEPS_CXX = $(OUT)/deps_cxx

$(DEPS_AS) : $(AS_SRCS)
	@mkdir -p $(dir $@)
	$(AS) $(AS_CFLAGS) $(CFLAGS) -MM $^ > $@

$(DEPS_C) : $(C_SRCS)
	@mkdir -p $(dir $@)
	$(CC) $(C_CFLAGS) $(CFLAGS) -MM $^ > $@

$(DEPS_CXX) : $(CXX_SRCS) $(CPP_SRCS)
	@mkdir -p $(dir $@)
	$(CXX) $(CXX_CFLAGS) $(CFLAGS) -MM $^ > $@

NOAUTODEPTARGETS = clean

ifeq ($(words $(findstring $(MAKECMDGOALS), $(NOAUTODEPTARGETS))), 0)

ifneq ($(AS_SRCS), )
-include $(DEPS_AS)
endif

ifneq ($(C_SRCS), )
-include $(DEPS_C)
endif

ifneq ($(CXX_SRCS)$(CPP_SRCS),)
-include $(DEPS_CXX)
endif

endif

$(NANOAPP_POSTPROCESS): $(wildcard $(dir $(NANOAPP_POSTPROCESS))/*.c* $(dir $(NANOAPP_POSTPROCESS))/*.h)
	echo DEPS [$@]: $^
	make -C $(dir $@)

$(NANOAPP_SIGN): $(wildcard $(dir $(NANOAPP_SIGN))/*.c* $(dir $(NANOAPP_SIGN))/*.h)
	echo DEPS [$@]: $^
	make -C $(dir $@)

# Clean targets ################################################################

clean :
	rm -rf $(OUT)

sync:   $(OUT)/$(BIN).napp
	adb push $< /vendor/firmware/$(BIN).napp
