#
#    Copyright (c) 2020 Project CHIP Authors
#    Copyright (c) 2014-2017 Nest Labs, Inc.
#
#    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.
#

#
#    Description:
#      This file implements a glue makefile for building the CHIP SDK
#      for Android devices and simulators for multiple architectures.
#
#      This was largely directed and inspired by two Android NDK
#      documents:
#
#        * Android NDK Programmer's Guide: Standalone Toolchain
#        * Android NDK Programmer's Guide: C++ Support
#

#
# Command-line Configurable Options
#

ANDROID_ROOT                    ?= /usr/local/android
ANDROID_HOME                    ?= $(ANDROID_ROOT)/android-sdk-linux-r23.0.2
ANDROID_NDK_HOME                ?= $(ANDROID_ROOT)/android-ndk-r10
ANDROID_API                     ?= $(ANDROID_RELEASE)
ANDROID_ABI                     ?= armeabi-v7a arm64-v8a x86 x86_64
ANDROID_STL                     ?= $(ANDROID_CXX)
DEBUG                           ?= 0
ENABLE_TARGETED_LISTEN          ?= 0

# Deprecated -- Use ANDROID_API
ANDROID_RELEASE                 ?= 22

# Deprecated -- Use ANDROID_STL
ANDROID_CXX                     ?= system


#
# Android C++ Runtime (STL) Selection
#

ANDROID_STLROOT                	= $(ANDROID_NDK_HOME)/sources/cxx-stl

ANDROID_STL_INCLUDE_DIRS_libc++ = $(ANDROID_STLROOT)/llvm-libc++/include \
                                  $(ANDROID_STLROOT)/llvm-libc++abi/include \
                                  $(ANDROID_NDK_HOME)/sources/android/support/include
ANDROID_STL_INCLUDE_DIRS_gnustl = $(ANDROID_STLROOT)/gnu-libstdc++/4.9/include
ANDROID_STL_INCLUDE_DIRS_system = $(ANDROID_STLROOT)/system/include

ANDROID_STL_INCLUDES            = $(foreach dir,$(ANDROID_STL_INCLUDE_DIRS_$(ANDROID_STL)),-isystem $(dir))


#
# Tools and Executables
#

android-ndk-which               = $(shell $(AbsTopSourceDir)/scripts/android-ndk-which --ndk-home $(ANDROID_NDK_HOME) $(1) $(TARGET_ABI))

AR                              = $(call android-ndk-which,ar)
AS                              = $(call android-ndk-which,as)
CPP                             = $(call android-ndk-which,cpp)
CC                              = $(call android-ndk-which,gcc)
CXX                             = $(call android-ndk-which,g++)
LD                              = $(call android-ndk-which,ld)
STRIP                           = $(call android-ndk-which,strip)
NM                              = $(call android-ndk-which,nm)
RANLIB                          = $(call android-ndk-which,ranlib)
OBJCOPY                         = $(call android-ndk-which,objcopy)
ECHO                            = @echo
MAKE                            = make
MKDIR_P                         = mkdir -p
LN_S                            = ln -s
RM_F                            = rm -f
INSTALL                         = /usr/bin/install


#
# Common C/C++ Defines
#

DEFINES                        += -D__ANDROID_API__=$(ANDROID_API) \
                                  -DCHIP_CONFIG_ENABLE_TARGETED_LISTEN=$(ENABLE_TARGETED_LISTEN) \
                                  -DCHIP_PROGRESS_LOGGING=$(DEBUG) \
                                  -DCHIP_ERROR_LOGGING=$(DEBUG) \
                                  -DCHIP_DETAIL_LOGGING=$(DEBUG)

ifeq ($(DEBUG),1)
DEFINES                         = -DDEBUG=$(DEBUG) -UNDEBUG
else
DEFINES                         = -DNDEBUG=1 -UDEBUG
endif


#
# Common C/C++ Includes
#

INCLUDES                       	+= -isystem $(ANDROID_NDK_HOME)/sysroot/usr/include \
                                   $(ANDROID_STL_INCLUDES)


#
# Compilation/Build Flags
#

CPPFLAGS                        = --sysroot=$(ABI_SYSROOT) $(DEFINES) $(INCLUDES) $(ABI_CPPFLAGS)
CFLAGS                          = $(CPPFLAGS) -ffunction-sections -funwind-tables $(ABI_CFLAGS)
CXXFLAGS                        = $(CPPFLAGS) -fno-rtti $(ABI_CXXFLAGS)
LDFLAGS                         = --sysroot=$(ABI_SYSROOT) -Wl,--gc-sections $(ABI_LDFLAGS)
INSTALLFLAGS                    = -p

ifndef BuildJobs
BuildJobs := $(shell getconf _NPROCESSORS_ONLN)
endif
JOBSFLAG := -j$(BuildJobs)


#
# Common CHIP configure options
#

CONFIGURE_OPTIONS               = --disable-cocoa \
                                  --disable-docs \
                                  --enable-java \
                                  --disable-python \
                                  --enable-shared \
                                  --disable-tests \
                                  --disable-tools

ifeq ($(DEBUG),1)
CONFIGURE_OPTIONS              	+= --enable-debug --enable-optimization=no
else
CONFIGURE_OPTIONS              	+=
endif


#
# Directories
#

TopSourceDir                   	:= $(dir $(shell readlink $(firstword $(MAKEFILE_LIST))))
AbsTopSourceDir                	:= $(dir $(realpath $(firstword $(MAKEFILE_LIST))))

BuildPath                       = build
TopBuildDir                     = $(BuildPath)
AbsTopBuildDir                  = $(PWD)/$(TopBuildDir)

ResultPath                      = output
TopResultDir                    = $(ResultPath)
AbsTopResultDir                 = $(PWD)/$(TopResultDir)

# NB: Regardless of where JAVA_HOME points, always use the JNI headers from the Android NDK,
# and only include the top-most directory (include), not the system directory (include/linux).
# Because the NDK mixes the JNI headers in with the linux headers, listing the system
# directory in the -I flags will result in strange compilation errors.  And unlike the standard
# Java jni.h, the jni.h that comes with the Android NDK does not depend on any system-specific
# JNI header files (e.g. jni_md.h).  Thus only the top-level include directory is needed.
JNI_INCLUDE_DIRS                = $(ABI_SYSROOT)/usr/include


#
# ABI-specific Configurations
#



ABI_CONFIG_TUPLE_armeabi        = arm-unknown-linux-android
ABI_SYSROOT_armeabi             = $(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-arm
ABI_CPPFLAGS_armeabi            = -march=armv5te -mtune=xscale -msoft-float -isystem $(ANDROID_NDK_HOME)/sysroot/usr/include/arm-linux-androideabi
ABI_CFLAGS_armeabi              = -fstack-protector
ABI_CXXFLAGS_armeabi            = -I$(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-arm/usr/include
ABI_LDFLAGS_armeabi             = -march=armv5te -mtune=xscale -msoft-float

ABI_CONFIG_TUPLE_armeabi-v7a    = armv7-unknown-linux-android
ABI_SYSROOT_armeabi-v7a         = $(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-arm
ABI_CPPFLAGS_armeabi-v7a        = -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -isystem $(ANDROID_NDK_HOME)/sysroot/usr/include/arm-linux-androideabi
ABI_CFLAGS_armeabi-v7a          = -fstack-protector
ABI_CXXFLAGS_armeabi-v7a        = -I$(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-arm/usr/include
ABI_LDFLAGS_armeabi-v7a         = -march=armv7-a -Wl,--fix-cortex-a8

ABI_CONFIG_TUPLE_arm64-v8a      = arm64-unknown-linux-android
ABI_SYSROOT_arm64-v8a           = $(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-arm64
ABI_CPPFLAGS_arm64-v8a          = -march=armv8-a -isystem $(ANDROID_NDK_HOME)/sysroot/usr/include/aarch64-linux-android
ABI_CFLAGS_arm64-v8a            = -fstack-protector
ABI_CXXFLAGS_arm64-v8a          = -I$(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-arm64/usr/include
ABI_LDFLAGS_arm64-v8a           = -march=armv8-a

ABI_CONFIG_TUPLE_x86            = x86-unknown-linux-android
ABI_SYSROOT_x86                 = $(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-x86
ABI_CPPFLAGS_x86                = -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -isystem $(ANDROID_NDK_HOME)/sysroot/usr/include/i686-linux-android
ABI_CFLAGS_x86                  =
ABI_CXXFLAGS_x86                = -I$(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-x86/usr/include
ABI_LDFLAGS_x86                 = -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32

ABI_CONFIG_TUPLE_x86_64         = x86_64-unknown-linux-android
ABI_SYSROOT_x86_64              = $(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-x86_64
ABI_CPPFLAGS_x86_64             = -march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel -isystem $(ANDROID_NDK_HOME)/sysroot/usr/include/x86_64-linux-android
ABI_CFLAGS_x86_64               =
ABI_CXXFLAGS_x86_64             = -I$(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)/arch-x86_64/usr/include
ABI_LDFLAGS_x86_64              = -march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel


#
# automake files
#
AMFILES =                               \
    src/system/SystemLayer.am           \
    src/system/Makefile.am              \
    src/include/Makefile.am             \
    src/lib/core/CoreLayer.am           \
    src/lib/support/SupportLayer.am     \
    src/lib/Makefile.am                 \
    src/inet/InetLayer.am               \
    src/inet/Makefile.am                \
    src/ble/BleLayer.am                 \
    src/ble/Makefile.am                 \
    src/lwip/Makefile.am                \
    src/Makefile.am                     \
    third_party/Makefile.am             \
    Makefile.am                         \
    configure.ac                        \
    $(NULL)

#
# configure-action <abi>
#
# Steps to configure the CHIP SDK for a specific Android ABI.
#
#   abi - The target ABI.
#
define configure-action
$(ECHO) "  CONFIG   $(ABI_CONFIG_TUPLE_$(1))..."
(cd $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1)) && $(AbsTopSourceDir)/configure -C \
CPP="$(CPP)" CC="$(CC)" CXX="$(CXX)" OBJC="$(OBJC)" OBJCXX="$(OBJCXX)" AR="$(AR)" RANLIB="$(RANLIB)" NM="$(NM)" STRIP="$(STRIP)" \
INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
CPPFLAGS="$(CPPFLAGS)" \
CFLAGS="$(CFLAGS)" \
CXXFLAGS="$(CXXFLAGS)" \
OBJCFLAGS="$(OBJCFLAGS)" \
OBJCXXFLAGS="$(OBJCXXFLAGS)" \
LDFLAGS="$(LDFLAGS)" \
JAVA_HOME="$(JAVA_HOME)" \
JNI_INCLUDE_DIRS="$(JNI_INCLUDE_DIRS)" \
--build=$(shell $(AbsTopSourceDir)/third_party/nlbuild-autotools/repo/autoconf/config.guess) \
--host=$(ABI_CONFIG_TUPLE_$(1)) \
--with-sysroot=$(ABI_SYSROOT) \
--with-libtool-sysroot=$(ABI_SYSROOT) \
--with-chip-project-includes=$(AbsTopSourceDir)/config/android \
--prefix=/ \
--exec-prefix=/$(ABI_CONFIG_TUPLE_$(1)) \
$(CONFIGURE_OPTIONS))
endef # configure-action

#
# build-action <abi>
#
# Steps to generate the CHIP SDK intermediate build products for the specified Android ABI.
#
#   abi - The target ABI.
#
define build-action
  $(ECHO) "  BUILD    $(ABI_CONFIG_TUPLE_$(1))"
  $(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1)) --no-print-directory all
endef # build-action

#
# stage-action <abi>
#
# Steps to stage (install) the CHIP SDK final build products for the specified
# specified Android ABI.
#
#   abi - The target ABI.
#
define stage-action
  $(ECHO) "  STAGE    $(ABI_CONFIG_TUPLE_$(1))"
  $(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1)) --no-print-directory DESTDIR=$(AbsTopResultDir) install
endef # stage-action

#
# pretty-action <abi>
#
# Steps to pretty-ify the CHIP SDK source code for the specified Android ABI.
#
#   abi - The target ABI.
#
define pretty-action
  $(ECHO) "  PRETTY   $(1)"
  $(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1)) --no-print-directory pretty
endef # pretty-action

#
# pretty-check-action <abi>
#
# Steps to pretty-check (lint) the CHIP SDK source code for the specified
# Android ABI.
#
#   abi - The target ABI.
#
define pretty-check-action
  $(ECHO) "  PRETTY   $(1)"
  $(MAKE) $(JOBSFLAG) -C $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1)) --no-print-directory pretty-check
endef # pretty-check-action

#
# clean-action <abi>
#
# Steps to clean (delete) the CHIP SDK final build products for the specified
# specified Android ABI.
#
#   abi - The target ABI.
#
define clean-action
  $(ECHO) "  CLEAN   $(1)"
  @$(RM_F) -r $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1))
endef # clean-action

#
# ABI_template <abi>
#
# Define macros, targets and rules to configure, build, and stage the
# CHIP SDK for a single Android ABI.
#
#   abi - The architecture to instantiate the template for.
#
define ABI_template
CONFIGURE_TARGETS    += configure-$(1)
BUILD_TARGETS        += do-build-$(1)
STAGE_TARGETS        += stage-$(1)
PRETTY_TARGETS       += pretty-$(1)
PRETTY_CHECK_TARGETS += pretty-check-$(1)
CLEAN_TARGETS        += clean-$(1)
BUILD_DIRS           += $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1))

.PHONY: configure-$(1) do-build-$(1) stage-$(1) pretty-$(1) lint-$(1) pretty-check-$(1) clean-$(1)

configure-$(1): TARGET_ABI=$(1)
configure-$(1): ABI_SYSROOT=$(ABI_SYSROOT_$(1))
configure-$(1): ABI_CPPFLAGS=$(ABI_CPPFLAGS_$(1))
configure-$(1): ABI_CFLAGS=$(ABI_CFLAGS_$(1))
configure-$(1): ABI_CXXFLAGS=$(ABI_CXXFLAGS_$(1))
configure-$(1): ABI_LDFLAGS=$(ABI_LDFLAGS_$(1))

configure-$(1): env-check $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1))/config.status

$(BuildPath)/$(ABI_CONFIG_TUPLE_$(1))/config.status: | $(BuildPath)/$(ABI_CONFIG_TUPLE_$(1))
	$$(call configure-action,$(1))

do-build-$(1): configure-$(1)

do-build-$(1):
	$$(call build-action,$(1))

stage-$(1): do-build-$(1)

stage-$(1): | $(TopResultDir)
	$$(call stage-action,$(1))

pretty-$(1): configure-$(1)
	$$(call pretty-action,$(1))

lint-$(1) pretty-check-$(1): configure-$(1)
	$$(call pretty-check-action,$(1))

clean-$(1):
	$$(call clean-action,$(1))

endef # ABI_template


#
# Rules
#

# Don't allow this top-level makefile's targets to be built in parallel.
.NOTPARALLEL:

.DEFAULT_GOAL := all

.PHONY : all configure build stage check pretty lint pretty-check clean env-check help

# Instantiate an ABI-specific set of rules to build CHIP for each target ABI.
$(foreach abi,$(ANDROID_ABI),$(eval $(call ABI_template,$(abi))))

all: stage

Makefile.in: $(AMFILES)
	$(ECHO) "BOOTSTRAP"
	@./bootstrap

configure: Makefile.in $(CONFIGURE_TARGETS)

build: $(BUILD_TARGETS)

stage: $(STAGE_TARGETS)

pretty: $(PRETTY_TARGETS)

lint pretty-check: $(PRETTY_CHECK_TARGETS)

clean: $(CLEAN_TARGETS)

env-check:
	@if [ -z "$(JAVA_HOME)" ]; then \
		echo "JAVA_HOME not set"; \
		false; \
	fi
	@if [ \! -d "$(ANDROID_HOME)" ]; then \
		echo "ERROR: Android SDK not found at $(ANDROID_HOME)"; \
		echo "Override the ANDROID_HOME variable to specify an alternate location for the Android SDK"; \
		false; \
	fi
	@if [ \! -d "$(ANDROID_NDK_HOME)" ]; then \
		echo "ERROR: Android NDK not found at $(ANDROID_NDK_HOME)"; \
		echo "Override the ANDROID_NDK_HOME variable to specify an alternate location for the Android NDK"; \
		false; \
	fi
	@if [ \! -d "$(ANDROID_NDK_HOME)/platforms/android-$(ANDROID_API)" ]; then \
		echo "ERROR: Android API level $(ANDROID_API) not supported by NDK at $(ANDROID_NDK_HOME)"; \
		echo "Override the ANDROID_API variable to select another API level"; \
		false; \
	fi
	$(ECHO) "NOTE: JAVA_HOME is '$(JAVA_HOME)' (source: $(origin JAVA_HOME))"
	$(ECHO) "NOTE: ANDROID_HOME is '$(ANDROID_HOME)' (source: $(origin ANDROID_HOME))"
	$(ECHO) "NOTE: ANDROID_NDK_HOME is '$(ANDROID_NDK_HOME)' (source: $(origin ANDROID_NDK_HOME))"
	$(ECHO) "NOTE: ANDROID_API is $(ANDROID_API) (source: $(origin ANDROID_API))"
	$(ECHO) "NOTE: ANDROID_ABI is '$(ANDROID_ABI)' (source: $(origin ANDROID_ABI))"
	$(ECHO) "NOTE: ANDROID_STL is '$(ANDROID_STL)' (source: $(origin ANDROID_STL))"

$(TopResultDir) $(BUILD_DIRS):
	$(ECHO) "  MKDIR    $@"
	@$(MKDIR_P) "$@"

help:
	$(ECHO) ""
	$(ECHO) "Type 'make -f $(firstword $(MAKEFILE_LIST))' to build CHIP for Android for the following"
	$(ECHO) "API level and ABIs: "
	$(ECHO) ""
	$(ECHO) "    API Level $(ANDROID_API)"
	$(ECHO) "    $(ANDROID_ABI)"
	$(ECHO) ""
	$(ECHO) "To build for a particular API or ABI, override the ANDROID_API and ANDROID_ABI"
	$(ECHO) "variables as follows:"
	$(ECHO) ""
	$(ECHO) "    make -f $(firstword $(MAKEFILE_LIST)) ANDROID_API=24 ANDROID_ABI='armv7 x86'"
	$(ECHO) ""
	$(ECHO) "You may want or need to override the following make variables either on the "
	$(ECHO) "command line or in the environment: "
	$(ECHO) ""
	$(ECHO) "  DEBUG                   Enable CHIP debug code and logging (default: $(DEBUG))."
	$(ECHO) ""
	$(ECHO) "  ENABLE_TARGETED_LISTEN  Enable CHIP support for listening on particular "
	$(ECHO) "                          addresses or interfaces. This allows testing multiple "
	$(ECHO) "                          instances of the CHIP stack running on a single host "
	$(ECHO) "                          (default: $(ENABLE_TARGETED_LISTEN))."
	$(ECHO) ""
	$(ECHO) "  JAVA_HOME               Directory in which the Java runtime is located."
	$(ECHO) ""
	$(ECHO) "  ANDROID_ROOT            Directory where Android NDK and SDK are installed (if "
	$(ECHO) "                          the same) (default: $(ANDROID_ROOT))."
	$(ECHO) ""
	$(ECHO) "  ANDROID_NDK_HOME        Directory where Android NDK is installed (default: "
	$(ECHO) "                          $(ANDROID_NDK_HOME))."
	$(ECHO) ""
	$(ECHO) "  ANDROID_HOME            Directory where Android SDK is installed (default: "
	$(ECHO) "                          $(ANDROID_HOME))."
	$(ECHO) ""
	$(ECHO) "  ANDROID_API             Android NDK API level to build against (default: $(ANDROID_API))."
	$(ECHO) ""
	$(ECHO) "  ANDROID_ABI             List of Android ABIs to build for.  Choices are: armeabi,"
	$(ECHO) "                          armeabi-v7a, arm64-v8a, x86 and x86_64 (default: "
	$(ECHO) "                          $(ANDROID_ABI))."
	$(ECHO) ""
	$(ECHO) "                          NOTE: Support for armeabi is deprecated in later SDKs/NDKs."
	$(ECHO) ""
	$(ECHO) "  ANDROID_STL             Android NDK C++ runtime to build against.  Choices"
	$(ECHO) "                          are libc++, gnustl and system (default: $(ANDROID_CXX))."
