SUMMARY="C/C++ compiler"
DESCRIPTION="Standard compiler for x86_gcc2 platform, ABI-compatible with BeOS R5."
HOMEPAGE="http://gcc.gnu.org"
LICENSE="
	GNU GPL v2
	GNU LGPL v2
	"
COPYRIGHT="1988-2000 Free Software Foundation, Inc."
SRC_URI="
	git+file://$portBaseDir/../binutils/download/buildtools.git#2d0a2c6404ffae1a46eb7e74daab08099b45af2c
	git+git://github.com/haiku/buildtools.git#2d0a2c6404ffae1a46eb7e74daab08099b45af2c
	"
REVISION="1"
ARCHITECTURES="x86_gcc2"
if [ $effectiveTargetArchitecture = x86_gcc2 -a $targetArchitecture = x86 ]
then
	ARCHITECTURES="$ARCHITECTURES x86"
fi
SECONDARY_ARCHITECTURES="x86_gcc2"

PROVIDES="
	gcc = $portVersion compat >= 2.95.3
	cmd:cc$secondaryArchSuffix
	cmd:c++$secondaryArchSuffix = $portVersion compat >= 2.95.3
	cmd:c++filt$secondaryArchSuffix = $portVersion compat >= 2.95.3
	cmd:cpp$secondaryArchSuffix = $portVersion compat >= 2.95.3
	cmd:g++$secondaryArchSuffix = $portVersion compat >= 2.95.3
	cmd:gcc$secondaryArchSuffix = $portVersion compat >= 2.95.3
	cmd:gcov$secondaryArchSuffix = 1.5 compat >= 1.5
	cmd:i586_pc_haiku_gcc$secondaryArchSuffix = $portVersion compat >= 2.95.3
	cmd:protoize$secondaryArchSuffix = $portVersion compat >= 2.95.3
	cmd:unprotoize$secondaryArchSuffix = $portVersion compat >= 2.95.3
	"

REQUIRES="
	haiku$secondaryArchSuffix >= $haikuVersion
	binutils$secondaryArchSuffix
	"
BUILD_REQUIRES="
	"
BUILD_PREREQUIRES="
	haiku${secondaryArchSuffix}_devel >= $haikuVersion
	cmd:autoconf
	gcc$secondaryArchSuffix
	cmd:flex
	cmd:make
	cmd:sed
	cmd:tar
	cmd:makeinfo
	"

SOURCE_DIR="$portVersionedName/legacy/gcc"
BUILD_PACKAGE_ACTIVATION_PHASE=INSTALL

gccDir=$(pwd)
gccDate=$(echo $portVersion | sed 's,.*_,,')
relativeGccInstallDir="develop/tools$secondaryArchSubDir"
gccInstallDir="$prefix/$relativeGccInstallDir"
gccObjectsDir=$gccDir/../gcc-obj

BUILD()
{
	rm -rf $gccObjectsDir

	# Touch some files generated by bison, so that bison won't run to update
	# them. Fixes issues with newer bison versions.
	# And while at it, touch gperf target, too (as gperf may not be installed).
	(cd gcc; touch c-parse.c c-parse.h cexp.c cp/parse.c \
		cp/parse.h c-gperf.h)

	# build gcc
	mkdir -p $gccObjectsDir
	cd $gccObjectsDir
	CFLAGS="-O2" CXXFLAGS="-O2" "$gccDir/configure" \
		--prefix=$gccInstallDir \
		--disable-nls --enable-shared=yes --enable-languages=c,c++
	make bootstrap
}

INSTALL()
{
	cd $gccObjectsDir
	make install 

	rm $gccInstallDir/lib/libiberty.a
		# only needed for building gcc

	base=$gccInstallDir

	### HTML documentation ####################################
	
	html_base=$docDir
	if [ ! -d "$html_base" ]; then
		echo "Building HTML documentation..."
		mkdir -p $html_base
		cd $html_base
	
		makeinfo --html "$gccDir/gcc/cpp.texi"
		makeinfo --html "$gccDir/gcc/gcc.texi"
		makeinfo --force --html "$gccDir/libio/iostream.texi" \
			&& true
				# some errors
	
		ln -sf cpp/index.html $html_base/cpp.html
		ln -sf gcc/index.html $html_base/gcc.html
		ln -sf iostream/index.html $html_base/iostream.html
	fi

	### Symlinks ##############################################

	echo "Creating required symlinks"

	# convert to absolute links to relative ones
	cd $base/bin
	ln -sfn g++ c++
	ln -sfn gcc cc
	ln -sfn gcc i586-pc-haiku-gcc
	
	# make all tools available via default paths if this is the system 
	# compiler
	if [ $targetArchitecture = 'x86_gcc2' ]; then
		echo "Symlinking binaries into default path"
		mkdir -p $prefix/bin
		cd $binDir
		ln -sfn ../$relativeGccInstallDir/bin/* .
	fi
	
	### Strip #################################################
	
	echo "Strip debug info"

	cd $base
	strip --strip-debug bin/*
	strip --strip-debug i586-pc-haiku/bin/*
	strip --strip-debug lib/gcc-lib/i586-pc-haiku/2.95.3-${gccDate}/* \
		  &>/dev/null || true
	
	### Cleanup ###############################################
	
	echo "Cleanup"
	
	if [ -d $base/man -o -d $base/info -o -d $base/share ]; then
		rm -rf $base/man
		rm -rf $base/info
		rm -rf $base/share
	fi
	
	rm -f $base/lib/gcc-lib/i586-pc-haiku/2.95.3-haiku-$gccDate/include/math.h
	
	### C++ includes ##########################################
	
	echo "Install C++ includes & library"
	
	rm -rf $base/include/g++
	ln -snf /boot/system/develop/headers/c++/2.95.3 $base/include/g++
	
	ln -snf /boot/system/lib/libstdc++.r4.so $base/lib/
	ln -snf /boot/system/lib/libstdc++.so $base/lib/
}
