Package-Name: gcc
Gentoo-Package: sys-devel/gcc
# Don't allow removal, or it would become very hard to compile things...
# The * in front of the other packages tells packager not to consider them
# for installation order--GCC should be lowest on the chain
Requires: gcc *glibc
Compile-Requires: *binutils *make
Homepage: http://gcc.gnu.org/
Source: gnu:///gcc/gcc-(\d+.\d+(.\d+)?) $1 gcc-$1/gcc-$1.tar.bz2
Repack:
	tar xjvfp "$(SOURCE)"
Compile:
	mkdir ../bs
	if [ "$(PKGOPT_minimal)" ] ; then LANG=c ; else LANG=c,c++ ; fi ; \
	if [ "$(PKGOPT_nonls)" ] ; then NLS=--disable-nls ; else NLS= ; fi ; \
	SRC=`pwd` ; cd ../bs && $$SRC/configure --prefix="$(PREFIX)" --enable-languages=$$LANG --disable-shared $$NLS
	cd ../bs && $(MAKE) profiledbootstrap BOOT_CFLAGS="-O2 $(GCC_OPT_FLAGS)"
	cd ../bs && $(MAKE) install
	rm -f "$(PREFIX)"/bin/{*-g??,*c++}
	if [ "$(STRIPLIB)" ] ; then \
		strip -x "$(PREFIX)"/lib/gcc/*/*/*.a ; \
	fi
	if [ ! "$(PKGOPT_minimal)" ] ; then \
# Now reconfigure for shared libraries so we get libgcc_s.so.1 and
# libstdc++.so.* (for programs compiled elsewhere that want them) and
# libgcc_eh.a (which glibc wants).
		set -e; \
		rm -rf ../bs; \
		mkdir ../bs; \
		if [ "$(PKGOPT_minimal)" ] ; then LANG=c ; else LANG=c,c++ ; fi ; \
		if [ "$(PKGOPT_nonls)" ] ; then NLS=--disable-nls ; else NLS= ; fi ; \
		SRC=`pwd` ; cd ../bs && $$SRC/configure --prefix="$(PREFIX)" --enable-languages=$$LANG --enable-shared $$NLS; \
		cd ../bs && $(MAKE) bootstrap BOOT_CFLAGS="-O2 $(GCC_OPT_FLAGS)"; \
		mv -f ../bs/gcc/libgcc_s.so.1 ../bs/gcc/libgcc_eh.a ../bs/*-*/libstdc++-v3/src/.libs/libstdc++.so.* "$(PREFIX)"/lib/ ; \
	fi
# Remove any "fixed" includes from packages other then the Linux kernel and
# XFree86/Xorg, to avoid major confusion when such packages are upgraded.
	for i in "$(PREFIX)"/lib/gcc-lib/*/*/include/* ; do \
		if [ -h "$i" -a "x$i" != "xX11" -a "x$i" != "xlinux" ] ; then \
			rm -f "$i" ; \
		fi ; \
	done
	topdir=`dirname "$(PREFIX)"` ; \
	for i in "$(PREFIX)"/lib/gcc-lib/*/*/include/root/$$topdir/* ; do \
		if [ -d "$i" -a "x$i" != "xXFree86" -a "x$i" != "xXorg" -a "x$i" != "xlinux" ] ; then \
			rm -rf "$i" ; \
		fi ; \
	done
	#rm -rf ../bs
Install:
	$(MAKE) instbin BIN="c++filt cpp g++ gcc gccbug gcov"
	ln -fs gcc /usr/bin/cc
	ln -fs g++ /usr/bin/c++
	ln -fs /usr/bin/cpp /lib/
	$(MAKE) addldso
	$(MAKE) instlocale FILE=gcc
	$(MAKE) instinfo INFO="cpp cppinternals gcc gccint"
	$(MAKE) instman SECTION=1 MAN="cpp g++ gcc gcov"
	-strip "$(PREFIX)"/libexec/gcc/*/*/{cc1,cc1plus,collect2}
Clean:
	@set -e ; cd "$(PREFIX)"/lib ; \
	for lib in *.so.[0-9] ; do \
		reallib=`/bin/ls -l "$$lib" | sed 's/.* -> //'` ; \
		for file in $$lib.[0-9]*.[0-9]* ; do \
			if test "$$file" != "$$reallib" ; then \
				rm -fv "$$file" ; \
			fi ; \
		done ; \
	done
	@set -e ; for d in {lib,libexec}/gcc/`uname -m`-pc-linux-gnu include/c++ ; do \
		cd "$(PREFIX)"/$$d ; \
		for i in [0-9]* ; do \
			if [ "$$i" != "$(VERSION)" ] ; then \
				echo "removing \`$(PREFIX)/$$d/$$i'" ; \
				rm -r "$$i" ; \
			fi ; \
		done ; \
	done
	@set -e ; cd "$(PREFIX)" ; for f in bin/`uname -m`-pc-linux-gnu-gcc-* ; do \
		if [ -f "$$f" -a "$$f" != "bin/`uname -m`-pc-linux-gnu-gcc-$(VERSION)" ] ; then \
			echo "removing \`$(PREFIX)/$$f'" ; \
			rm "$$f" ; \
		fi ; \
	done
Patch: <<EOT
######## begin patch to undeprecate -I-
--- gcc/c-opts.c.old	2007-01-06 00:55:45 +0900
+++ gcc/c-opts.c	2007-02-25 00:39:20 +0900
@@ -323,7 +323,6 @@
 	    error ("-I- specified twice");
 	  quote_chain_split = true;
 	  split_quote_chain ();
-	  inform ("obsolete option -I- used, please use -iquote instead");
 	}
       break;
 
######## end patch to undeprecate -I-
######## begin patch to shut up fixincludes (confuses progress bar)
--- gcc/Makefile.in.old	2007-03-12 13:40:09 +0900
+++ gcc/Makefile.in	2007-07-16 14:47:42 +0900
@@ -3256,7 +3256,7 @@
 	    export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
 	    cd $(build_objdir)/fixincludes && \
 	    $(SHELL) ./fixinc.sh ../../gcc/include \
-	      $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \
+	      $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) >/dev/null 2>&1 ); \
 	  rm -f include/syslimits.h; \
 	  if [ -f include/limits.h ]; then \
 	    mv include/limits.h include/syslimits.h; \
######## end patch to shut up fixincludes (confuses progress bar)
EOT

/lib/cpp
/pkg/gcc/
/usr/bin/c++
/usr/bin/c++filt
/usr/bin/cc
/usr/bin/cpp
/usr/bin/g++
/usr/bin/gcc
/usr/bin/gccbug
/usr/bin/gcov
/usr/info/cpp.info*
/usr/info/cppinternals.info*
/usr/info/gcc.info*
/usr/info/gccint.info*
/usr/share/locale/*/LC_MESSAGES/gcc.mo
/usr/man/man1/cpp.1.gz
/usr/man/man1/g++.1.gz
/usr/man/man1/gcc.1.gz
/usr/man/man1/gcov.1.gz
