gcc/gcc.spec

Sun, 03 Apr 2011 13:34:55 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sun, 03 Apr 2011 13:34:55 +0200
changeset 337
f71e028eb3e2
parent 335
6eb79a12ee37
child 338
1153ac6bac7e
permissions
-rw-r--r--

Correct and improve several packaging aspects including...
Correct datadir path for python modules, correct jar(1) path for
building libgcj classes, strip libexecdir path of version numbers,
improve name of oblbld build path, clean whitespace from as(1) and
ld(1) GNU detection, remove seemingly discarded '--with-local-prefix'
configure argument, and correct hardcoded lto plugin libtool archive
dependency information.

Most importantly, correct IA32 architecture detection logic in
config.gcc to correctly emit SSE2 instructions conditionally, leading
to the removal of all '-march' bootstrap options and replacement with
unconditional (for IA32/AMD64) '-mtune=native' options. Comments and
buildtime warnings are corrected appropriately. In theory these changes
cause a more portable, orthoganal, and optimal bootstrap to be built.

michael@320 1 ##
michael@320 2 ## gcc.spec -- OpenPKG RPM Package Specification
michael@320 3 ## Copyright (c) 2000-2010 OpenPKG Foundation e.V. <http://openpkg.net/>
michael@320 4 ##
michael@320 5 ## Permission to use, copy, modify, and distribute this software for
michael@320 6 ## any purpose with or without fee is hereby granted, provided that
michael@320 7 ## the above copyright notice and this permission notice appear in all
michael@320 8 ## copies.
michael@320 9 ##
michael@320 10 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
michael@320 11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@320 12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@320 13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@320 14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@320 15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@320 16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@320 17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@320 18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@320 19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@320 20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@320 21 ## SUCH DAMAGE.
michael@320 22 ##
michael@320 23
michael@320 24 # package version
michael@332 25 %define V_full 4.6.0
michael@320 26 %define V_comp %nil
michael@320 27
michael@320 28 # package information
michael@320 29 Name: gcc
michael@320 30 Summary: GNU Compiler Collection
michael@320 31 URL: http://gcc.gnu.org/
michael@320 32 Vendor: Free Software Foundation
michael@320 33 Packager: OpenPKG Foundation e.V.
michael@320 34 Distribution: OpenPKG Community
michael@320 35 Class: CORE
michael@320 36 Group: Compiler
michael@320 37 License: GPL
michael@320 38 Version: %{V_full}
michael@337 39 Release: 20110331
michael@320 40
michael@320 41 # package options
michael@320 42 %option with_binutils yes
michael@320 43 %option with_cxx yes
michael@320 44 %option with_objc no
michael@320 45 %option with_java no
michael@320 46 %option with_fortran no
michael@320 47 %option with_optimize yes
michael@320 48 %option with_profile no
michael@320 49 %option with_threads yes
michael@320 50 %option with_multilib no
michael@320 51
michael@335 52 # fix intermodule dependencies implicitly
michael@335 53 %if "%{with_java}" == "yes"
michael@335 54 %define with_cxx yes
michael@335 55 %define with_threads yes
michael@335 56 %endif
michael@335 57
michael@320 58 # list of sources
michael@320 59 Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-core-%{V_full}.tar.bz2
michael@320 60 Source1: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-g++-%{V_full}.tar.bz2
michael@320 61 Source2: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-objc-%{V_full}.tar.bz2
michael@320 62 Source3: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-java-%{V_full}.tar.bz2
michael@320 63 Source4: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-fortran-%{V_full}.tar.bz2
michael@320 64 Patch0: gcc.patch
michael@320 65
michael@320 66 # build information
michael@321 67 Prefix: %{l_prefix}
michael@321 68 BuildRoot: %{l_buildroot}
michael@332 69 BuildPreReq: OpenPKG, openpkg >= 20060823, make
michael@322 70 PreReq: OpenPKG, openpkg >= 20060823
michael@332 71 BuildPreReq: mpc, mpfr, gmp
michael@332 72 PreReq: mpc, mpfr, gmp
michael@320 73 %if "%{with_binutils}" == "yes"
michael@320 74 BuildPreReq: binutils >= 2.14
michael@320 75 PreReq: binutils >= 2.14
michael@320 76 %endif
michael@320 77 %if "%{with_cxx}" == "yes"
michael@320 78 BuildPreReq: libiconv
michael@320 79 PreReq: libiconv
michael@320 80 %endif
michael@320 81 %if "%{with_java}" == "yes"
michael@335 82 BuildPreReq: zlib, infozip
michael@320 83 PreReq: zlib
michael@320 84 %endif
michael@321 85 AutoReq: no
michael@321 86 AutoReqProv: no
michael@320 87
michael@320 88 %description
michael@320 89 The GNU Compiler Collection (GCC) provides standard conforming and
michael@320 90 highly portable compilers for the ISO C, ISO C++, Objective-C,
michael@320 91 Fortran and Java languages.
michael@320 92
michael@320 93 %track
michael@320 94 prog gcc = {
michael@320 95 version = %{V_full}
michael@320 96 url = ftp://gcc.gnu.org/pub/gcc/releases/
michael@320 97 regex = gcc-(4\.\d+\.\d+)
michael@320 98 url = ftp://gcc.gnu.org/pub/gcc/releases/gcc-__NEWVER__/
michael@320 99 regex = gcc-core-(\d+\.\d+\.\d+)\.tar\.bz2
michael@320 100 }
michael@320 101
michael@320 102 %prep
michael@320 103 %setup -q
michael@320 104 %if "%{with_cxx}" == "yes"
michael@320 105 %setup -q -T -D -b 1
michael@320 106 %endif
michael@320 107 %if "%{with_objc}" == "yes"
michael@320 108 %setup -q -T -D -b 2
michael@320 109 %endif
michael@320 110 %if "%{with_java}" == "yes"
michael@320 111 %setup -q -T -D -b 3
michael@320 112 %endif
michael@320 113 %if "%{with_fortran}" == "yes"
michael@320 114 %setup -q -T -D -b 4
michael@320 115 %endif
michael@320 116 %patch -p0
michael@332 117 %{l_shtool} subst \
michael@332 118 -e 's;\(instname="\$dir/\$name"\)i;\1;' \
michael@332 119 ltmain.sh
michael@320 120 %{l_shtool} subst -v -s \
michael@328 121 -e 's;\(gmplibs="-lmpc\) \(-lmpfr -lgmp\);\1 -lm \2;' \
michael@328 122 configure
michael@328 123 %{l_shtool} subst -v -s \
michael@335 124 -e 's;\(LDEXP_LIB=\)"$LIBS";\1"$LDFLAGS";' \
michael@320 125 -e 's;PREFIX_INCLUDE_DIR;PREFIX_INCLUDE_DIR_DISABLED;g' \
michael@320 126 gcc/configure
michael@332 127 %{l_shtool} subst \
michael@332 128 -e 's;[ \t]*-W[a-zA-Z0-9_\-][a-zA-Z0-9_\-]*,*;;g' \
michael@332 129 lto-plugin/Makefile.in
michael@332 130 %{l_shtool} subst \
michael@332 131 -e 's;-rpath *[^ \t][^ \t]*;;g' \
michael@332 132 -e 's;--tag=disable-static;--tag=disable-shared;g' \
michael@332 133 -e 's;\.\./libiberty/libiberty\.a;-L../libiberty -liberty;g' \
michael@332 134 -e 's;\.\./libiberty/pic/libiberty\.a;-L../libiberty/pic -liberty;g' \
michael@332 135 lto-plugin/Makefile.in
michael@337 136 %if "%{with_cxx}" == "yes"
michael@337 137 %{l_shtool} subst \
michael@337 138 -e 's;\(pythondir *= *\$(datadir)\)/gcc-\$(gcc_version);\1/gcc;' \
michael@337 139 libstdc++-v3/python/Makefile.in
michael@337 140 %endif
michael@337 141 %if "%{with_java}" == "yes"
michael@337 142 %{l_shtool} subst \
michael@337 143 -e 's;\(default_python_dir\) *=.*;\1=/share/gcc/python/libjava;' \
michael@337 144 libjava/configure
michael@337 145 %{l_shtool} subst \
michael@337 146 -e 's;JAR *= *@JAR@;JAR = $(here)/scripts/jar;' \
michael@337 147 libjava/Makefile.in
michael@337 148 %endif
michael@320 149 if [ ".%{V_comp}" != . ]; then
michael@320 150 %{l_shtool} subst -v -s \
michael@320 151 -e 's;(libdir)/gcc/;(libdir)/gcc%{V_comp}/;' \
michael@337 152 -e 's;(libexecdir)/gcc/;(libexecdir)/gcc%{V_comp}/;' \
michael@320 153 `find . -name Makefile.in -type f -print`
michael@320 154 fi
michael@334 155 %{l_shtool} subst \
michael@334 156 -e 's;^\(do-compare\) *\(=.*\);#\1-shouldnt-be-defined-here \2;' \
michael@334 157 config/*.mk
michael@320 158 case "%{l_platform -t}" in
michael@334 159 amd64-linux* )
michael@320 160 %{l_shtool} subst \
michael@320 161 -e 's/GLIBCXX_IS_NATIVE=false/GLIBCXX_IS_NATIVE=true/g' \
michael@320 162 -e 's/test x.gcc_no_link = xyes/false/g' \
michael@320 163 libstdc++-v3/configure
michael@320 164 ;;
michael@320 165 esac
michael@320 166 %{l_shtool} subst \
michael@320 167 -e 's;<iconv\.h>;"%{l_prefix}/include/iconv.h";' \
michael@320 168 libstdc++-v3/include/ext/codecvt_specializations.h
michael@337 169 %{l_shtool} subst \
michael@337 170 -e 's;.*with_arch_32=\${with_arch_32:-pentium4}.*;;' \
michael@337 171 -e 's;with_arch_32=\${with_arch_32:-pentiumpro};arch_without_sse2=yes;' \
michael@337 172 gcc/config.gcc
michael@320 173
michael@320 174 %build
michael@334 175 # create build subdirectory
michael@337 176 %{l_shtool} mkdir -p objbld
michael@337 177 cd objbld
michael@320 178
michael@334 179 # locate ld(1) and as(1) accordingly
michael@328 180 %if "%{with_binutils}" == "yes"
michael@334 181 # allow OpenPKG binutils
michael@328 182 LD=%{l_tool_locate ld ld}
michael@328 183 AS=%{l_tool_locate as as}
michael@322 184 %else
michael@334 185 # ignore OpenPKG binutils
michael@334 186 LD=`PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin:/opt/bin:/opt/sbin:/usr/local/bin:/usr/local/sbin which ld`
michael@334 187 AS=`PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin:/opt/bin:/opt/sbin:/usr/local/bin:/usr/local/sbin which as`
michael@322 188 %endif
michael@320 189 l_with_gnu_ld_as=""
michael@322 190 echo $LD | grep '^/' >/dev/null && l_with_gnu_ld_as="--with-ld=$LD"
michael@320 191 echo $AS | grep '^/' >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-as=$AS"
michael@337 192 $LD --version </dev/null 2>/dev/null | grep "^GNU ld" >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-gnu-ld" || l_with_gnu_ld_as="${l_with_gnu_ld_as} --without-gnu-ld"
michael@337 193 $AS --version </dev/null 2>/dev/null | grep "^GNU assembler" >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-gnu-as" || l_with_gnu_ld_as="${l_with_gnu_ld_as} --without-gnu-as"
michael@320 194
michael@334 195 # determine threads use
michael@320 196 %if "%{with_threads}" == "yes"
michael@320 197 l_enable_threads="posix"
michael@320 198 %else
michael@320 199 l_enable_threads="single"
michael@320 200 %endif
michael@320 201
michael@334 202 # determine language use
michael@320 203 l_enable_languages="c"
michael@320 204 %if "%{with_cxx}" == "yes"
michael@320 205 l_enable_languages="${l_enable_languages},c++"
michael@320 206 %endif
michael@320 207 %if "%{with_objc}" == "yes"
michael@320 208 l_enable_languages="${l_enable_languages},objc"
michael@320 209 %endif
michael@320 210 %if "%{with_java}" == "yes"
michael@320 211 l_enable_languages="${l_enable_languages},java"
michael@320 212 %endif
michael@320 213 %if "%{with_fortran}" == "yes"
michael@320 214 l_enable_languages="${l_enable_languages},f95"
michael@320 215 %endif
michael@320 216
michael@334 217 # disable GNU iconv use
michael@320 218 ( echo "am_cv_func_iconv=no"
michael@320 219 echo "am_cv_lib_iconv=no"
michael@320 220 ) >config.cache
michael@334 221 # platforms failing 'compare' make target (see prep as well)
michael@332 222 case "%{l_platform -t}" in
michael@334 223 *i?86-sunos* ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
michael@334 224 *amd64-linux* ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
michael@332 225 esac
michael@332 226
michael@320 227 # configure the package
michael@322 228 LD="$LD" \
michael@322 229 AS="$AS" \
michael@320 230 CC="%{l_cc}" \
michael@320 231 CFLAGS="%{l_cflags}" \
michael@335 232 %if "%{with_cxx}" == "yes"
michael@320 233 CPPFLAGS="%{l_cppflags}" \
michael@320 234 LDFLAGS="%{l_ldflags}" \
michael@320 235 %endif
michael@320 236 CONFIG_SHELL="%{l_bash}" \
michael@332 237 GREP="%{l_bash}" \
michael@320 238 ../configure \
michael@320 239 --with-bugurl="http://openpkg.org/" \
michael@320 240 --with-pkgversion="%{l_openpkg_release -F "OpenPKG-%%t"}" \
michael@320 241 --cache-file=./config.cache \
michael@320 242 --srcdir=`pwd`/.. \
michael@320 243 --prefix=%{l_prefix} \
michael@320 244 --exec-prefix=%{l_prefix} \
michael@320 245 --mandir=%{l_prefix}/man \
michael@320 246 --infodir=%{l_prefix}/info \
michael@320 247 --includedir=%{l_prefix}/include/gcc%{V_comp} \
michael@320 248 --with-gxx-include-dir=%{l_prefix}/include/g++%{V_comp} \
michael@320 249 --enable-languages="${l_enable_languages}" \
michael@320 250 --enable-threads="${l_enable_threads}" \
michael@320 251 --disable-maintainer-mode \
michael@320 252 --disable-shared \
michael@320 253 --disable-nls \
michael@320 254 %if "%{with_java}" == "yes"
michael@320 255 --with-system-zlib \
michael@320 256 %endif
michael@320 257 %if "%{with_multilib}" == "yes"
michael@320 258 --enable-multilib \
michael@320 259 %else
michael@320 260 --disable-multilib \
michael@320 261 %endif
michael@320 262 %if "%{with_cxx}" == "yes"
michael@320 263 --with-libiconv-prefix=%{l_prefix} \
michael@320 264 %endif
michael@320 265 --with-gmp=%{l_prefix} \
michael@320 266 --with-mpfr=%{l_prefix} \
michael@320 267 --with-mpc=%{l_prefix} \
michael@320 268 ${l_with_gnu_ld_as}
michael@320 269
michael@320 270 # determine build flags
michael@320 271 l_ccisgcc=no
michael@320 272 if [ ".`(%{l_cc} -v; %{l_cc} --version) </dev/null 2>&1 | grep -i 'gcc'`" != . ]; then
michael@320 273 l_ccisgcc=yes
michael@320 274 fi
michael@320 275 l_cflags=""
michael@320 276 l_cxxflags=""
michael@320 277 l_boot_cflags=""
michael@320 278 l_libcflags="-g"
michael@320 279 l_libcxxflags="-g"
michael@320 280 # at least GNU as from GNU binutils supports -pipe always
michael@332 281 "$AS" --version </dev/null 2>/dev/null | grep "^GNU assembler" >/dev/null && {
michael@320 282 l_boot_cflags="$l_boot_cflags -pipe"
michael@320 283 l_libcxxflags="$l_libcxxflags -pipe"
michael@320 284 }
michael@320 285 %if "%{with_optimize}" == "yes"
michael@334 286 # GCC authors are not keeping up with optimized portability expectations
michael@334 287 ( echo "As GCC advances its optimization logic becomes increasingly complex (and"
michael@334 288 echo "buggy?) Since at least GCC 4.5, problems have been reported using arguments"
michael@334 289 echo "-O, -mtune, or -march implicitly or explicitly during different bootstrap"
michael@334 290 echo "stages as well as stage comparison and even the final installation."
michael@334 291 echo ""
michael@334 292 echo "Pay attention when building on one computer and installing on another as"
michael@334 293 echo "problems may be platform specific. If in doubt, disable optimization."
michael@334 294 ) | %{l_rpmtool} msg -b -t warn
michael@337 295 if [ ".$l_ccisgcc" != .yes ]; then
michael@334 296 # CPU native detection only works with GCC (see driver-i386.c)
michael@334 297 ( echo "Platform specific optimization is enabled, but detection of appropriate"
michael@334 298 echo "native architecture is only possible when bootstrapping GCC using a pre-"
michael@337 299 echo "installed GCC. The current build is using a different compiler, so such"
michael@337 300 echo "optimization is generically built while deferring native architecture"
michael@337 301 echo "detection to the final GCC binary."
michael@334 302 echo ""
michael@337 303 echo "To achieve native architecture detection while bootstrapping please"
michael@337 304 echo "install GCC first and then build GCC a second time."
michael@334 305 ) | %{l_rpmtool} msg -b -t notice
michael@332 306 fi
michael@337 307 # tuning without specifying '-march' is portable and in theory
michael@337 308 # allows the resulting GCC binaries to execute on other hosts!
michael@332 309 case "%{l_platform -t}" in
michael@337 310 *sun4[uv]-* ) l_boot_cflags="$l_boot_cflags -mtune=v9" ;;
michael@337 311 *sun*-* ) l_boot_cflags="$l_boot_cflags -mtune=v8" ;;
michael@337 312 *i?86-* | *amd64-* | *ia64-* ) l_boot_cflags="$l_boot_cflags -mtune=native" ;;
michael@337 313 * ) l_boot_cflags="$l_boot_cflags -mtune=generic" ;;
michael@332 314 esac
michael@332 315 l_cflags="$l_cflags -O"
michael@332 316 l_boot_cflags="$l_boot_cflags -O3 -fomit-frame-pointer"
michael@332 317 l_libcxxflags="$l_libcxxflags -O3 -fno-implicit-templates"
michael@332 318 %else
michael@334 319 # don't optimize at all to avoid problems
michael@320 320 l_boot_cflags="$l_boot_cflags -O0"
michael@320 321 l_libcxxflags="$l_libcxxflags -O0"
michael@320 322 %endif
michael@334 323 %if "%{with_profile}" == "yes"
michael@335 324 # generate profile feedback
michael@334 325 maketarget="profiledbootstrap"
michael@334 326 loc_makeflags="%{l_mflags}"
michael@335 327
michael@335 328 # warn about exceptional build duration for profile feedback
michael@335 329 ( echo "Building profile feedback on some hosts can take many days to complete!"
michael@335 330 echo "Now continuing to build a profiled bootstrap with parallel make logic"
michael@335 331 echo "disabled according to profiling requirements..."
michael@335 332 ) | %{l_rpmtool} msg -b -t warn
michael@335 333
michael@335 334 # warn about profiled bootstrap requirement of 64-bit arithmetic
michael@334 335 if [ ".$l_ccisgcc" != .yes ]; then
michael@335 336 ( echo "A preinstalled GCC was not detected although one is recommended for"
michael@335 337 echo "building a profiled bootstrap. Buildtime or runtime errors can occur if"
michael@335 338 echo "the compiler used to build profile feedback doesn't support 64-bit math."
michael@334 339 echo ""
michael@334 340 echo "If in doubt, stop now and start the build again with profiling disabled."
michael@334 341 ) | %{l_rpmtool} msg -b -t warn
michael@334 342 fi
michael@334 343 %else
michael@335 344 # build in three stages
michael@332 345 maketarget="bootstrap"
michael@334 346 loc_makeflags="%{l_mflags -O}"
michael@320 347 %endif
michael@320 348 case "%{l_platform -t}" in
michael@332 349 *64-* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;;
michael@320 350 esac
michael@335 351 %if "%{with_cxx}" == "yes"
michael@320 352 l_cflags="$l_cflags %{l_cppflags}"
michael@320 353 l_cxxflags="$l_cxxflags %{l_cppflags}"
michael@320 354 l_libcflags="$l_libcflags %{l_cppflags}"
michael@320 355 l_libcxxflags="$l_libcxxflags %{l_cppflags}"
michael@320 356 %endif
michael@320 357
michael@320 358 # build the package
michael@334 359 MAKE="%{l_make} ${loc_makeflags}" \
michael@334 360 %{l_make} ${loc_makeflags} \
michael@332 361 GREP="grep" \
michael@334 362 MAKE="%{l_make} ${loc_makeflags}" \
michael@320 363 BOOT_CFLAGS="${l_boot_cflags}" \
michael@320 364 CFLAGS="${l_cflags}" \
michael@320 365 CXXFLAGS="${l_cxxflags}" \
michael@335 366 %if "%{with_cxx}" == "yes"
michael@335 367 CPPFLAGS="%{l_cppflags}" \
michael@335 368 LDFLAGS="%{l_ldflags}" \
michael@335 369 BOOT_LDFLAGS="%{l_ldflags}" \
michael@335 370 %endif
michael@320 371 LIBCFLAGS="${l_libcflags}" \
michael@320 372 LIBCXXFLAGS="${l_libcxxflags}" \
michael@320 373 $maketarget
michael@320 374
michael@320 375 %install
michael@321 376 rm -rf $RPM_BUILD_ROOT
michael@320 377
michael@320 378 # fetch GNU platform triple
michael@320 379 triple=`./config.guess`
michael@320 380
michael@337 381 # perform standard installation procedure
michael@337 382 ( cd objbld
michael@320 383 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
michael@320 384 ) || exit $?
michael@320 385
michael@320 386 # cleanup installation tree
michael@320 387 mv $RPM_BUILD_ROOT%{l_prefix}/lib/{lib*.a,*.spec} \
michael@320 388 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
michael@320 389 >/dev/null 2>&1 || true
michael@320 390 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/{lib*.a,*.spec} \
michael@320 391 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
michael@320 392 >/dev/null 2>&1 || true
michael@320 393 dirs=""
michael@320 394 for multilib in `$RPM_BUILD_ROOT%{l_prefix}/bin/gcc --print-multi-lib`; do
michael@320 395 subdir=`echo "$multilib" | sed -e 's/;.*$//'`
michael@320 396 [ ".$subdir" = .. ] && continue
michael@320 397 mv $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir/lib*.a \
michael@320 398 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
michael@320 399 >/dev/null 2>&1 || true
michael@320 400 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/$subdir/lib*.a \
michael@320 401 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
michael@320 402 >/dev/null 2>&1 || true
michael@320 403 dirs="$dirs $subdir"
michael@320 404 done
michael@320 405 for subdir in $dirs; do
michael@320 406 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir >/dev/null 2>&1 || true
michael@320 407 done
michael@320 408 mv $RPM_BUILD_ROOT%{l_prefix}/${triple}/include/* \
michael@320 409 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/include/ \
michael@320 410 >/dev/null 2>&1 || true
michael@320 411
michael@332 412 # correct hardcoded paths
michael@332 413 %{l_shtool} subst \
michael@337 414 -e "s;\(dependency_libs\) *=.*;\1='-L%{l_prefix}/lib\ -L%{l_prefix}/lib/gcc%{V_comp}/${triple}/%{V_full}\ -liberty';" \
michael@337 415 $RPM_BUILD_ROOT%{l_prefix}/libexec/gcc%{V_comp}/${triple}/[0-9]*/liblto_plugin.la
michael@332 416
michael@320 417 # strip installation tree
michael@320 418 rm -rf $RPM_BUILD_ROOT%{l_prefix}/${triple}
michael@320 419 rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
michael@320 420 rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man7 >/dev/null 2>&1 || true
michael@320 421 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la >/dev/null 2>&1 || true
michael@320 422 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib64 >/dev/null 2>&1 || true
michael@320 423 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc* >/dev/null 2>&1 || true
michael@320 424 %if "%{with_cxx}" == "yes"
michael@320 425 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-c++ >/dev/null 2>&1 || true
michael@320 426 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-g++ >/dev/null 2>&1 || true
michael@320 427 %endif
michael@320 428 strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
michael@320 429 for prog in cc1 cc1plus collect2 cpp; do
michael@320 430 strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/${prog} \
michael@320 431 >/dev/null 2>&1 || true
michael@320 432 done
michael@320 433
michael@320 434 # bump up installation tree
michael@320 435 ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc \
michael@320 436 $RPM_BUILD_ROOT%{l_prefix}/bin/cc
michael@320 437 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 \
michael@320 438 $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1
michael@320 439 %if "%{with_cxx}" == "yes"
michael@320 440 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/g++.1 \
michael@320 441 $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1
michael@320 442 %endif
michael@320 443
michael@320 444 # determine installation file list
michael@320 445 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
michael@320 446
michael@320 447 %files -f files
michael@320 448
michael@320 449 %clean
michael@321 450 rm -rf $RPM_BUILD_ROOT
michael@320 451

mercurial