Mon, 17 Sep 2012 19:10:10 +0200
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 |