gcc/gcc.spec

Mon, 17 Sep 2012 19:10:10 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 17 Sep 2012 19:10:10 +0200
changeset 689
9fe04d4d4e5a
parent 473
323623610492
child 717
8a706aa66ee9
permissions
-rw-r--r--

Update to new version of vendor software although Oracle fails to deliver.
More specifically, newer db(3) patch revisions exist but Oracle has
removed them from the canonical download server URI for Berkely DB.

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@473 25 %define V_full 4.7.1
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@473 39 Release: 20120800
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@473 59 Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{V_full}/gcc-%{V_full}.tar.bz2
michael@320 60 Patch0: gcc.patch
michael@320 61
michael@320 62 # build information
michael@473 63 BuildPreReq: OpenPKG, openpkg >= 20100101, make
michael@473 64 PreReq: OpenPKG, openpkg >= 20100101
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@335 76 BuildPreReq: zlib, infozip
michael@320 77 PreReq: zlib
michael@320 78 %endif
michael@320 79
michael@320 80 %description
michael@320 81 The GNU Compiler Collection (GCC) provides standard conforming and
michael@320 82 highly portable compilers for the ISO C, ISO C++, Objective-C,
michael@320 83 Fortran and Java languages.
michael@320 84
michael@320 85 %track
michael@320 86 prog gcc = {
michael@320 87 version = %{V_full}
michael@320 88 url = ftp://gcc.gnu.org/pub/gcc/releases/
michael@320 89 regex = gcc-(4\.\d+\.\d+)
michael@320 90 url = ftp://gcc.gnu.org/pub/gcc/releases/gcc-__NEWVER__/
michael@473 91 regex = gcc-(\d+\.\d+\.\d+)\.tar\.bz2
michael@320 92 }
michael@320 93
michael@320 94 %prep
michael@320 95 %setup -q
michael@320 96 %patch -p0
michael@332 97 %{l_shtool} subst \
michael@332 98 -e 's;\(instname="\$dir/\$name"\)i;\1;' \
michael@332 99 ltmain.sh
michael@320 100 %{l_shtool} subst -v -s \
michael@328 101 -e 's;\(gmplibs="-lmpc\) \(-lmpfr -lgmp\);\1 -lm \2;' \
michael@328 102 configure
michael@328 103 %{l_shtool} subst -v -s \
michael@335 104 -e 's;\(LDEXP_LIB=\)"$LIBS";\1"$LDFLAGS";' \
michael@320 105 -e 's;PREFIX_INCLUDE_DIR;PREFIX_INCLUDE_DIR_DISABLED;g' \
michael@320 106 gcc/configure
michael@332 107 %{l_shtool} subst \
michael@332 108 -e 's;[ \t]*-W[a-zA-Z0-9_\-][a-zA-Z0-9_\-]*,*;;g' \
michael@332 109 lto-plugin/Makefile.in
michael@332 110 %{l_shtool} subst \
michael@332 111 -e 's;-rpath *[^ \t][^ \t]*;;g' \
michael@332 112 -e 's;--tag=disable-static;--tag=disable-shared;g' \
michael@332 113 -e 's;\.\./libiberty/libiberty\.a;-L../libiberty -liberty;g' \
michael@332 114 -e 's;\.\./libiberty/pic/libiberty\.a;-L../libiberty/pic -liberty;g' \
michael@332 115 lto-plugin/Makefile.in
michael@337 116 %if "%{with_cxx}" == "yes"
michael@337 117 %{l_shtool} subst \
michael@337 118 -e 's;\(pythondir *= *\$(datadir)\)/gcc-\$(gcc_version);\1/gcc;' \
michael@337 119 libstdc++-v3/python/Makefile.in
michael@337 120 %endif
michael@337 121 %if "%{with_java}" == "yes"
michael@337 122 %{l_shtool} subst \
michael@337 123 -e 's;\(default_python_dir\) *=.*;\1=/share/gcc/python/libjava;' \
michael@337 124 libjava/configure
michael@337 125 %{l_shtool} subst \
michael@337 126 -e 's;JAR *= *@JAR@;JAR = $(here)/scripts/jar;' \
michael@337 127 libjava/Makefile.in
michael@337 128 %endif
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@337 132 -e 's;(libexecdir)/gcc/;(libexecdir)/gcc%{V_comp}/;' \
michael@320 133 `find . -name Makefile.in -type f -print`
michael@320 134 fi
michael@334 135 %{l_shtool} subst \
michael@334 136 -e 's;^\(do-compare\) *\(=.*\);#\1-shouldnt-be-defined-here \2;' \
michael@334 137 config/*.mk
michael@320 138 case "%{l_platform -t}" in
michael@334 139 amd64-linux* )
michael@320 140 %{l_shtool} subst \
michael@320 141 -e 's/GLIBCXX_IS_NATIVE=false/GLIBCXX_IS_NATIVE=true/g' \
michael@320 142 -e 's/test x.gcc_no_link = xyes/false/g' \
michael@320 143 libstdc++-v3/configure
michael@320 144 ;;
michael@320 145 esac
michael@320 146 %{l_shtool} subst \
michael@320 147 -e 's;<iconv\.h>;"%{l_prefix}/include/iconv.h";' \
michael@320 148 libstdc++-v3/include/ext/codecvt_specializations.h
michael@337 149 %{l_shtool} subst \
michael@337 150 -e 's;.*with_arch_32=\${with_arch_32:-pentium4}.*;;' \
michael@337 151 -e 's;with_arch_32=\${with_arch_32:-pentiumpro};arch_without_sse2=yes;' \
michael@337 152 gcc/config.gcc
michael@406 153 #-e 's;\(with_arch_32=\${with_arch_32:-\)pentium4};\1pentium3};' \
michael@406 154
michael@406 155 %if "%{with_cxx}" == "yes"
michael@406 156 # sad hack to correct split gettext in libc and libintl each
michael@406 157 # providing locale-intl.cc disparate libintl.h with externs,
michael@406 158 # see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11074
michael@406 159 [ -f %{l_prefix}/include/libintl.h -a -f /usr/include/libintl.h ] && \
michael@406 160 cp /usr/include/libintl.h libstdc++-v3/libsupc++/ || \
michael@406 161 [ -f /usr/include/libintl.h ] || \
michael@406 162 ( echo "A system native gettext installation is not detected. Because GCC"
michael@406 163 echo "C++ components require gettext problems may arise. These problems"
michael@406 164 echo "can appear at build time causing the build to stop with errors"
michael@406 165 echo "containing the words NLS, intl, or locale, or at run time should"
michael@406 166 echo "undefined external symbols libintl_* in libstdc++.a interfere with"
michael@406 167 echo "building other C++ sources."
michael@406 168 echo ""
michael@406 169 echo "To solve such problems, contact the GCC package maintainer and inform"
michael@406 170 echo "of the location of libintl.h header on the system in question."
michael@406 171 ) | %{l_rpmtool} msg -b -t warn
michael@406 172 %endif
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@473 224 *amd64-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@406 240 --cache-file=./config.cache \
michael@320 241 --with-bugurl="http://openpkg.org/" \
michael@320 242 --with-pkgversion="%{l_openpkg_release -F "OpenPKG-%%t"}" \
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@561 332 echo "disabled according to profiling requirements as specified on page:"
michael@561 333 echo ""
michael@561 334 echo " http://gcc.gnu.org/install/build.html#TOC4"
michael@335 335 ) | %{l_rpmtool} msg -b -t warn
michael@335 336
michael@335 337 # warn about profiled bootstrap requirement of 64-bit arithmetic
michael@334 338 if [ ".$l_ccisgcc" != .yes ]; then
michael@561 339 ( echo ""
michael@561 340 echo "A preinstalled GCC was not detected although one is recommended for"
michael@335 341 echo "building a profiled bootstrap. Buildtime or runtime errors can occur if"
michael@335 342 echo "the compiler used to build profile feedback doesn't support 64-bit math."
michael@334 343 echo ""
michael@334 344 echo "If in doubt, stop now and start the build again with profiling disabled."
michael@334 345 ) | %{l_rpmtool} msg -b -t warn
michael@334 346 fi
michael@334 347 %else
michael@335 348 # build in three stages
michael@332 349 maketarget="bootstrap"
michael@334 350 loc_makeflags="%{l_mflags -O}"
michael@320 351 %endif
michael@320 352 case "%{l_platform -t}" in
michael@332 353 *64-* ) l_cflags="$l_cflags -fPIC"; l_cxxflags="$l_cxxflags -fPIC" ;;
michael@320 354 esac
michael@335 355 %if "%{with_cxx}" == "yes"
michael@320 356 l_cflags="$l_cflags %{l_cppflags}"
michael@320 357 l_cxxflags="$l_cxxflags %{l_cppflags}"
michael@320 358 l_libcflags="$l_libcflags %{l_cppflags}"
michael@320 359 l_libcxxflags="$l_libcxxflags %{l_cppflags}"
michael@320 360 %endif
michael@320 361
michael@320 362 # build the package
michael@334 363 MAKE="%{l_make} ${loc_makeflags}" \
michael@334 364 %{l_make} ${loc_makeflags} \
michael@332 365 GREP="grep" \
michael@334 366 MAKE="%{l_make} ${loc_makeflags}" \
michael@320 367 BOOT_CFLAGS="${l_boot_cflags}" \
michael@320 368 CFLAGS="${l_cflags}" \
michael@320 369 CXXFLAGS="${l_cxxflags}" \
michael@335 370 %if "%{with_cxx}" == "yes"
michael@335 371 CPPFLAGS="%{l_cppflags}" \
michael@335 372 LDFLAGS="%{l_ldflags}" \
michael@335 373 BOOT_LDFLAGS="%{l_ldflags}" \
michael@335 374 %endif
michael@320 375 LIBCFLAGS="${l_libcflags}" \
michael@320 376 LIBCXXFLAGS="${l_libcxxflags}" \
michael@320 377 $maketarget
michael@320 378
michael@320 379 %install
michael@321 380 rm -rf $RPM_BUILD_ROOT
michael@320 381
michael@320 382 # fetch GNU platform triple
michael@320 383 triple=`./config.guess`
michael@320 384
michael@337 385 # perform standard installation procedure
michael@337 386 ( cd objbld
michael@320 387 %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
michael@320 388 ) || exit $?
michael@320 389
michael@320 390 # cleanup installation tree
michael@320 391 mv $RPM_BUILD_ROOT%{l_prefix}/lib/{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 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/{lib*.a,*.spec} \
michael@320 395 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/ \
michael@320 396 >/dev/null 2>&1 || true
michael@320 397 dirs=""
michael@320 398 for multilib in `$RPM_BUILD_ROOT%{l_prefix}/bin/gcc --print-multi-lib`; do
michael@320 399 subdir=`echo "$multilib" | sed -e 's/;.*$//'`
michael@320 400 [ ".$subdir" = .. ] && continue
michael@320 401 mv $RPM_BUILD_ROOT%{l_prefix}/lib/$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 mv $RPM_BUILD_ROOT%{l_prefix}/lib64/$subdir/lib*.a \
michael@320 405 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/$subdir/ \
michael@320 406 >/dev/null 2>&1 || true
michael@320 407 dirs="$dirs $subdir"
michael@320 408 done
michael@320 409 for subdir in $dirs; do
michael@320 410 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/$subdir >/dev/null 2>&1 || true
michael@320 411 done
michael@320 412 mv $RPM_BUILD_ROOT%{l_prefix}/${triple}/include/* \
michael@320 413 $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/include/ \
michael@320 414 >/dev/null 2>&1 || true
michael@320 415
michael@332 416 # correct hardcoded paths
michael@332 417 %{l_shtool} subst \
michael@337 418 -e "s;\(dependency_libs\) *=.*;\1='-L%{l_prefix}/lib\ -L%{l_prefix}/lib/gcc%{V_comp}/${triple}/%{V_full}\ -liberty';" \
michael@337 419 $RPM_BUILD_ROOT%{l_prefix}/libexec/gcc%{V_comp}/${triple}/[0-9]*/liblto_plugin.la
michael@332 420
michael@320 421 # strip installation tree
michael@320 422 rm -rf $RPM_BUILD_ROOT%{l_prefix}/${triple}
michael@320 423 rm -f $RPM_BUILD_ROOT%{l_prefix}/info/dir
michael@320 424 rm -rf $RPM_BUILD_ROOT%{l_prefix}/man/man7 >/dev/null 2>&1 || true
michael@320 425 rm -f $RPM_BUILD_ROOT%{l_prefix}/lib/*.la >/dev/null 2>&1 || true
michael@320 426 rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib64 >/dev/null 2>&1 || true
michael@320 427 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcc* >/dev/null 2>&1 || true
michael@320 428 %if "%{with_cxx}" == "yes"
michael@320 429 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-c++ >/dev/null 2>&1 || true
michael@320 430 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-g++ >/dev/null 2>&1 || true
michael@320 431 %endif
michael@468 432 %if "%{with_java}" == "yes"
michael@468 433 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gcj >/dev/null 2>&1 || true
michael@468 434 %endif
michael@468 435 %if "%{with_fortran}" == "yes"
michael@468 436 rm -f $RPM_BUILD_ROOT%{l_prefix}/bin/*-gfortran >/dev/null 2>&1 || true
michael@468 437 %endif
michael@320 438 strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true
michael@320 439 for prog in cc1 cc1plus collect2 cpp; do
michael@320 440 strip $RPM_BUILD_ROOT%{l_prefix}/lib/gcc%{V_comp}/${triple}/[0-9]*/${prog} \
michael@320 441 >/dev/null 2>&1 || true
michael@320 442 done
michael@320 443
michael@320 444 # bump up installation tree
michael@320 445 ln $RPM_BUILD_ROOT%{l_prefix}/bin/gcc \
michael@320 446 $RPM_BUILD_ROOT%{l_prefix}/bin/cc
michael@320 447 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/gcc.1 \
michael@320 448 $RPM_BUILD_ROOT%{l_prefix}/man/man1/cc.1
michael@320 449 %if "%{with_cxx}" == "yes"
michael@320 450 ln $RPM_BUILD_ROOT%{l_prefix}/man/man1/g++.1 \
michael@320 451 $RPM_BUILD_ROOT%{l_prefix}/man/man1/c++.1
michael@320 452 %endif
michael@320 453
michael@320 454 # determine installation file list
michael@320 455 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
michael@320 456
michael@320 457 %files -f files
michael@320 458
michael@320 459 %clean
michael@321 460 rm -rf $RPM_BUILD_ROOT
michael@320 461

mercurial