#! /usr/bin/make -f

PKGS = libc.6 libc.6-dev \
       libc-bin libc-dev-bin nscd \
       locales zoneinfo \
       eglibc-doc \

prefix = /usr
bindir = $(prefix)/bin
sbindir = $(prefix)/sbin
libexecdir = $(prefix)/lib
sysconfdir = /etc
libdir = /usr/lib
includedir = $(prefix)/include
datarootdir = $(prefix)/share
datadir = $(prefix)/share
infodir = $(prefix)/share/info
localedir = $(prefix)/lib/locale
mandir = $(prefix)/share/man
docdir = $(prefix)/share/doc

$(PKGS): eglibc.stamp

.SILENT: eglibc.setup.stamp
eglibc.setup.stamp:
	cd src/libc && \
		ln -s ../ports ports
	mkdir libcbuild
	touch eglibc.setup.stamp

.SILENT: eglibc.configure.stamp
eglibc.configure.stamp: eglibc.setup.stamp
	cd libcbuild && \
		rm -f config.cache && \
		echo 'libc_cv_forced_unwind=yes' >> config.cache && \
		echo 'libc_cv_c_cleanup=yes' >> config.cache && \
		echo 'libc_cv_gnu89_inline=yes' >> config.cache && \
		echo 'libc_cv_ssp=no' >> config.cache && \
		rm -f configparams && \
		if [ -n "$${TOOLS_PREFIX}" ]; then \
			BINUTILS=--with-binutils=$${TOOLS_PREFIX}/bin; \
		else \
			BINUTILS=; \
		fi && \
		BUILD_CC=gcc BUILD_CXX=g++ ../src/libc/configure \
			--prefix=$(prefix) \
			--bindir=$(bindir) --sbindir=$(sbindir) \
			--libexecdir=$(libexecdir) --sysconfdir=$(sysconfdir) \
			--libdir=$(libdir) --includedir=$(includedir) \
			--datarootdir=$(datarootdir) --datadir=$(datadir) \
			--infodir=$(infodir) --localedir=$(localedir) \
			--mandir=$(mandir) --docdir=$(docdir) \
			--build=$${OH_BUILD_ARCH_GNU} --host=$${OH_HOST_ARCH_GNU} \
			--disable-profile --enable-add-ons \
			--enable-kernel=3.2.0 \
			--with-tls --with-__thread --without-cvs \
			--without-selinux --without-gd \
			$${BINUTILS} \
			--with-headers=$${HEADERS_PREFIX}/usr/include \
			--cache-file=config.cache
	touch eglibc.configure.stamp

.SILENT: eglibc.build.stamp
eglibc.build.stamp: eglibc.configure.stamp
	cd libcbuild && \
		make -j $${JOBS:-1}
	touch eglibc.build.stamp

.SILENT: eglibc.install.stamp
eglibc.install.stamp: eglibc.build.stamp
	cd libcbuild && \
		make install_root=$$(pwd)/../dest install
	rm dest/var/db/Makefile \
		dest/sbin/sln \
		dest/usr/bin/makedb \
		dest/usr/bin/pcprofiledump \
		dest/usr/bin/xtrace
	rm -Rf dest/usr/lib/*_pic*
	mkdir -p dest/usr/share/doc/eglibc-doc && \
		cp -Rp src/libc/ChangeLog* \
			dest/usr/share/doc/eglibc-doc
	mkdir -p dest/usr/share/doc/eglibc-doc/libidn && \
		cp -Rp src/libc/libidn/ChangeLog* \
			dest/usr/share/doc/eglibc-doc/libidn
	mkdir -p dest/usr/share/doc/eglibc-doc/localedata && \
		cp -Rp src/libc/localedata/ChangeLog* \
			dest/usr/share/doc/eglibc-doc/localedata
	mkdir -p dest/usr/share/doc/eglibc-doc/nptl && \
		cp -Rp src/libc/nptl/ChangeLog* \
			dest/usr/share/doc/eglibc-doc/nptl
	mkdir -p dest/usr/share/doc/eglibc-doc/nptl_db && \
		cp -Rp src/libc/nptl_db/ChangeLog* \
			dest/usr/share/doc/eglibc-doc/nptl_db
	cp ../ld.so.conf dest/etc
	cp ../nsswitch.conf dest/etc
	touch eglibc.install.stamp

	#mkdir localesbuild
	#cd localesbuild && \
	#	CPPFLAGS=-DNOT_IN_libc ../src/localedef/configure \
	#		--prefix=$$(pwd)/../dest/usr \
	#		--with-glibc=../src/libc && \
	#	make && \
	#	make SUPPORTED-LOCALES='\
	#		de_DE.UTF-8/UTF-8 de_DE/ISO-8859-1 de_DE@euro/ISO-8859-15 \
	#		en_HK.UTF-8/UTF-8 en_HK/ISO-8859-1 \
	#		en_PH.UTF-8/UTF-8 en_PH/ISO-8859-1 \
	#		en_US.UTF-8/UTF-8 en_US/ISO-8859-1 \
	#		es_MX.UTF-8/UTF-8 es_MX/ISO-8859-1 \
	#		fa_IR/UTF-8 \
	#		fr_FR.UTF-8/UTF-8 fr_FR/ISO-8859-1 fr_FR@euro/ISO-8859-15 \
	#		it_IT.UTF-8/UTF-8 it_IT/ISO-8859-1 \
	#		ja_JP.EUC-JP/EUC-JP ja_JP.UTF-8/UTF-8' install-locales

	# We're skipping the debug package for now...
	#oh-strip -gl /usr/bin /usr/lib/*

.SILENT: eglibc.stamp
eglibc.stamp: eglibc.install.stamp
	oh-installfiles $(PKGS)
	oh-installdocs libc.6
	oh-gencontrol $(PKGS)
	oh-buildopk $(PKGS)
	touch eglibc.stamp