# use tic etc from homebrew
export PATH := /opt/homebrew/opt/ncurses/bin/:/opt/homebrew/opt/coreutils/libexec/gnubin:/opt/homebrew/opt/gnu-sed/libexec/gnubin:/opt/homebrew/opt/make/libexec/gnubin:$(PATH)
# avoid sed error
export LC_TYPE := C
# fix .pc file locations
export PKG_CONFIG_LIBDIR := $(shell pwd)/../buildroot/lib/pkgconfig:$(shell pwd)/../buildroot/share/pkgconfig
# set toolchain paths
ifeq ($(USE_CCACHE), 1)
export CC := ccache $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang
export CXX := ccache $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang++
else
export CC := $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang
export CXX := $(OHOS_SDK_HOME)/native/llvm/bin/$(OHOS_ARCH)-unknown-linux-ohos-clang++
endif
export LD := $(OHOS_SDK_HOME)/native/llvm/bin/ld.lld
export AR := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-ar
export RANLIB := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-ranlib
export OBJCOPY := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-objcopy
export OBJDUMP := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-objdump
export READELF := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-readelf
export STRIP := $(OHOS_SDK_HOME)/native/llvm/bin/llvm-strip
export CFLAGS := -I$(shell pwd)/../buildroot/include -Wno-int-conversion -O2
export CXXFLAGS := -I$(shell pwd)/../buildroot/include -O2
export LDFLAGS := -L$(shell pwd)/../buildroot/lib
export PREFIX := /data/app/harmonix.org/harmonix_1.0

# default GNU mirror, allow to override
GNU_MIRROR ?= https://ftpmirror.gnu.org

BUILD_DIR = build

define define_package_common
all: download/$(SOURCE_FILE)
	rm -rf temp build
	mkdir -p temp build
	cd temp && tar xvf ../download/$(SOURCE_FILE)
	mkdir -p temp/$(SOURCE_DIR)/$(BUILD_DIR)
	$(PATCH_SOURCE)
	make configure
	cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && make -j $(shell nproc)
	cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && make install DESTDIR=$(shell pwd)/build
	$(AFTER_INSTALL)
	mkdir -p ../buildroot
	# drop .la files generated by libtool
	rm -fv build$(PREFIX)/lib/*.la
	# strip all elf files
	find build -type f -exec file {} \; | grep ELF | awk '{print substr($$$$1, 0, length($$$$1)-1);}' | xargs -t $(OHOS_SDK_HOME)/native/llvm/bin/llvm-strip
	cp -rfv build$(PREFIX)/. ../buildroot | tee file.lst

download/$(SOURCE_FILE):
	mkdir -p download
	cd download && wget --retry-connrefused --read-timeout=20 --timeout=15 $(SOURCE_URL)
endef

define define_autotools_package
$(eval $(call define_package_common))

configure:
	cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && ../configure $(CONFIG_ARGS)
endef

CMAKE_LISTS_PATH = ..
define define_cmake_package
$(eval $(call define_package_common))

configure:
	cd temp/$(SOURCE_DIR)/$(BUILD_DIR) && cmake $(CMAKE_LISTS_PATH) $(CMAKE_ARGS)
endef
