#"TARG" is x86_64 or aarch64 or armv7.
#"Example" is ffm_cw, fscan_cw_swp, etc.
#"CXX" is a compiler used, please modify "CXX" according to the actual compiler file location.

.DEFAULT_GOAL := release

ifeq ($(TARG),aarch64)
	CXX = aarch64-linux-gnu-g++
else ifeq ($(TARG),armv7)
	CXX = arm-linux-gnueabihf-g++
else
	TARG = x86_64
	CXX = g++
endif

CXXFLAG = -std=c++11 -I/opt/h2api/inc -L/opt/h2api/lib/$(TARG)
LDFLAG = -lh2api -Wl,-rpath='/opt/h2api/lib/$(TARG)'

# AArch64/ArmV7 compatibility for libgenSignalWave.so.
# The ARM modulation library has an unresolved experimental::filesystem symbol.
ifneq ($(filter $(TARG),aarch64 armv7),)
FS_SYMBOL = _ZNSt12experimental10filesystem2v17__cxx114path14_M_split_cmptsEv
	LDFLAG += -Wl,-u,$(FS_SYMBOL) -Wl,--export-dynamic -lstdc++fs
endif

.PHONY: release check_sdk

release: check_sdk
	$(CXX) -o bin/$(Example) demo/$(Example).cpp demo/main.cpp demo/error_handling.cpp $(CXXFLAG) $(LDFLAG)

check_sdk:
	@if [ ! -f "/opt/h2api/inc/h2_api.h" ]; then \
		echo "/opt/h2api/inc/h2_api.h was not found"; \
		echo "Please install the H2 SDK first"; \
		exit 1; \
	fi
	@if [ ! -f "/opt/h2api/lib/$(TARG)/libh2api.so" ]; then \
		echo "/opt/h2api/lib/$(TARG)/libh2api.so was not found"; \
		echo "Please install the H2 SDK first"; \
		exit 1; \
	fi
