LOCAL_PATH := $(call my-dir)

PORTAGE_PREFIX := $(LOCAL_PATH)/../../portage
BINDIR := $(PORTAGE_PREFIX)/usr/bin

define CREATE_WRAPPER
	$(hide)mkdir -p $(dir $@)
	$(hide) echo $(HOST_OUT) $(3RD_PARTY_ROOT)
	$(hide)sed \
		-e 's:@ROOT_SUBDIR@:$(3RD_PARTY_ROOT_SUBDIR):g' \
		-e 's:@BIN@:$(BINDIR)/$(notdir $@):' \
		$< > $@.tmp \
		&& chmod a+rx $@.tmp && mv $@.tmp $@
endef

CBUILD = $(CLANG_CONFIG_$(HOST_ARCH)_HOST_TRIPLE)
CHOST  = $(CLANG_CONFIG_$(TARGET_ARCH)_TARGET_TRIPLE)

# Map android's arch naming to Gentoo's.
ANDROID_ARCH-mips64 = mips
ANDROID_ARCH-x86_64 = amd64
gentoo-arch = $(if $(ANDROID_ARCH-$(1)),$(ANDROID_ARCH-$(1)),$(1))
HOST_KEYWORD   := $(call gentoo-arch,$(HOST_ARCH))
TARGET_KEYWORD := $(call gentoo-arch,$(TARGET_ARCH))

# Common build doesn't set this up.
TARGET_RANLIB ?= $(TARGET_AR:ar=ranlib)

MAIN_OVERLAY_REPO := `readlink -f $(LOCAL_PATH)`/../../overlays/gentoo
MAIN_OVERLAY_REPO_REL := $(LOCAL_PATH)/../../overlays/gentoo

include $(CLEAR_VARS)

#
# Create /etc/portage config files.
#

3RD_PARTY_CONFIGS :=

make.profile := $(3RD_PARTY_ROOT)/etc/portage/make.profile
$(make.profile):
	$(hide)mkdir -p $(dir $@)
	$(hide)ln -sfT \
		`echo $(dir $@) | sed 's:[^/]*/:../:g'`/$(MAIN_OVERLAY_REPO_REL)/profiles/default/linux/$(TARGET_KEYWORD) \
		$@

LOCAL_MODULE := make.conf
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(3RD_PARTY_ROOT)/etc/portage
3RD_PARTY_CONFIGS += $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)

include $(BUILD_SYSTEM)/base_rules.mk

make.conf := $(intermediates)/make.conf
$(make.conf): $(LOCAL_PATH)/make.conf.in $(make.profile)
	$(hide)mkdir -p $(dir $@)
	$(hide)sed \
		-e 's:@CC@:$(notdir $(3RD_PARTY_COMPILER)):g' \
		-e 's:@CXX@:$(notdir $(TARGET_CXX)):g' \
		-e 's:@AR@:$(notdir $(TARGET_AR)):g' \
		-e 's:@RANLIB@:$(notdir $(TARGET_RANLIB)):g' \
		-e 's:@LD@:$(notdir $(TARGET_LD)):g' \
		-e 's:@OBJCOPY@:$(notdir $(TARGET_OBJCOPY)):g' \
		-e 's:@STRIP@:$(notdir $(TARGET_STRIP)):g' \
		-e 's:@READELF@:$(notdir $(TARGET_READELF)):g' \
		-e 's:@ARCH@:$(TARGET_ARCH):g' \
		-e 's:@CBUILD@:$(CBUILD):g' \
		-e 's:@CHOST@:$(CHOST):g' \
		-e 's:@COMMON_OBJ@:$${ANDROID_BUILD_TOP}/$(TARGET_OUT_COMMON_GENTOO):' \
		-e 's:@PRODUCT_OBJ@:$${ANDROID_PRODUCT_OUT}/obj/gentoo:g' \
		-e 's:@PORTAGE_PREFIX@:$(PORTAGE_PREFIX):g' \
		$< > $@

include $(CLEAR_VARS)

LOCAL_MODULE := package.provided
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(3RD_PARTY_ROOT)/etc/portage/profile
3RD_PARTY_CONFIGS += $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)

include $(BUILD_SYSTEM)/base_rules.mk

package.provided := $(intermediates)/package.provided
$(package.provided): $(LOCAL_PATH)/package.provided.in
	$(hide)mkdir -p $(dir $@)
	$(hide)cp $< $@

include $(CLEAR_VARS)

LOCAL_MODULE := gentoo.conf
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(3RD_PARTY_ROOT)/etc/portage/repos.conf
3RD_PARTY_CONFIGS += $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)

include $(BUILD_SYSTEM)/base_rules.mk

gentoo.conf := $(intermediates)/gentoo.conf
$(gentoo.conf): $(LOCAL_PATH)/repos.conf.in
	$(hide)mkdir -p $(dir $@)
	$(hide)sed -e "s:@OVERLAY_LOCATION@:$(MAIN_OVERLAY_REPO):" $< > $@

#
# Create various bin/ wrappers.
# XXX: These contain product specific paths and should not.
#

3RD_PARTY_WRAPPERS :=

include $(CLEAR_VARS)

LOCAL_MODULE := ebuild
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_IS_HOST_MODULE := true
3RD_PARTY_WRAPPERS += $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)

include $(BUILD_SYSTEM)/base_rules.mk

ebuild := $(intermediates)/$(LOCAL_MODULE)
$(ebuild): $(LOCAL_PATH)/wrapper.in
	$(CREATE_WRAPPER)

LOCAL_BUILT_MODULE := $(ebuild)

include $(CLEAR_VARS)

LOCAL_MODULE := emerge
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_IS_HOST_MODULE := true
3RD_PARTY_WRAPPERS += $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)

include $(BUILD_SYSTEM)/base_rules.mk

LOCAL_BUILT_MODULE := $(intermediates)/$(LOCAL_MODULE)
$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/wrapper.in | $(patsubst %,$(HOST_OUT_EXECUTABLES)/%,ebuild portageq)
	$(CREATE_WRAPPER)

include $(CLEAR_VARS)

LOCAL_MODULE := portageq
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_IS_HOST_MODULE := true
3RD_PARTY_WRAPPERS += $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)

include $(BUILD_SYSTEM)/base_rules.mk

portageq := $(intermediates)/portageq
$(portageq): $(LOCAL_PATH)/wrapper.in
	$(CREATE_WRAPPER)

LOCAL_BUILT_MODULE := $(portageq)

include $(CLEAR_VARS)

LOCAL_MODULE := 3rd-party-merge
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_IS_HOST_MODULE := true
3RD_PARTY_WRAPPERS += $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)

include $(BUILD_SYSTEM)/base_rules.mk

LOCAL_BUILT_MODULE := $(intermediates)/$(LOCAL_MODULE)
$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/wrapper.in
	$(CREATE_WRAPPER)
