#############################################################
# Makefile to build BACKWARD_CPP in toolchain
#
#

TOPDIR=..
LIBNAME=backward-cpp
HAS_ONLY_RELEASE_MODE_PRECOMPILED=1
REALTOP=$(shell readlink -f ..)
include $(TOPDIR)/Makefiles/Repo-defines.mk

BACKWARD_CPP_DIR_NAME=backward-cpp-1.6
BACKWARD_CPP_TARBALL=backward-cpp-1.6.tar.gz
BACKWARD_CPP_SOVER=1.6

.PHONY: all links untar config build regen_precompiled clean distclean

all:
	$(MKDIR) $(PRECOMPILED_DIR)
	$(MAKE) untar
	$(MAKE) config
	$(MAKE) build

untar:
	@echo "=== Untarring BACKWARD_CPP"
	rm -rf $(BACKWARD_CPP_DIR_NAME)
	mkdir -p $(PRECOMPILED_DIR) include
	tar -xvzf $(BACKWARD_CPP_TARBALL)

config:
	@echo "=== Configuring BACKWARD_CPP"
	# NOTE: 
	#  BACKWARD_SYSTEM_LINUX == tell our platform is Linux
	#  BACKWARD_HAS_UNWIND == docker-base project installs on top of Fedora base image the "gperftools-libs" package which in turn requires "libunwind"... 
	#                         inform backward-cpp we've got libunwind then
	#  BACKWARD_HAS_BFD == docker-base project installs on top of Fedora base image the "binutils-devel" package which provides the 
	#                      "Binary File Descriptor library" which is used by backward-cpp to provide very detailed backtraces
	cd $(BACKWARD_CPP_DIR_NAME) && \
		cmake3 -DBACKWARD_SYSTEM_LINUX=1 -DBACKWARD_HAS_UNWIND=1 -DBACKWARD_HAS_BFD=1 .

build:
	@echo "=== Building BACKWARD_CPP"
	cd $(BACKWARD_CPP_DIR_NAME) && \
		make -j$(NUM_PROCS) VERBOSE=1 
	cp -fv $(BACKWARD_CPP_DIR_NAME)/libbackward.a      ./$(PRECOMPILED_DIR)
	# Note: The backward.hpp has been moved to base-libs/BaseLib/backward.h as it was required and ONLY used by the assert code in base-libs.
	# Incase backward-cpp library is updated in future, replace base-libs/BaseLib/backward.h with the latest backward.hpp manually.  
	# cp -fv $(BACKWARD_CPP_DIR_NAME)/*.hpp              ./include

clean_build_intermediate_artifacts:
	rm -rf $(BACKWARD_CPP_DIR_NAME)

clean_build_outputs: clean
	rm -f $(PRECOMPILED_DIR)/*.so*
	rm -rf include/*

HAS_INCLUDE_SUPPORT=2
include $(TOPDIR)/Makefiles/ThirdPartyTargetHelpers.mk
