gcc/gcc.spec

Tue, 29 Mar 2011 20:04:34 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 29 Mar 2011 20:04:34 +0200
changeset 334
4a34d7a82eab
parent 332
2289d64c2123
child 335
6eb79a12ee37
permissions
-rw-r--r--

Rework package yet again, correcting and introducing new buildconf logic:
Conditionally disable bootstrap stage comparison correctly, correct
english grammar, better find system as(1) and ld(1), indotruce detailed
optimization option messages, more completely guess cpu types, allow
profiled bootstrapping without a preinstalled GCC because many other
compilers have long since implemented 64-bit arithmetic, instruct make
to build sequentially (not in sparallel) when building a profiled
bootstrap as GCC online documents recommend, and generally improve
comment blocks.

The single most important correction in this changeset relates to the
GCC changed optimization policy since at least GCC 4.5, in which -march
is always passed and not always correctly guessed. In the case of this
package, allowing GCC to guess the architecture leads to wild build
errors at various subcomponents (zlib, libgcc, libiberty...) and
bootstrap stages. It seems quite platform specific, and the safest
approach to correcting this seems to be explicitly always specifying the
-march argument when bootstrapping GCC. Because the best choice 'native'
is not available when bootstrapping using a foreign (non GCC) compiler,
a guess is made according to rpmmacros l_platform in that case.

It is questionable as to whether these recent optimization changes
on the part of GCC or this package are compatible with each other,
or if either are complete or correct at all. At least applying these
corrections allows this package to build again in most cases test.

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@321 39 Release: 20110320
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@320 52 # list of sources
michael@320 53 Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-core-%{V_full}.tar.bz2
michael@320 54 Source1: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-g++-%{V_full}.tar.bz2
michael@320 55 Source2: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-objc-%{V_full}.tar.bz2
michael@320 56 Source3: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-java-%{V_full}.tar.bz2
michael@320 57 Source4: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-fortran-%{V_full}.tar.bz2
michael@320 58 Patch0: gcc.patch
michael@320 59
michael@320 60 # build information
michael@321 61 Prefix: %{l_prefix}
michael@321 62 BuildRoot: %{l_buildroot}
michael@332 63 BuildPreReq: OpenPKG, openpkg >= 20060823, make
michael@322 64 PreReq: OpenPKG, openpkg >= 20060823
michael@332 65 BuildPreReq: mpc, mpfr, gmp
michael@332 66 PreReq: mpc, mpfr, gmp
michael@320 67 %if "%{with_binutils}" == "yes"
michael@320 68 BuildPreReq: binutils >= 2.14
michael@320 69 PreReq: binutils >= 2.14
michael@320 70 %endif
michael@320 71 %if "%{with_cxx}" == "yes"
michael@320 72 BuildPreReq: libiconv
michael@320 73 PreReq: libiconv
michael@320 74 %endif
michael@320 75 %if "%{with_java}" == "yes"
michael@320 76 BuildPreReq: zlib
michael@320 77 PreReq: zlib
michael@320 78 %endif
michael@321 79 AutoReq: no
michael@321 80 AutoReqProv: no
michael@320 81
michael@320 82 %description
michael@320 83 The GNU Compiler Collection (GCC) provides standard conforming and
michael@320 84 highly portable compilers for the ISO C, ISO C++, Objective-C,
michael@320 85 Fortran and Java languages.
michael@320 86
michael@320 87 %track
michael@320 88 prog gcc = {
michael@320 89 version = %{V_full}
michael@320 90 url = ftp://gcc.gnu.org/pub/gcc/releases/
michael@320 91 regex = gcc-(4\.\d+\.\d+)
michael@320 92 url = ftp://gcc.gnu.org/pub/gcc/releases/gcc-__NEWVER__/
michael@320 93 regex = gcc-core-(\d+\.\d+\.\d+)\.tar\.bz2
michael@320 94 }
michael@320 95
michael@320 96 %prep
michael@320 97 %setup -q
michael@320 98 %if "%{with_cxx}" == "yes"
michael@320 99 %setup -q -T -D -b 1
michael@320 100 %endif
michael@320 101 %if "%{with_objc}" == "yes"
michael@320 102 %setup -q -T -D -b 2
michael@320 103 %endif
michael@320 104 %if "%{with_java}" == "yes"
michael@320 105 %setup -q -T -D -b 3
michael@320 106 %endif
michael@320 107 %if "%{with_fortran}" == "yes"
michael@320 108 %setup -q -T -D -b 4
michael@320 109 %endif
michael@320 110 %patch -p0
michael@332 111 %{l_shtool} subst \
michael@332 112 -e 's;\(instname="\$dir/\$name"\)i;\1;' \
michael@332 113 ltmain.sh
michael@320 114 %{l_shtool} subst -v -s \
michael@328 115 -e 's;\(gmplibs="-lmpc\) \(-lmpfr -lgmp\);\1 -lm \2;' \
michael@328 116 configure
michael@328 117 %{l_shtool} subst -v -s \
michael@320 118 -e 's;PREFIX_INCLUDE_DIR;PREFIX_INCLUDE_DIR_DISABLED;g' \
michael@320 119 gcc/configure
michael@332 120 %{l_shtool} subst \
michael@332 121 -e 's;[ \t]*-W[a-zA-Z0-9_\-][a-zA-Z0-9_\-]*,*;;g' \
michael@332 122 lto-plugin/Makefile.in
michael@332 123 %{l_shtool} subst \
michael@332 124 -e 's;-rpath *[^ \t][^ \t]*;;g' \
michael@332 125 -e 's;--tag=disable-static;--tag=disable-shared;g' \
michael@332 126 -e 's;\.\./libiberty/libiberty\.a;-L../libiberty -liberty;g' \
michael@332 127 -e 's;\.\./libiberty/pic/libiberty\.a;-L../libiberty/pic -liberty;g' \
michael@332 128 lto-plugin/Makefile.in
michael@320 129 if [ ".%{V_comp}" != . ]; then
michael@320 130 %{l_shtool} subst -v -s \
michael@320 131 -e 's;(libdir)/gcc/;(libdir)/gcc%{V_comp}/;' \
michael@320 132 `find . -name Makefile.in -type f -print`
michael@320 133 fi
michael@334 134 %{l_shtool} subst \
michael@334 135 -e 's;^\(do-compare\) *\(=.*\);#\1-shouldnt-be-defined-here \2;' \
michael@334 136 config/*.mk
michael@320 137 case "%{l_platform -t}" in
michael@334 138 amd64-linux* )
michael@320 139 %{l_shtool} subst \
michael@320 140 -e 's/GLIBCXX_IS_NATIVE=false/GLIBCXX_IS_NATIVE=true/g' \
michael@320 141 -e 's/test x.gcc_no_link = xyes/false/g' \
michael@320 142 libstdc++-v3/configure
michael@320 143 ;;
michael@320 144 esac
michael@320 145 %{l_shtool} subst \
michael@320 146 -e 's;<iconv\.h>;"%{l_prefix}/include/iconv.h";' \
michael@320 147 libstdc++-v3/include/ext/codecvt_specializations.h
michael@320 148
michael@320 149 %build
michael@334 150 # create build subdirectory
michael@320 151 %{l_shtool} mkdir -p obj
michael@320 152 cd obj
michael@320 153
michael@334 154 # locate ld(1) and as(1) accordingly
michael@328 155 %if "%{with_binutils}" == "yes"
michael@334 156 # allow OpenPKG binutils
michael@328 157 LD=%{l_tool_locate ld ld}
michael@328 158 AS=%{l_tool_locate as as}
michael@322 159 %else
michael@334 160 # ignore OpenPKG binutils
michael@334 161 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 162 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 163 %endif
michael@320 164 l_with_gnu_ld_as=""
michael@322 165 echo $LD | grep '^/' >/dev/null && l_with_gnu_ld_as="--with-ld=$LD"
michael@320 166 echo $AS | grep '^/' >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-as=$AS"
michael@322 167 $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@322 168 $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 169
michael@334 170 # determine threads use
michael@320 171 %if "%{with_threads}" == "yes"
michael@320 172 l_enable_threads="posix"
michael@320 173 %else
michael@320 174 l_enable_threads="single"
michael@320 175 %endif
michael@320 176
michael@334 177 # determine language use
michael@320 178 l_enable_languages="c"
michael@320 179 %if "%{with_cxx}" == "yes"
michael@320 180 l_enable_languages="${l_enable_languages},c++"
michael@320 181 %endif
michael@320 182 %if "%{with_objc}" == "yes"
michael@320 183 l_enable_languages="${l_enable_languages},objc"
michael@320 184 %endif
michael@320 185 %if "%{with_java}" == "yes"
michael@320 186 l_enable_languages="${l_enable_languages},java"
michael@320 187 %endif
michael@320 188 %if "%{with_fortran}" == "yes"
michael@320 189 l_enable_languages="${l_enable_languages},f95"
michael@320 190 %endif
michael@320 191
michael@334 192 # disable GNU iconv use
michael@320 193 ( echo "am_cv_func_iconv=no"
michael@320 194 echo "am_cv_lib_iconv=no"
michael@320 195 ) >config.cache
michael@334 196 # platforms failing 'compare' make target (see prep as well)
michael@332 197 case "%{l_platform -t}" in
michael@334 198 *i?86-sunos* ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
michael@334 199 *amd64-linux* ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
michael@332 200 esac
michael@332 201
michael@320 202 # configure the package
michael@322 203 LD="$LD" \
michael@322 204 AS="$AS" \
michael@320 205 CC="%{l_cc}" \
michael@320 206 CFLAGS="%{l_cflags}" \
michael@320 207 %if "%{with_java}" == "yes" || "%{with_fortran}" == "yes" || "%{with_cxx}" == "yes"
michael@320 208 CPPFLAGS="%{l_cppflags}" \
michael@320 209 LDFLAGS="%{l_ldflags}" \
michael@320 210 %endif
michael@320 211 CONFIG_SHELL="%{l_bash}" \
michael@332 212 GREP="%{l_bash}" \
michael@320 213 ../configure \
michael@320 214 --with-bugurl="http://openpkg.org/" \
michael@320 215 --with-pkgversion="%{l_openpkg_release -F "OpenPKG-%%t"}" \
michael@320 216 --cache-file=./config.cache \
michael@320 217 --srcdir=`pwd`/.. \
michael@320 218 --prefix=%{l_prefix} \
michael@320 219 --exec-prefix=%{l_prefix} \
michael@320 220 --mandir=%{l_prefix}/man \
michael@320 221 --infodir=%{l_prefix}/info \
michael@320 222 --includedir=%{l_prefix}/include/gcc%{V_comp} \
michael@320 223 --libexecdir=%{l_prefix}/libexec/gcc%{V_comp} \
michael@320 224 --with-gxx-include-dir=%{l_prefix}/include/g++%{V_comp} \
michael@320 225 --with-local-prefix=%{l_prefix}/lib/gcc%{V_comp} \
michael@320 226 --enable-languages="${l_enable_languages}" \
michael@320 227 --enable-threads="${l_enable_threads}" \
michael@320 228 --disable-maintainer-mode \
michael@320 229 --disable-shared \
michael@320 230 --disable-nls \
michael@320 231 %if "%{with_java}" == "yes"
michael@320 232 --with-system-zlib \
michael@320 233 %endif
michael@320 234 %if "%{with_multilib}" == "yes"
michael@320 235 --enable-multilib \
michael@320 236 %else
michael@320 237 --disable-multilib \
michael@320 238 %endif
michael@320 239 %if "%{with_cxx}" == "yes"
michael@320 240 --with-libiconv-prefix=%{l_prefix} \
michael@320 241 %endif
michael@320 242 --with-gmp=%{l_prefix} \
michael@320 243 --with-mpfr=%{l_prefix} \
michael@320 244 --with-mpc=%{l_prefix} \
michael@320 245 ${l_with_gnu_ld_as}
michael@320 246
michael@320 247 # determine build flags
michael@320 248 l_ccisgcc=no
michael@320 249 if [ ".`(%{l_cc} -v; %{l_cc} --version) </dev/null 2>&1 | grep -i 'gcc'`" != . ]; then
michael@320 250 l_ccisgcc=yes
michael@320 251 fi
michael@320 252 l_cflags=""
michael@320 253 l_cxxflags=""
michael@320 254 l_boot_cflags=""
michael@320 255 l_libcflags="-g"
michael@320 256 l_libcxxflags="-g"
michael@320 257 # at least GNU as from GNU binutils supports -pipe always
michael@332 258 "$AS" --version </dev/null 2>/dev/null | grep "^GNU assembler" >/dev/null && {
michael@320 259 l_boot_cflags="$l_boot_cflags -pipe"
michael@320 260 l_libcxxflags="$l_libcxxflags -pipe"
michael@320 261 }
michael@320 262 %if "%{with_optimize}" == "yes"
michael@334 263 # GCC authors are not keeping up with optimized portability expectations
michael@334 264 ( echo "As GCC advances its optimization logic becomes increasingly complex (and"
michael@334 265 echo "buggy?) Since at least GCC 4.5, problems have been reported using arguments"
michael@334 266 echo "-O, -mtune, or -march implicitly or explicitly during different bootstrap"
michael@334 267 echo "stages as well as stage comparison and even the final installation."
michael@334 268 echo ""
michael@334 269 echo "Pay attention when building on one computer and installing on another as"
michael@334 270 echo "problems may be platform specific. If in doubt, disable optimization."
michael@334 271 ) | %{l_rpmtool} msg -b -t warn
michael@332 272 if [ ".$l_ccisgcc" = .yes ]; then
michael@334 273 l_archia32=native; l_archia64=native; l_archamd64=native
michael@332 274 else
michael@334 275 # CPU native detection only works with GCC (see driver-i386.c)
michael@334 276 ( echo "Platform specific optimization is enabled, but detection of appropriate"
michael@334 277 echo "native architecture is only possible when bootstrapping GCC using a pre-"
michael@334 278 echo "installed GCC. The current build is using a different compiler, so to"
michael@334 279 echo "provide any optimization at all a wild guess is made and a CPU type"
michael@334 280 echo "hardcoded instead of using accurate native detection."
michael@334 281 echo ""
michael@334 282 echo "To achieve accurate optimization of GCC please install GCC first. Then"
michael@334 283 echo "build this package a second time which will use GCC to bootstrap itself."
michael@334 284 ) | %{l_rpmtool} msg -b -t notice
michael@334 285
michael@334 286 # guess lowest common denominator CPU types
michael@334 287 # http://en.wikipedia.org/wiki/(X86|X64-64)
michael@334 288 # http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html
michael@334 289 l_archia32=pentium3; l_archia64=nocona; l_archamd64=k8
michael@332 290 fi
michael@334 291 # this optimization logic is unportable and could cause problems
michael@334 292 # if installing the resulting binary package on a different host!
michael@332 293 case "%{l_platform -t}" in
michael@332 294 *sun4[uv]-* ) l_boot_cflags="$l_boot_cflags -mtune=v9" ;;
michael@334 295 *sun-* ) l_boot_cflags="$l_boot_cflags -mtune=v8" ;;
michael@334 296 *i?86-* ) l_boot_cflags="$l_boot_cflags -march=$l_archia32" ;;
michael@334 297 *ia64-* ) l_boot_cflags="$l_boot_cflags -march=$l_archia64" ;;
michael@334 298 *amd64-* ) l_boot_cflags="$l_boot_cflags -march=$l_archamd64" ;;
michael@334 299 * ) l_boot_cflags="$l_boot_cflags -mtune=generic" ;;
michael@332 300 esac
michael@332 301 l_cflags="$l_cflags -O"
michael@332 302 l_boot_cflags="$l_boot_cflags -O3 -fomit-frame-pointer"
michael@332 303 l_libcxxflags="$l_libcxxflags -O3 -fno-implicit-templates"
michael@332 304 %else
michael@334 305 # don't optimize at all to avoid problems
michael@320 306 l_boot_cflags="$l_boot_cflags -O0"
michael@320 307 l_libcxxflags="$l_libcxxflags -O0"
michael@320 308 %endif
michael@334 309 %if "%{with_profile}" == "yes"
michael@334 310 maketarget="profiledbootstrap"
michael@334 311 loc_makeflags="%{l_mflags}"
michael@334 312 if [ ".$l_ccisgcc" != .yes ]; then
michael@334 313 ( echo "A preinstalled GCC is recommended when bootstrapping a profiled GCC. If the"
michael@334 314 echo "compiler used to bootstrap GCC doesn't support 64-bit arithmetic, then"
michael@334 315 echo "either runtime or buildtime errors could occur. Regardless of this,"
michael@334 316 echo "parallel make logic is disabled according to profiling requirements."
michael@334 317 echo ""
michael@334 318 echo "If in doubt, stop now and start the build again with profiling disabled."
michael@334 319 ) | %{l_rpmtool} msg -b -t warn
michael@334 320 fi
michael@334 321 %else
michael@332 322 maketarget="bootstrap"
michael@334 323 loc_makeflags="%{l_mflags -O}"
michael@320 324 %endif
michael@320 325 case "%{l_platform -t}" in
michael@332 326 *64-* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;;
michael@320 327 esac
michael@320 328 %if "%{with_java}" == "yes" || "%{with_fortran}" == "yes" || "%{with_cxx}" == "yes"
michael@320 329 l_cflags="$l_cflags %{l_cppflags}"
michael@320 330 l_cxxflags="$l_cxxflags %{l_cppflags}"
michael@320 331 l_libcflags="$l_libcflags %{l_cppflags}"
michael@320 332 l_libcxxflags="$l_libcxxflags %{l_cppflags}"
michael@320 333 %endif
michael@320 334
michael@320 335 # build the package
michael@334 336 MAKE="%{l_make} ${loc_makeflags}" \
michael@334 337 %{l_make} ${loc_makeflags} \
michael@332 338 GREP="grep" \
michael@334 339 MAKE="%{l_make} ${loc_makeflags}" \
michael@320 340 BOOT_CFLAGS="${l_boot_cflags}" \
michael@320 341 CFLAGS="${l_cflags}" \
michael@320 342 CXXFLAGS="${l_cxxflags}" \
michael@320 343 LIBCFLAGS="${l_libcflags}" \
michael@320 344 LIBCXXFLAGS="${l_libcxxflags}" \
michael@320 345 $maketarget
michael@320 346
michael@320 347 %install
michael@321 348 rm -rf $RPM_BUILD_ROOT
michael@320 349
michael@320 350 # fetch GNU platform triple
michael@320 351 triple=`./config.guess`
michael@320 352
michael@320 353 # perform the standard installation procedure
michael@320 354 ( cd obj
michael@320 355 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
michael@320 356 ) || exit $?
michael@320 357
michael@320 358 # cleanup installation tree
michael@320 359 mv $RPM_BUILD_ROOT%{l_prefix}/lib/{lib*.a,*.spec} \
michael@320 360 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
michael@320 361 >/dev/null 2>&1 || true
michael@320 362 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/{lib*.a,*.spec} \
michael@320 363 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
michael@320 364 >/dev/null 2>&1 || true
michael@320 365 dirs=""
michael@320 366 for multilib in `$RPM_BUILD_ROOT%{l_prefix}/bin/gcc --print-multi-lib`; do
michael@320 367 subdir=`echo "$multilib" | sed -e 's/;.*$//'`
michael@320 368 [ ".$subdir" = .. ] && continue
michael@320 369 mv $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir/lib*.a \
michael@320 370 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
michael@320 371 >/dev/null 2>&1 || true
michael@320 372 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/$subdir/lib*.a \
michael@320 373 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
michael@320 374 >/dev/null 2>&1 || true
michael@320 375 dirs="$dirs $subdir"
michael@320 376 done
michael@320 377 for subdir in $dirs; do
michael@320 378 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir >/dev/null 2>&1 || true
michael@320 379 done
michael@320 380 mv $RPM_BUILD_ROOT%{l_prefix}/${triple}/include/* \
michael@320 381 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/include/ \
michael@320 382 >/dev/null 2>&1 || true
michael@320 383
michael@332 384 # correct hardcoded paths
michael@332 385 %{l_shtool} subst \
michael@332 386 -e "s;\(dependency_libs='[ \t]*-L\).*;\1%{l_prefix}/lib -L%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]* -liberty';" \
michael@332 387 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/liblto_plugin.la
michael@332 388
michael@320 389 # strip installation tree
michael@320 390 rm -rf $RPM_BUILD_ROOT%{l_prefix}/${triple}
michael@320 391 rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
michael@320 392 rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man7 >/dev/null 2>&1 || true
michael@320 393 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la >/dev/null 2>&1 || true
michael@320 394 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib64 >/dev/null 2>&1 || true
michael@320 395 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc* >/dev/null 2>&1 || true
michael@320 396 %if "%{with_cxx}" == "yes"
michael@320 397 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-c++ >/dev/null 2>&1 || true
michael@320 398 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-g++ >/dev/null 2>&1 || true
michael@320 399 %endif
michael@320 400 strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
michael@320 401 for prog in cc1 cc1plus collect2 cpp; do
michael@320 402 strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/${prog} \
michael@320 403 >/dev/null 2>&1 || true
michael@320 404 done
michael@320 405
michael@320 406 # bump up installation tree
michael@320 407 ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc \
michael@320 408 $RPM_BUILD_ROOT%{l_prefix}/bin/cc
michael@320 409 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 \
michael@320 410 $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1
michael@320 411 %if "%{with_cxx}" == "yes"
michael@320 412 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/g++.1 \
michael@320 413 $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1
michael@320 414 %endif
michael@320 415
michael@320 416 # determine installation file list
michael@320 417 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
michael@320 418
michael@320 419 %files -f files
michael@320 420
michael@320 421 %clean
michael@321 422 rm -rf $RPM_BUILD_ROOT
michael@320 423

mercurial