#!/usr/bin/make -f
# -*- make -*-

CX ?= /opt/ppc32/cx
BUILD ?= build
TUPLES := powerpc-405-linux-gnu arm-v5te-linux-gnueabi

.PHONY: all setup link build cx-install
all: build

BUILDS := $(foreach I,$(TUPLES),$(BUILD)/static-$(I) $(BUILD)/dynamic-$(I))

# Busybox explodes on parallel make.
$(addsuffix /built-stamp,$(BUILDS)): %/built-stamp : %/.config
	$(MAKE) -j1 -C $*

build: $(addsuffix /built-stamp,$(BUILDS))
setup: $(addsuffix /.config,$(BUILDS))

ifdef LINK
link:
	mkdir -p $(LINK)/bin
	ln -sf $(BUILD)/static/busybox $(LINK)/bin/busybox
	ln -sf $(BUILD)/static/busybox.links $(LINK)/bin/busybox.links
	ln -sf $(BUILD)/dynamic/busybox $(LINK)/bin/busybox.dynamic
endif

CX_FILES := $(foreach I,$(TUPLES), \
		$(BUILD)/static-$(I)/busybox $(I)/bin/ \
		$(BUILD)/static-$(I)/busybox.links $(I)/bin/ \
	        $(BUILD)/dynamic-$(I)/busybox $(I)/bin/busybox.dynamic)
$(warning $(CX_FILES))

cx-install: build
	$(CX)/bin/cx-install -x $(CX) -b busybox $(addprefix -p toolchain-,$(TUPLES)) -c "busybox\ndir `/bin/pwd`\ncommit `git rev-parse HEAD`" -- $(CX_FILES)

$(BUILD)/static-%/.config: .config
	mkdir -p $(@D)
	sed -e 's|CROSS_COMPILER_PREFIX.*|CROSS_COMPILER_PREFIX="$(CX)/bin/$*-"|' < $< > $@
	$(MAKE) -j1 O=$(@D) oldconfig > /dev/null

$(BUILD)/dynamic-%/.config: .config
	mkdir -p $(@D)
	sed -e 's|CROSS_COMPILER_PREFIX.*|CROSS_COMPILER_PREFIX="$(CX)/bin/$*-"|' \
            -e 's|CONFIG_STATIC=y|CONFIG_STATIC=n|' < $< > $@
	$(MAKE) -j1 O=$(@D) oldconfig > /dev/null
