# Copyright (C) 2004 Nokia
# Author: lauri.leukkunen@nokia.com
# Licenced under GPL, see top level COPYING file for details

GARNAME = uclibc
GARVERSION = 1.0
CATEGORIES = gcc

DESCRIPTION = toolchain (binutils, uClibc, gcc)

DEBIAN_PACKAGES = gcc-3.3-base gcc gcc-3.3 g++ g++-3.3 cpp cpp-3.3 libgcc1 libuclibc0 libuclibc-dev binutils

define BLURB
 # FIXME: blurb goes here
endef

CONFIGURE_SCRIPTS = toolchain
BUILD_SCRIPTS = toolchain
INSTALL_SCRIPTS = toolchain

# INCLUDE THIS HERE BEFORE OVERRIDING
include ../category.mk

unexport DESTDIR =
unexport prefix = $(COMPILERDIR)

unexport exec_prefix = $(prefix)
unexport bindir = $(exec_prefix)/bin
unexport sbindir = $(exec_prefix)/sbin
unexport libexecdir = $(exec_prefix)/libexec
unexport datadir = $(prefix)/share
unexport sysconfdir = $(prefix)/etc
unexport sharedstatedir = $(prefix)/share
unexport localstatedir = $(prefix)/var
unexport libdir = $(exec_prefix)/lib
unexport infodir = $(prefix)/share/info
unexport lispdir = $(prefix)/share/emacs/site-lisp
unexport includedir = $(prefix)/include
unexport mandir = $(prefix)/share/man
unexport docdir = $(prefix)/share/doc
unexport sourcedir = $(prefix)/src

ARCH=i386
SUB_ARCH=i386

ifeq ($(ARCH),arm)
SUB_ARCH=arm
endif

GCC_VER=3.3.2
UCLIBC_VER=snapshot-20040229

TARGETNAME=$(SUB_ARCH)-gcc-$(GCC_VER)-uclibc-$(UCLIBC_VER)
COMPILERDIR=/scratchbox/compilers/$(TARGETNAME)
DOWNLOAD_SITE=http://scratchbox.org/download/files/sbox-files

pre-patch:
	cd work && \
	wget -O - $(DOWNLOAD_SITE)/uclibc-gcc-3.3.x-20040229.tar.gz | tar zxvf - && \
	mkdir -p $(COMPILERDIR)/bin && \
	ln -sf /scratchbox/tools/bin/sed $(COMPILERDIR)/bin/sed && \
	cd toolchain && \
	patch -p1 < ../../gcc-strip_and_uclibc-hostcc.patch
	$(MAKECOOKIE)

configure-toolchain:
# use the right uClibc configuration file
	cp uClibc_config.$(SUB_ARCH) work/toolchain/gcc-3.3.x/sources/uClibc.config
	$(MAKECOOKIE)

build-toolchain:
	$(MAKE) -C work/toolchain/gcc-3.3.x ARCH=$(ARCH) BUILD_DIR=$(COMPILERDIR) USE_UCLIBC_SNAPSHOT="false" HOSTCC=host-gcc \
		TARGET_PATH="\$$(STAGING_DIR)/bin:$$PATH" \
		BUILD_EXTRA_TOOLS=false GCC_STRIP_HOST_BINARIES=false \
		GCC_SITE="$(DOWNLOAD_SITE)" \
		BINUTILS_SITE="$(DOWNLOAD_SITE)" \
		UCLIBC_SITE="$(DOWNLOAD_SITE)" \
		UCLIBC_SOURCE=uClibc-$(UCLIBC_VER).tar.bz2 \
		UCLIBC_DIR="\$$(TOOL_BUILD_DIR)/uClibc" \
		LINUX_SITE="$(DOWNLOAD_SITE)"
	$(MAKECOOKIE)

install-toolchain:
	cp gcc.specs $(COMPILERDIR)/gcc.specs
	cd $(COMPILERDIR)/bin && \
	ln -sf gcc gcc-$(shell echo $(GCC_VER) | cut -d "." --fields=1,2) && \
	ln -sf g++ g++-$(shell echo $(GCC_VER) | cut -d "." --fields=1,2) && \
	for f in *; do ln -sf $$f sbox-$$f; done
	echo "$(TARGETNAME):$(COMPILERDIR):$(SUB_ARCH):linux:uclibc:$(ARCH)" >> $(COMPILERDIR)/compiler-name
	cat target_setup.sh.in | sed "s/COMPILERDIR/$(subst /,\/,$(COMPILERDIR))/g" | sed "s/ARCHDIR/$(ARCH)-linux-uclibc/g" > $(COMPILERDIR)/target_setup.sh
	chmod +x $(COMPILERDIR)/target_setup.sh
	$(MAKECOOKIE)

clean-installation:
	rm -rf $(COMPILERDIR)

superclean: clean-installation clean

