]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blame - gcc/gcc.nm
gcc: Update to 4.8.1.
[people/arne_f/ipfire-3.x.git] / gcc / gcc.nm
CommitLineData
166a6c21 1###############################################################################
802ea3af
MT
2# IPFire.org - An Open Source Firewall Solution #
3# Copyright (C) - IPFire Development Team <info@ipfire.org> #
166a6c21
MT
4###############################################################################
5
802ea3af 6# Configure build to compile with cloog and ppl.
7bc68234 7build_cloog_ppl = 1
166a6c21 8
802ea3af 9name = gcc
00c77389
MT
10version = 4.8.1
11release = 1
f0d77f5d 12
802ea3af
MT
13maintainer = Michael Tremer <michael.tremer@ipfire.org>
14groups = Development/Compilers
15url = http://gcc.gnu.org/
16license = GPLv3+ and GPLv2+ with exceptions
17summary = Various compilers (C, C++, Objective-C, Java, ...).
166a6c21 18
802ea3af 19description
166a6c21
MT
20 The gcc package contains the GNU Compiler Collection. \
21 You'll need this package in order to compile C code.
802ea3af
MT
22end
23
24# This is the at least required version of binutils.
25required_binutils_version = 2.21.51.0.8-1
26
de58ea22 27source_dl = http://ftp.gnu.org/gnu/gcc/%{thisapp}/
802ea3af
MT
28sources = %{thisapp}.tar.gz
29
802ea3af
MT
30build
31 requires
32 autogen
00c77389 33 binutils >= %{required_binutils_version}
802ea3af
MT
34 dejagnu
35 elfutils-devel
36 expect
7e981e59 37 filesystem >= 002
802ea3af 38 flex
e0e5b1d5 39 glibc-devel >= 2.16
802ea3af
MT
40 gmp-devel
41 libffi-devel
56c0b63c 42 libmpc-devel
802ea3af 43 mpfr-devel
4de56d3e 44 perl
802ea3af
MT
45 texinfo
46 zlib-devel
47 end
48
49 # If cloog support is enabled, we require the devel packages for build.
50 if "%{build_cloog_ppl}" == "1"
2a3a31bb
MT
51 requires += cloog-ppl-devel >= 0.15.11-2
52 requires += ppl-devel >= 1.0
802ea3af
MT
53 end
54
56c0b63c
MT
55 # Build libquadmath (only on x86).
56 build_libquadmath = 0
57
00c77389
MT
58 # Build libtasn (only on x86_64).
59 build_libtsan = 0
60
802ea3af
MT
61 # A couple of configure arguments depending on the architecture and
62 # configuration.
63 configure_options =
64
7bc68234
MT
65 make_bootstrap = profiledbootstrap
66
802ea3af
MT
67 if "%{DISTRO_ARCH}" == "x86_64"
68 configure_options = --disable-multilib
56c0b63c
MT
69
70 build_libquadmath = 1
00c77389 71 build_libtsan = 1
802ea3af
MT
72 end
73
74 if "%{DISTRO_ARCH}" == "i686"
75 configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
56c0b63c
MT
76
77 build_libquadmath = 1
802ea3af
MT
78 end
79
66e276de 80 if "%{DISTRO_ARCH}" == "armv5tel"
7bc68234 81 make_bootstrap = bootstrap
56c0b63c 82
7bc68234 83 configure_options += --disable-sjlj-exceptions
66e276de
MT
84 configure_options += --with-float=soft
85 end
86
1a7bf898 87 if "%{DISTRO_ARCH}" == "armv7hl"
dc788393
MT
88 make_bootstrap = bootstrap
89
56c0b63c
MT
90 configure_options += --disable-sjlj-exceptions
91
92 configure_options += \
93 --with-cpu=cortex-a8 \
94 --with-tune=cortex-a8 \
95 --with-arch=armv7-a \
96 --with-float=hard \
97 --with-fpu=vfpv3-d16 \
98 --with-abi=aapcs-linux
99 end
100
802ea3af 101 if "%{build_cloog_ppl}" == "1"
2a3a31bb
MT
102 configure_options += --with-cloog --with-ppl \
103 --disable-ppl-version-check
802ea3af
MT
104 end
105
106 # CFLAGS for hardening.
00c77389 107 HARD_CFLAGS = -DENABLE_ESP -DEFAULT_PIE_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW
802ea3af
MT
108
109 prepare_cmds
110 mkdir -v %{DIR_SRC}/gcc-build
111
112 # Remove unneeded features that will save some compile time
113 rm -rf lib{gfortran,java,objc} gcc/{fortran,java,objc,objcp}
114
115 # Apply a sed substitution that will suppress the installation of
116 # libiberty.a. The version of libiberty.a provided by Binutils will be used
117 # instead:
118 sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
119
120 # Branding gcc
121 echo "%{DISTRO_NAME} %{version}-%{release}" > gcc/DEV-PHASE
122
123 # Libgomp uses -Werror regardless of --disable-werror, and this will cause a
124 # build failure when -D_FORTIFY_SOURCE=2 causes build time warnings:
125 sed -e "s/-Werror//" -i libgomp/configure
126
127 # The fixincludes script is known to occasionally erroneously attempt to
128 # "fix" the system headers installed so far. As the headers up to this point
129 # are known to not require fixing, issue the following command to prevent
130 # the fixincludes script from running:
131 sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
132
133 sed -i gcc/Makefile.in \
134 -e "s/-fno-exceptions/& -fno-asynchronous-unwind-tables/"
135
136 # we want to be able to control the pie patch logic via something other
4de56d3e 137 # than ALL_CFLAGS and ALL_CXXFLAGS...
802ea3af 138 sed -i gcc/Makefile.in \
00c77389 139 -e '/^ALL_CFLAGS/iHARD_CFLAGS = %{HARD_CFLAGS}' \
4de56d3e 140 -e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) |' \
00c77389 141 -e '/^ALL_CXXFLAGS/iHARD_CFLAGS = %{HARD_CFLAGS}' \
4de56d3e 142 -e 's|^ALL_CXXFLAGS = |ALL_CXXFLAGS = $(HARD_CFLAGS) |'
802ea3af 143
4de56d3e
MT
144 # However, genautomata crashes with a "Bus Error" when compiled
145 # with PIC.
802ea3af 146 sed -i gcc/Makefile.in \
4de56d3e 147 -e 's|^build/genautomata$(build_exeext) .*|& -fno-PIC|'
802ea3af 148
56c0b63c
MT
149 # Default to -gdwarf-4 -fno-debug-types-section rather than -gdwarf-2
150 sed -i gcc/common.opt \
151 -e '/UInteger Var(dwarf_version)/s/Init(2)/Init(4)/' \
152 -e '/flag_debug_types_section/s/Init(1)/Init(0)/' \
153 -e '/dwarf_record_gcc_switches/s/Init(0)/Init(1)/' \
154 -e 's/\(may be either 2, 3 or 4; the default version is \)2\./\14./'
155
00c77389 156 #./contrib/gcc_update --touch
802ea3af
MT
157 end
158
159 build
160 cd %{DIR_SRC}/gcc-build
161
162 # Modify CFLAGS
802ea3af
MT
163 CFLAGS="%{CFLAGS}"
164 CFLAGS=$(echo ${CFLAGS} | sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g')
165 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-m64//g;s/-m32//g;s/-m31//g')
56c0b63c
MT
166 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g')
167 CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g')
802ea3af
MT
168 CFLAGS=$(echo "${CFLAGS}" | sed -e 's/[[:blank:]]\+/ /g')
169 CXXFLAGS=$(echo ${CFLAGS} | sed -e 's/ -Wall//g')
170
171 CFLAGS="${CFLAGS}" \
172 CXXFLAGS="${CXXFLAGS}" \
173 XCFLAGS="${CFLAGS}" \
174 TCFLAGS="${CFLAGS}" \
175 ../%{thisapp}/configure \
176 --build=%{DISTRO_BUILDTARGET} \
166a6c21 177 --prefix=/usr \
c30b5fa5
MT
178 --libdir=%{libdir} \
179 --libexecdir=%{libdir} \
00c77389 180 --mandir=%{mandir} \
b8b873e7 181 --enable-esp \
166a6c21
MT
182 --enable-shared \
183 --enable-threads=posix \
184 --enable-__cxa_atexit \
185 --enable-clocale=gnu \
f23b0b6e
MT
186 --enable-languages=c,c++,lto \
187 --enable-bootstrap \
188 --enable-checking=release \
166a6c21
MT
189 --disable-werror \
190 --disable-libssp \
191 --disable-static \
f23b0b6e
MT
192 --with-system-zlib \
193 --with-bugurl=http://bugtracker.ipfire.org \
b415c6aa
MT
194 --disable-libunwind-exceptions \
195 --enable-gnu-unique-object \
196 --enable-linker-build-id \
4de56d3e 197 --with-linker-hash-style=gnu \
00c77389
MT
198 --enable-plugin \
199 --enable-initfini-array \
802ea3af
MT
200 %{configure_options}
201
202 # GCC does not support a parallel build.
7bc68234 203 make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}"
4de56d3e
MT
204
205 # Generate man pages.
206 perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
207 for i in %{DIR_APP}/gcc/doc/*.texi; do
208 cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
209 done
210 make -C gcc generated-manpages
211 for i in %{DIR_APP}/gcc/doc/*.texi; do mv -f $i.orig $i; done
802ea3af
MT
212 end
213
214 #test
215 # cd %{DIR_SRC}/gcc-build && make check
216 # cd %{DIR_APP} && ./contrib/test_summary
217 #end
218
219 install
220 cd %{DIR_SRC}/gcc-build
221 make install DESTDIR=%{BUILDROOT}
222
56c0b63c 223 # Check if the installation path exists.
c30b5fa5 224 FULLPATH="%{BUILDROOT}%{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}"
56c0b63c
MT
225 [ -d "${FULLPATH}" ] || exit 1
226
7e981e59
MT
227 mkdir -pv %{BUILDROOT}%{prefix}/lib
228 ln -sfv ../bin/cpp %{BUILDROOT}%{prefix}/lib/cpp
802ea3af
MT
229 ln -sfv gcc %{BUILDROOT}/usr/bin/cc
230
0302fa63 231 # Fix libgcc_s symlinks.
c30b5fa5 232 rm -f ${FULLPATH}/libgcc_s.so %{BUILDROOT}%{libdir}/libgcc_s.so
13319128
MT
233 case "%{DISTRO_ARCH}" in
234 arm*)
13319128
MT
235 cat <<EOF >${FULLPATH}/libgcc_s.so
236 /* GNU ld script
237 Use the shared library, but some functions are only in
238 the static library, so try that secondarily. */
239 OUTPUT_FORMAT(elf32-littlearm)
0302fa63 240 GROUP ( %{libdir}/libgcc_s.so.1 libgcc.a )
13319128
MT
241 EOF
242 ;;
243 *)
62f274aa 244 ln -svf ../../../../..%{libdir}/libgcc_s.so.1 ${FULLPATH}/libgcc_s.so
13319128
MT
245 ;;
246 esac
62f274aa 247 chmod 755 %{BUILDROOT}%{libdir}/libgcc_s.so.1
802ea3af
MT
248
249 # Remove some GNU debugger stuff.
c30b5fa5 250 rm -vf %{BUILDROOT}%{libdir}/lib*.py
56c0b63c 251
0f737982
MT
252 # Install missing header file(s) on ARM.
253 case "%{DISTRO_ARCH}" in
254 arm*)
255 cp -vf %{DIR_APP}/gcc/config/vxworks-dummy.h \
256 ${FULLPATH}/plugin/include/config/
257 cp -vf %{DIR_APP}/gcc/config/arm/arm-cores.def \
258 ${FULLPATH}/plugin/include/config/arm/
259 ;;
260 esac
261
56c0b63c 262 # libgomp
c30b5fa5 263 mv -vf %{BUILDROOT}%{libdir}/libgomp.spec ${FULLPATH}/
56c0b63c 264 ln -svf ../../../libgomp.so.1.0.0 ${FULLPATH}/libgomp.so
c30b5fa5 265 chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
56c0b63c
MT
266
267 # libstdc++
00c77389 268 ln -svf ../../../libstdc++.so.6.0.18 ${FULLPATH}/libstdc++.so
56c0b63c
MT
269
270 # libmudflap
271 ln -svf ../../../libmudflap.so.0.0.0 ${FULLPATH}/libmudflap.so
272 ln -svf ../../../libmudflapth.so.0.0.0 ${FULLPATH}/libmudflapth.so
c30b5fa5 273 chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.*
56c0b63c
MT
274
275 # libquadmath
276 if [ "%{build_libquadmath}" = "1" ]; then
9d2ad5e3 277 ln -svf ../../../libquadmath.so.0.0.0 ${FULLPATH}/libquadmath.so
c30b5fa5 278 chmod 755 %{BUILDROOT}%{libdir}/libquadmath.so.0.*
56c0b63c 279 fi
4de56d3e
MT
280
281 # libitm
282 mv -vf %{BUILDROOT}%{libdir}/libitm.spec ${FULLPATH}/
283 ln -svf ../../../libitm.so.1.0.0 ${FULLPATH}/libitm.so
284 chmod 755 %{BUILDROOT}%{libdir}/libitm.so.1.*
802ea3af 285 end
876f9cff
MT
286
287 keep_libraries
c30b5fa5
MT
288 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a
289 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a
876f9cff 290 end
802ea3af
MT
291end
292
293packages
294 package %{name}
295 groups += Build
296
297 requires
0302fa63 298 binutils >= %{required_binutils_version}
7e981e59 299 filesystem >= 002
e0e5b1d5 300 glibc >= 2.16
802ea3af 301 glibc-devel
7112214f 302 gmp-devel
0302fa63
MT
303 cpp = %{thisver}
304 libgcc = %{thisver}
305 libgomp = %{thisver}
802ea3af
MT
306 end
307
9d2ad5e3 308 # We do not ship libgcc-devel anymore.
0302fa63
MT
309 provides += libgcc-devel = %{thisver}
310 obsoletes += libgcc-devel < %{thisver}
9d2ad5e3 311
802ea3af 312 if "%{build_cloog_ppl}" == "1"
0302fa63 313 requires += cloog-ppl >= 0.15
802ea3af
MT
314 end
315 end
316
802ea3af 317 package %{name}-c++
56c0b63c
MT
318 summary = C++ support for GCC.
319 description
320 This package adds C++ support to the GNU Compiler Collection.
321 It includes support for most of the current C++ specification,
322 including templates and exception handling.
323 end
324
325 requires
0302fa63
MT
326 gcc = %{thisver}
327 libstdc++ = %{thisver}
328 libstdc++-devel = %{thisver}
56c0b63c 329 end
802ea3af
MT
330
331 files
332 /usr/bin/*++
c30b5fa5 333 %{libdir}/gcc/*/*/cc1plus
802ea3af
MT
334 /usr/share/man/man*/*++*
335 end
336 end
337
56c0b63c
MT
338 package cpp
339 summary = The C Preprocessor.
340 description
341 Cpp is the GNU C-Compatible Compiler Preprocessor.
342 Cpp is a macro processor which is used automatically
343 by the C compiler to transform your program before actual
344 compilation. It is called a macro processor because it allows
345 you to define macros, abbreviations for longer
346 constructs.
347
348 The C preprocessor provides four separate functionalities: the
349 inclusion of header files (files of declarations that can be
350 substituted into your program); macro expansion (you can define macros,
351 and the C preprocessor will replace the macros with their definitions
352 throughout the program); conditional compilation (using special
353 preprocessing directives, you can include or exclude parts of the
354 program according to various conditions); and line control (if you use
355 a program to combine or rearrange source files into an intermediate
356 file which is then compiled, you can use line control to inform the
357 compiler about where each source line originated).
358
359 You should install this package if you are a C programmer and you use
360 macros.
361 end
362 group = Development/Languages
363
802ea3af 364 files
7e981e59
MT
365 %{prefix}/lib/cpp
366 %{bindir}/cpp
367 %{mandir}/man1/cpp.1*
c30b5fa5 368 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1
802ea3af 369 end
7e981e59
MT
370
371 provides = /lib/cpp
62f274aa 372 requires = gcc-c++ = %{thisver}
802ea3af
MT
373 end
374
56c0b63c
MT
375 package libgcc
376 summary = GCC shared support library.
377 description
378 This package contains GCC shared support library which is needed
379 e.g. for exception handling support.
380 end
802ea3af
MT
381
382 files
0302fa63 383 %{libdir}/libgcc*.so.*
802ea3af
MT
384 end
385 end
386
387 package libstdc++
56c0b63c
MT
388 summary = GNU Standard C++ Library.
389 description
390 The libstdc++ package contains a rewritten standard compliant GCC Standard
391 C++ Library.
392 end
393
802ea3af 394 files
c30b5fa5 395 %{libdir}/libstdc++*.so.*
802ea3af
MT
396 end
397 end
398
399 package libstdc++-devel
56c0b63c
MT
400 summary = Header files and libraries for C++ development.
401 description
402 This is the GNU implementation of the standard C++ libraries. This
403 package includes the header files and libraries needed for C++
404 development. This includes rewritten implementation of STL.
405 end
406
407 requires
0302fa63 408 libstdc++ = %{thisver}
56c0b63c
MT
409 end
410
802ea3af 411 files
c30b5fa5
MT
412 %{includedir}/c++
413 %{libdir}/libstdc++*.so
802ea3af
MT
414 end
415 end
416
417 package libgomp
56c0b63c
MT
418 summary = GCC OpenMP v3.0 shared support library.
419 description
420 This package contains GCC shared support library which is needed
421 for OpenMP v3.0 support.
802ea3af 422 end
802ea3af 423
802ea3af 424 files
c30b5fa5 425 %{libdir}/libgomp*.so.*
802ea3af
MT
426 end
427 end
428
429 package libmudflap
56c0b63c
MT
430 summary = GCC mudflap shared support library.
431 description
432 This package contains GCC shared support library which is needed
433 for mudflap support.
434 end
435
802ea3af 436 files
c30b5fa5 437 %{libdir}/libmudflap*.so.*
802ea3af
MT
438 end
439 end
440
441 package libmudflap-devel
56c0b63c
MT
442 summary = Development files for GCC mudflap support.
443 description
444 This package contains headers for building mudflap-instrumented programs.
445
446 To instrument a non-threaded program, add -fmudflap
447 option to GCC and when linking add -lmudflap, for threaded programs
448 also add -fmudflapth and -lmudflapth.
449 end
450
451 requires
0302fa63 452 libmudflap = %{thisver}
56c0b63c
MT
453 end
454
802ea3af 455 files
2a3a31bb
MT
456 %{libdir}/libmudflap.so
457 %{libdir}/libmudflapth.so
c30b5fa5
MT
458 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/mf-runtime.h
459 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflap.so
460 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflapth.so
802ea3af
MT
461 end
462 end
463
56c0b63c
MT
464 if "%{build_libquadmath}" == "1"
465 package libquadmath
466 summary = GCC __float128 shared support library.
467 description
468 This package contains GCC shared support library which is needed
469 for __float128 math support and for Fortran REAL*16 support.
470 end
471
472 files
c30b5fa5 473 %{libdir}/libquadmath*.so.*
56c0b63c
MT
474 end
475 end
476
477 package libquadmath-devel
478 summary = Development files for GCC __float128 support.
479 description
480 This package contains headers for building Fortran programs using
481 REAL*16 and programs using __float128 math.
482 end
483
484 requires
0302fa63
MT
485 gcc = %{thisver}
486 libquadmath = %{thisver}
56c0b63c
MT
487 end
488
489 files
2a3a31bb 490 %{libdir}/libquadmath.so
c30b5fa5
MT
491 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath.h
492 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath_weak.h
493 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libquadmath.so
56c0b63c 494 end
802ea3af
MT
495 end
496 end
497
4de56d3e
MT
498 package libitm
499 summary = The GNU Transactional Memory library.
500 description
501 This package contains the GNU Transactional Memory library
502 which is a GCC transactional memory support runtime library.
503 end
504
505 files
506 %{libdir}/libitm.so.1*
507 end
508 end
509
510 package libitm-devel
511 summary = The GNU Transactional Memory support.
512 description
513 This package contains headers and support files for the
514 GNU Transactional Memory library.
515 end
516
517 requires
518 gcc = %{thisver}
519 libitm = %{thisver}
520 end
521
522 files
2a3a31bb 523 %{libdir}/libitm.so
4de56d3e
MT
524 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm.h
525 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm_weak.h
526 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libitm.so
527 end
528 end
529
00c77389
MT
530 package libatomic
531 summary = The GNU Atomic library
532 description
533 This package contains the GNU Atomic library which is a
534 GCC support runtime library for atomisc operations not
535 supported by hardware.
536 end
537
538 files
539 %{libdir}/libatomic.so.1*
540 end
541 end
542
543 package libasan
544 summary = The Address Sanitizer runtime library
545 description
546 This package contains the Address Sanitizer library
547 which is used for -fsanitize=address instrumented programs.
548 end
549
550 files
551 %{libdir}/libasan.so.0*
552 end
553 end
554
555 if "%{build_libtsan}" == "1"
556 package libtsan
557 summary = The Thread Sanitizer runtime library
558 description
559 This package contains the Thread Sanitizer library
560 which is used for -fsanitize=thread instrumented programs.
561 end
562
563 files
564 %{libdir}/libtsan.so.0*
565 end
566 end
567 end
568
56c0b63c
MT
569 package gcc-plugin-devel
570 summary = Support for compiling GCC plugins.
571 description
572 This package contains header files and other support files
573 for compiling GCC plugins. The GCC plugin ABI is currently
574 not stable, so plugins must be rebuilt any time GCC is updated.
575 end
576
577 requires
0302fa63
MT
578 gcc = %{thisver}
579 gmp-devel >= 4.1.2-8
580 mpfr-devel >= 2.2.1
581 libmpc-devel >= 0.8.1
56c0b63c
MT
582 end
583
802ea3af 584 files
c30b5fa5 585 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
802ea3af
MT
586 end
587 end
1f9bc2f0
MT
588
589 package %{name}-debuginfo
590 template DEBUGINFO
591 end
802ea3af 592end