You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							249 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
	
	
							249 lines
						
					
					
						
							6.7 KiB
						
					
					
				# --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
						|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
						|
# | 
						|
# Filename: package/.../glibc/glibc.conf | 
						|
# Copyright (C) 2006 - 2011 The OpenSDE Project | 
						|
# Copyright (C) 2004 - 2006 The T2 SDE Project | 
						|
# | 
						|
# More information can be found in the files COPYING and README. | 
						|
# | 
						|
# This program is free software; you can redistribute it and/or modify | 
						|
# it under the terms of the GNU General Public License as published by | 
						|
# the Free Software Foundation; version 2 of the License. A copy of the | 
						|
# GNU General Public License can be found in the file COPYING. | 
						|
# --- SDE-COPYRIGHT-NOTE-END --- | 
						|
 | 
						|
# overwrite prefix to not point to the tools, but the real root for the headers | 
						|
if atstage toolchain; then | 
						|
	# hack due to sane variable not available and prefix is tools prefix | 
						|
	# -ReneR | 
						|
	confopt="--prefix=$base/build/$SDECFG_ID/usr \ | 
						|
	         --with-headers=$base/build/$SDECFG_ID/usr/include \$extraconfopt" | 
						|
	includedir="/../../usr/include" | 
						|
 | 
						|
	# MIPS injects -mabi - the host CC does not know about it for header gen | 
						|
	var_append SYSCC_WRAPPER_REMOVE ' ' '-mabi*' | 
						|
	var_append SYSCPP_WRAPPER_REMOVE ' ' '-mabi*' | 
						|
 | 
						|
	# if $HOSTCC is a gcc < 4.3 we need 'cpuid.h' | 
						|
	if ! $HOSTCC -dumpversion | grep -q '^4\.[345]' ; then | 
						|
		echo_warning "Old gcc detected: Working around cpuid.h support" | 
						|
		var_append SYSCC_WRAPPER_APPEND ' ' "-I$confdir/include-old-gcc" | 
						|
	fi | 
						|
else | 
						|
	var_append confopt " " "--with-headers=$root/usr/include" | 
						|
fi | 
						|
 | 
						|
# use at least "-O" when build without optimisation for debugging ... | 
						|
var_insert GCC_WRAPPER_INSERT " " "-O" | 
						|
# glibc does not like -ffast-math | 
						|
var_insert GCC_WRAPPER_REMOVE " " "-ffast-math" | 
						|
 | 
						|
var_append confopt " " "--enable-kernel=2.6.18" | 
						|
 | 
						|
# Disable glibc internal debuging but build debuging and profile | 
						|
# code so we can use this glibc to debug other programs. | 
						|
pkg_glibc_preconf(){ | 
						|
	configprefix='CFLAGS="$CFLAGS -g -DNDEBUG=1"' | 
						|
	configscript="../configure" | 
						|
} | 
						|
hook_add preconf 3 "pkg_glibc_preconf" | 
						|
 | 
						|
# We have to use an 'objdir' directory for building glibc and make its | 
						|
# name unique by appending $arch_target to distinguish while building | 
						|
# a multilib capable glibc using buildloops. | 
						|
pkg_glibc_objdir(){ | 
						|
	mkdir -p "objdir-$arch_target" | 
						|
	cd "objdir-$arch_target" | 
						|
} | 
						|
hook_add preconf 9 "pkg_glibc_objdir" | 
						|
 | 
						|
var_append confopt " " "--with-gnu-binutils --build=${arch_build} --host=${arch_target}" | 
						|
 | 
						|
if pkginstalled libgd; then | 
						|
	var_append confopt " " "--with-gd=/usr --with-gd-lib=/usr/lib --with-gd-include=/usr/include" | 
						|
fi | 
						|
 | 
						|
# --enable-add-ons expects a comma seperated list of add-ons | 
						|
glibc_addons="ports" | 
						|
 | 
						|
# ckeck whether to enable nptl if supported by the architecture | 
						|
if [ $SDECFG_PKG_GLIBC_TLS = 1 ]; then | 
						|
	var_append glibc_addons "," "nptl" | 
						|
	var_append extraconfopt " " "--with-tls" | 
						|
	var_append extraconfopt " " "--with-__thread" | 
						|
else | 
						|
	var_append glibc_addons "," "linuxthreads" | 
						|
	var_append extraconfopt " " "--without-__thread" | 
						|
	var_append extraconfopt " " "--disable-sanity-checks" | 
						|
 | 
						|
	[[ $arch = mips* ]] && \ | 
						|
		var_append extraconfopt " " "--without-tls" | 
						|
fi | 
						|
 | 
						|
var_append extraconfopt " " "--enable-add-ons=$glibc_addons" | 
						|
 | 
						|
# control whether to include profiling support | 
						|
if [ $SDECFG_PKG_GLIBC_ENABLE_PROFILE = 1 ] ; then | 
						|
	var_append extraconfopt " " "--enable-profile" | 
						|
else | 
						|
	var_append extraconfopt " " "--disable-profile" | 
						|
fi | 
						|
 | 
						|
var_append makeopt " " "slibdir=/\$slibdir" | 
						|
var_append makeinstopt " " "slibdir=/\$slibdir install_root=\$root" | 
						|
 | 
						|
glibc_prepatch() { | 
						|
	local tarball= tarname= | 
						|
	local addon= addons="ports" | 
						|
 | 
						|
	##[ "$SDECFG_PKG_GLIBC_TLS" = 1 ] || var_append addons ' ' 'linuxthreads' | 
						|
 | 
						|
	for addon in $addons; do | 
						|
		tarball=$( match_source_file -p $addon ) | 
						|
		tarname=${tarball##*/}; tarname=${tarname%.tar.*} | 
						|
 | 
						|
		# extract each addon into the definitive folder | 
						|
		mkdir -pv $addon | 
						|
		ln -sv $addon $tarname | 
						|
		tar -v --dereference ${taropt} $tarball | 
						|
		rm $tarname | 
						|
	done | 
						|
 | 
						|
	mkdir -p $root$includedir/gnu/ | 
						|
 | 
						|
	if [ $pkg == glibc ]; then | 
						|
		touch $root$includedir/gnu/stubs.h | 
						|
		if [ $slibdir = lib64 ]; then | 
						|
			touch $root$includedir/gnu/stubs{-32,-64}.h | 
						|
		fi | 
						|
	fi | 
						|
} | 
						|
 | 
						|
glibc_postmake() | 
						|
{ | 
						|
	if atstage toolchain; then | 
						|
	  cp -v ../include/features.h $root$includedir | 
						|
	  mkdir -p $includedir/{bits,gnu} | 
						|
	  [ -e $root$includedir/bits/stdio_lim.h ] || | 
						|
	  touch $root$includedir/bits/stdio_lim.h | 
						|
	  return | 
						|
	fi | 
						|
 | 
						|
	ln -sf libbsd-compat.a $root/usr/$slibdir/libbsd.a | 
						|
 | 
						|
	# Misc. stuff | 
						|
	# | 
						|
	if atstage native; then | 
						|
 | 
						|
		# install locales | 
						|
		# | 
						|
		eval $MAKE localedata/install-locales | 
						|
		cp ../localedata/SUPPORTED $root/usr/share/i18n/ | 
						|
 | 
						|
		if [ "$SDECFG_PKG_GLIBC_TLS" != 1 ]; then | 
						|
			# install linuxthread manpages | 
						|
			# | 
						|
			mkdir -p $root/usr/share/man/man3 | 
						|
			if [ -f /usr/bin/perl ]; then | 
						|
				eval $MAKE -C ../linuxthreads/man \ | 
						|
					MANDIR=$root/usr/share/man/man3 all install | 
						|
			fi | 
						|
 | 
						|
			# copy linuxthreads documentation | 
						|
			# | 
						|
			for x in ChangeLog Changes README FAQ.html Examples; do | 
						|
				cp -a ../linuxthreads/$x \ | 
						|
					$docdir/$x.threads | 
						|
			done | 
						|
		fi | 
						|
 | 
						|
		# copy crypt documentation | 
						|
		# | 
						|
		cp ../crypt/README.ufc-crypt   $docdir/README.crypt | 
						|
 | 
						|
		# NSCD Init script and config | 
						|
		# | 
						|
		cp $confdir/nscd.conf $confdir/nsswitch.conf $root/etc/ | 
						|
	fi | 
						|
 | 
						|
	# Install ld.so.conf | 
						|
	# | 
						|
	# TODO | 
						|
	# We should migrate to a more modular approach here, moving to package | 
						|
	# based configuration in '/etc/ld.so.conf.d/$pkg.conf' and including all | 
						|
	# dedicated conf files in a generic main 'ld.so.conf' like this: | 
						|
	# | 
						|
	# include /etc/ld.so.conf.d/*.conf | 
						|
	# | 
						|
	case $arch_machine in | 
						|
		powerpc64|sparc64|x86_64|mips64) | 
						|
			cat > $root/etc/ld.so.conf <<-EOT | 
						|
			/lib64 | 
						|
			/lib | 
						|
			/usr/lib64 | 
						|
			/usr/lib | 
						|
			/usr/lib64/*/ | 
						|
			/usr/lib/*/ | 
						|
			/usr/*/lib64 | 
						|
			/usr/*/lib | 
						|
			/opt/*/lib64 | 
						|
			/opt/*/lib | 
						|
			/usr/local/lib64 | 
						|
			/usr/local/lib | 
						|
EOT | 
						|
			if [ "$SDECFG_MULTILIB" == 1 ] ; then | 
						|
				cat >> $root/etc/ld.so.conf <<-EOT | 
						|
				/lib32 | 
						|
				/usr/lib32 | 
						|
				/usr/lib32/*/ | 
						|
				/usr/*/lib32 | 
						|
				/opt/*/lib32 | 
						|
				/usr/local/lib32 | 
						|
EOT | 
						|
			fi | 
						|
			;; | 
						|
		*)	cat > $root/etc/ld.so.conf <<-EOT | 
						|
			/lib | 
						|
			/usr/lib | 
						|
			/usr/lib/*/ | 
						|
			/usr/*/lib | 
						|
			/opt/*/lib | 
						|
			/usr/local/lib | 
						|
EOT | 
						|
		;; | 
						|
	esac | 
						|
 | 
						|
	# Move 'ldconfig' and 'sln' binaries | 
						|
	# | 
						|
	if [ -f "$root/usr/sbin/ldconfig" ] ; then | 
						|
		mv -v $root/usr/sbin/ldconfig $root/sbin/ldconfig | 
						|
	fi | 
						|
	if [ -f "$root/usr/sbin/sln" ] ; then | 
						|
		mv -v $root/usr/sbin/sln $root/sbin/sln | 
						|
	fi | 
						|
 | 
						|
	# Create /lib/ld-lsb.so.1 symlink | 
						|
	# | 
						|
	if [ -f $root/$slibdir/ld-linux-$arch_machine.so.2 ] ; then | 
						|
		ln -vfs ld-linux-$arch_machine.so.2 $root/$slibdir/ld-lsb.so.1 | 
						|
	elif [ -f $root/$slibdir/ld-linux.so.2 ] ; then | 
						|
		ln -vfs ld-linux.so.2 $root/$slibdir/ld-lsb.so.1 | 
						|
	fi | 
						|
} | 
						|
 | 
						|
# in stage 0 we only extract the headers and all is a bit easier ... | 
						|
if atstage toolchain; then | 
						|
	makeopt= | 
						|
	makeinstopt="-k cross-compiling=yes install-headers" | 
						|
fi | 
						|
 | 
						|
[[ $libdir = *lib64 ]] && slibdir=lib64 || slibdir=lib | 
						|
 | 
						|
#if atstage cross; then | 
						|
#	var_append patchfiles " " $confdir/no_path_in_glibcso.diff | 
						|
#fi | 
						|
 | 
						|
hook_add prepatch 3 "glibc_prepatch" | 
						|
hook_add postmake 5 "glibc_postmake" | 
						|
 | 
						|
 |