gcc/gcc.spec

Sun, 29 May 2011 16:29:06 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sun, 29 May 2011 16:29:06 +0200
changeset 344
e33c1efbd60f
parent 338
1153ac6bac7e
child 406
cd6aad0e0d4e
permissions
-rw-r--r--

Update, correct, improve build configuration and packaging logic.
Update to new version of vendor software, bump copyright date, remove implicit
gcc dependency, add comments for Trolltech bug tracking, correct enforced
dynamic library linkage, and install mysterious process stub binary.

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@339 39 Release: 20110400
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@338 147 -e 's;\(jardir *= *\$(datadir)\)/java;\1/gcc/java;' \
michael@337 148 libjava/Makefile.in
michael@337 149 %endif
michael@320 150 if [ ".%{V_comp}" != . ]; then
michael@320 151 %{l_shtool} subst -v -s \
michael@320 152 -e 's;(libdir)/gcc/;(libdir)/gcc%{V_comp}/;' \
michael@337 153 -e 's;(libexecdir)/gcc/;(libexecdir)/gcc%{V_comp}/;' \
michael@320 154 `find . -name Makefile.in -type f -print`
michael@320 155 fi
michael@334 156 %{l_shtool} subst \
michael@334 157 -e 's;^\(do-compare\) *\(=.*\);#\1-shouldnt-be-defined-here \2;' \
michael@334 158 config/*.mk
michael@320 159 case "%{l_platform -t}" in
michael@334 160 amd64-linux* )
michael@320 161 %{l_shtool} subst \
michael@320 162 -e 's/GLIBCXX_IS_NATIVE=false/GLIBCXX_IS_NATIVE=true/g' \
michael@320 163 -e 's/test x.gcc_no_link = xyes/false/g' \
michael@320 164 libstdc++-v3/configure
michael@320 165 ;;
michael@320 166 esac
michael@320 167 %{l_shtool} subst \
michael@320 168 -e 's;<iconv\.h>;"%{l_prefix}/include/iconv.h";' \
michael@320 169 libstdc++-v3/include/ext/codecvt_specializations.h
michael@337 170 %{l_shtool} subst \
michael@337 171 -e 's;.*with_arch_32=\${with_arch_32:-pentium4}.*;;' \
michael@337 172 -e 's;with_arch_32=\${with_arch_32:-pentiumpro};arch_without_sse2=yes;' \
michael@337 173 gcc/config.gcc
michael@320 174
michael@320 175 %build
michael@334 176 # create build subdirectory
michael@337 177 %{l_shtool} mkdir -p objbld
michael@337 178 cd objbld
michael@320 179
michael@334 180 # locate ld(1) and as(1) accordingly
michael@328 181 %if "%{with_binutils}" == "yes"
michael@334 182 # allow OpenPKG binutils
michael@328 183 LD=%{l_tool_locate ld ld}
michael@328 184 AS=%{l_tool_locate as as}
michael@322 185 %else
michael@334 186 # ignore OpenPKG binutils
michael@334 187 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 188 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 189 %endif
michael@320 190 l_with_gnu_ld_as=""
michael@322 191 echo $LD | grep '^/' >/dev/null && l_with_gnu_ld_as="--with-ld=$LD"
michael@320 192 echo $AS | grep '^/' >/dev/null && l_with_gnu_ld_as="${l_with_gnu_ld_as} --with-as=$AS"
michael@337 193 $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 194 $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 195
michael@334 196 # determine threads use
michael@320 197 %if "%{with_threads}" == "yes"
michael@320 198 l_enable_threads="posix"
michael@320 199 %else
michael@320 200 l_enable_threads="single"
michael@320 201 %endif
michael@320 202
michael@334 203 # determine language use
michael@320 204 l_enable_languages="c"
michael@320 205 %if "%{with_cxx}" == "yes"
michael@320 206 l_enable_languages="${l_enable_languages},c++"
michael@320 207 %endif
michael@320 208 %if "%{with_objc}" == "yes"
michael@320 209 l_enable_languages="${l_enable_languages},objc"
michael@320 210 %endif
michael@320 211 %if "%{with_java}" == "yes"
michael@320 212 l_enable_languages="${l_enable_languages},java"
michael@320 213 %endif
michael@320 214 %if "%{with_fortran}" == "yes"
michael@320 215 l_enable_languages="${l_enable_languages},f95"
michael@320 216 %endif
michael@320 217
michael@334 218 # disable GNU iconv use
michael@320 219 ( echo "am_cv_func_iconv=no"
michael@320 220 echo "am_cv_lib_iconv=no"
michael@320 221 ) >config.cache
michael@334 222 # platforms failing 'compare' make target (see prep as well)
michael@332 223 case "%{l_platform -t}" in
michael@334 224 *i?86-sunos* ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
michael@334 225 *amd64-linux* ) echo "gcc_cv_prog_cmp_skip=true" >>config.cache ;;
michael@332 226 esac
michael@332 227
michael@320 228 # configure the package
michael@322 229 LD="$LD" \
michael@322 230 AS="$AS" \
michael@320 231 CC="%{l_cc}" \
michael@320 232 CFLAGS="%{l_cflags}" \
michael@335 233 %if "%{with_cxx}" == "yes"
michael@320 234 CPPFLAGS="%{l_cppflags}" \
michael@320 235 LDFLAGS="%{l_ldflags}" \
michael@320 236 %endif
michael@320 237 CONFIG_SHELL="%{l_bash}" \
michael@332 238 GREP="%{l_bash}" \
michael@320 239 ../configure \
michael@320 240 --with-bugurl="http://openpkg.org/" \
michael@320 241 --with-pkgversion="%{l_openpkg_release -F "OpenPKG-%%t"}" \
michael@320 242 --cache-file=./config.cache \
michael@320 243 --srcdir=`pwd`/.. \
michael@320 244 --prefix=%{l_prefix} \
michael@320 245 --exec-prefix=%{l_prefix} \
michael@320 246 --mandir=%{l_prefix}/man \
michael@320 247 --infodir=%{l_prefix}/info \
michael@320 248 --includedir=%{l_prefix}/include/gcc%{V_comp} \
michael@320 249 --with-gxx-include-dir=%{l_prefix}/include/g++%{V_comp} \
michael@320 250 --enable-languages="${l_enable_languages}" \
michael@320 251 --enable-threads="${l_enable_threads}" \
michael@320 252 --disable-maintainer-mode \
michael@320 253 --disable-shared \
michael@320 254 --disable-nls \
michael@320 255 %if "%{with_java}" == "yes"
michael@320 256 --with-system-zlib \
michael@320 257 %endif
michael@320 258 %if "%{with_multilib}" == "yes"
michael@320 259 --enable-multilib \
michael@320 260 %else
michael@320 261 --disable-multilib \
michael@320 262 %endif
michael@320 263 %if "%{with_cxx}" == "yes"
michael@320 264 --with-libiconv-prefix=%{l_prefix} \
michael@320 265 %endif
michael@320 266 --with-gmp=%{l_prefix} \
michael@320 267 --with-mpfr=%{l_prefix} \
michael@320 268 --with-mpc=%{l_prefix} \
michael@320 269 ${l_with_gnu_ld_as}
michael@320 270
michael@320 271 # determine build flags
michael@320 272 l_ccisgcc=no
michael@320 273 if [ ".`(%{l_cc} -v; %{l_cc} --version) </dev/null 2>&1 | grep -i 'gcc'`" != . ]; then
michael@320 274 l_ccisgcc=yes
michael@320 275 fi
michael@320 276 l_cflags=""
michael@320 277 l_cxxflags=""
michael@320 278 l_boot_cflags=""
michael@320 279 l_libcflags="-g"
michael@320 280 l_libcxxflags="-g"
michael@320 281 # at least GNU as from GNU binutils supports -pipe always
michael@332 282 "$AS" --version </dev/null 2>/dev/null | grep "^GNU assembler" >/dev/null && {
michael@320 283 l_boot_cflags="$l_boot_cflags -pipe"
michael@320 284 l_libcxxflags="$l_libcxxflags -pipe"
michael@320 285 }
michael@320 286 %if "%{with_optimize}" == "yes"
michael@334 287 # GCC authors are not keeping up with optimized portability expectations
michael@334 288 ( echo "As GCC advances its optimization logic becomes increasingly complex (and"
michael@334 289 echo "buggy?) Since at least GCC 4.5, problems have been reported using arguments"
michael@334 290 echo "-O, -mtune, or -march implicitly or explicitly during different bootstrap"
michael@334 291 echo "stages as well as stage comparison and even the final installation."
michael@334 292 echo ""
michael@334 293 echo "Pay attention when building on one computer and installing on another as"
michael@334 294 echo "problems may be platform specific. If in doubt, disable optimization."
michael@334 295 ) | %{l_rpmtool} msg -b -t warn
michael@337 296 if [ ".$l_ccisgcc" != .yes ]; then
michael@334 297 # CPU native detection only works with GCC (see driver-i386.c)
michael@334 298 ( echo "Platform specific optimization is enabled, but detection of appropriate"
michael@334 299 echo "native architecture is only possible when bootstrapping GCC using a pre-"
michael@337 300 echo "installed GCC. The current build is using a different compiler, so such"
michael@337 301 echo "optimization is generically built while deferring native architecture"
michael@337 302 echo "detection to the final GCC binary."
michael@334 303 echo ""
michael@337 304 echo "To achieve native architecture detection while bootstrapping please"
michael@337 305 echo "install GCC first and then build GCC a second time."
michael@334 306 ) | %{l_rpmtool} msg -b -t notice
michael@332 307 fi
michael@337 308 # tuning without specifying '-march' is portable and in theory
michael@337 309 # allows the resulting GCC binaries to execute on other hosts!
michael@332 310 case "%{l_platform -t}" in
michael@337 311 *sun4[uv]-* ) l_boot_cflags="$l_boot_cflags -mtune=v9" ;;
michael@337 312 *sun*-* ) l_boot_cflags="$l_boot_cflags -mtune=v8" ;;
michael@337 313 *i?86-* | *amd64-* | *ia64-* ) l_boot_cflags="$l_boot_cflags -mtune=native" ;;
michael@337 314 * ) l_boot_cflags="$l_boot_cflags -mtune=generic" ;;
michael@332 315 esac
michael@332 316 l_cflags="$l_cflags -O"
michael@332 317 l_boot_cflags="$l_boot_cflags -O3 -fomit-frame-pointer"
michael@332 318 l_libcxxflags="$l_libcxxflags -O3 -fno-implicit-templates"
michael@332 319 %else
michael@334 320 # don't optimize at all to avoid problems
michael@320 321 l_boot_cflags="$l_boot_cflags -O0"
michael@320 322 l_libcxxflags="$l_libcxxflags -O0"
michael@320 323 %endif
michael@334 324 %if "%{with_profile}" == "yes"
michael@335 325 # generate profile feedback
michael@334 326 maketarget="profiledbootstrap"
michael@334 327 loc_makeflags="%{l_mflags}"
michael@335 328
michael@335 329 # warn about exceptional build duration for profile feedback
michael@335 330 ( echo "Building profile feedback on some hosts can take many days to complete!"
michael@335 331 echo "Now continuing to build a profiled bootstrap with parallel make logic"
michael@335 332 echo "disabled according to profiling requirements..."
michael@335 333 ) | %{l_rpmtool} msg -b -t warn
michael@335 334
michael@335 335 # warn about profiled bootstrap requirement of 64-bit arithmetic
michael@334 336 if [ ".$l_ccisgcc" != .yes ]; then
michael@335 337 ( echo "A preinstalled GCC was not detected although one is recommended for"
michael@335 338 echo "building a profiled bootstrap. Buildtime or runtime errors can occur if"
michael@335 339 echo "the compiler used to build profile feedback doesn't support 64-bit math."
michael@334 340 echo ""
michael@334 341 echo "If in doubt, stop now and start the build again with profiling disabled."
michael@334 342 ) | %{l_rpmtool} msg -b -t warn
michael@334 343 fi
michael@334 344 %else
michael@335 345 # build in three stages
michael@332 346 maketarget="bootstrap"
michael@334 347 loc_makeflags="%{l_mflags -O}"
michael@320 348 %endif
michael@320 349 case "%{l_platform -t}" in
michael@332 350 *64-* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;;
michael@320 351 esac
michael@335 352 %if "%{with_cxx}" == "yes"
michael@320 353 l_cflags="$l_cflags %{l_cppflags}"
michael@320 354 l_cxxflags="$l_cxxflags %{l_cppflags}"
michael@320 355 l_libcflags="$l_libcflags %{l_cppflags}"
michael@320 356 l_libcxxflags="$l_libcxxflags %{l_cppflags}"
michael@320 357 %endif
michael@320 358
michael@320 359 # build the package
michael@334 360 MAKE="%{l_make} ${loc_makeflags}" \
michael@334 361 %{l_make} ${loc_makeflags} \
michael@332 362 GREP="grep" \
michael@334 363 MAKE="%{l_make} ${loc_makeflags}" \
michael@320 364 BOOT_CFLAGS="${l_boot_cflags}" \
michael@320 365 CFLAGS="${l_cflags}" \
michael@320 366 CXXFLAGS="${l_cxxflags}" \
michael@335 367 %if "%{with_cxx}" == "yes"
michael@335 368 CPPFLAGS="%{l_cppflags}" \
michael@335 369 LDFLAGS="%{l_ldflags}" \
michael@335 370 BOOT_LDFLAGS="%{l_ldflags}" \
michael@335 371 %endif
michael@320 372 LIBCFLAGS="${l_libcflags}" \
michael@320 373 LIBCXXFLAGS="${l_libcxxflags}" \
michael@320 374 $maketarget
michael@320 375
michael@320 376 %install
michael@321 377 rm -rf $RPM_BUILD_ROOT
michael@320 378
michael@320 379 # fetch GNU platform triple
michael@320 380 triple=`./config.guess`
michael@320 381
michael@337 382 # perform standard installation procedure
michael@337 383 ( cd objbld
michael@320 384 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
michael@320 385 ) || exit $?
michael@320 386
michael@320 387 # cleanup installation tree
michael@320 388 mv $RPM_BUILD_ROOT%{l_prefix}/lib/{lib*.a,*.spec} \
michael@320 389 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
michael@320 390 >/dev/null 2>&1 || true
michael@320 391 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/{lib*.a,*.spec} \
michael@320 392 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
michael@320 393 >/dev/null 2>&1 || true
michael@320 394 dirs=""
michael@320 395 for multilib in `$RPM_BUILD_ROOT%{l_prefix}/bin/gcc --print-multi-lib`; do
michael@320 396 subdir=`echo "$multilib" | sed -e 's/;.*$//'`
michael@320 397 [ ".$subdir" = .. ] && continue
michael@320 398 mv $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir/lib*.a \
michael@320 399 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
michael@320 400 >/dev/null 2>&1 || true
michael@320 401 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/$subdir/lib*.a \
michael@320 402 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
michael@320 403 >/dev/null 2>&1 || true
michael@320 404 dirs="$dirs $subdir"
michael@320 405 done
michael@320 406 for subdir in $dirs; do
michael@320 407 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir >/dev/null 2>&1 || true
michael@320 408 done
michael@320 409 mv $RPM_BUILD_ROOT%{l_prefix}/${triple}/include/* \
michael@320 410 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/include/ \
michael@320 411 >/dev/null 2>&1 || true
michael@320 412
michael@332 413 # correct hardcoded paths
michael@332 414 %{l_shtool} subst \
michael@337 415 -e "s;\(dependency_libs\) *=.*;\1='-L%{l_prefix}/lib\ -L%{l_prefix}/lib/gcc%{V_comp}/${triple}/%{V_full}\ -liberty';" \
michael@337 416 $RPM_BUILD_ROOT%{l_prefix}/libexec/gcc%{V_comp}/${triple}/[0-9]*/liblto_plugin.la
michael@332 417
michael@320 418 # strip installation tree
michael@320 419 rm -rf $RPM_BUILD_ROOT%{l_prefix}/${triple}
michael@320 420 rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
michael@320 421 rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man7 >/dev/null 2>&1 || true
michael@320 422 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la >/dev/null 2>&1 || true
michael@320 423 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib64 >/dev/null 2>&1 || true
michael@320 424 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc* >/dev/null 2>&1 || true
michael@338 425 rmdir $RPM_BUILD_ROOT%{l_prefix}/include/gcc* >/dev/null 2>&1 || true
michael@320 426 %if "%{with_cxx}" == "yes"
michael@320 427 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-c++ >/dev/null 2>&1 || true
michael@320 428 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-g++ >/dev/null 2>&1 || true
michael@320 429 %endif
michael@338 430 %if "%{with_java}" == "yes"
michael@338 431 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcj >/dev/null 2>&1 || true
michael@338 432 %endif
michael@339 433 %if "%{with_fortran}" == "yes"
michael@339 434 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gfortran >/dev/null 2>&1 || true
michael@339 435 %endif
michael@320 436 strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
michael@320 437 for prog in cc1 cc1plus collect2 cpp; do
michael@320 438 strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/${prog} \
michael@320 439 >/dev/null 2>&1 || true
michael@320 440 done
michael@320 441
michael@320 442 # bump up installation tree
michael@320 443 ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc \
michael@320 444 $RPM_BUILD_ROOT%{l_prefix}/bin/cc
michael@320 445 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 \
michael@320 446 $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1
michael@320 447 %if "%{with_cxx}" == "yes"
michael@320 448 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/g++.1 \
michael@320 449 $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1
michael@320 450 %endif
michael@320 451
michael@320 452 # determine installation file list
michael@320 453 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
michael@320 454
michael@320 455 %files -f files
michael@320 456
michael@320 457 %clean
michael@321 458 rm -rf $RPM_BUILD_ROOT
michael@320 459

mercurial