]> git.ipfire.org Git - people/pmueller/ipfire-3.x.git/blob - gcc/gcc.nm
Merge remote-tracking branch 'ms/gcc-4.8'
[people/pmueller/ipfire-3.x.git] / gcc / gcc.nm
1 ###############################################################################
2 # IPFire.org - An Open Source Firewall Solution #
3 # Copyright (C) - IPFire Development Team <info@ipfire.org> #
4 ###############################################################################
5
6 # Configure build to compile with cloog and ppl.
7 build_cloog_ppl = 1
8
9 name = gcc
10 version = 4.8.1
11 release = 1
12
13 maintainer = Michael Tremer <michael.tremer@ipfire.org>
14 groups = Development/Compilers
15 url = http://gcc.gnu.org/
16 license = GPLv3+ and GPLv2+ with exceptions
17 summary = Various compilers (C, C++, Objective-C, Java, ...).
18
19 description
20 The gcc package contains the GNU Compiler Collection. \
21 You'll need this package in order to compile C code.
22 end
23
24 # This is the at least required version of binutils.
25 required_binutils_version = 2.21.51.0.8-1
26
27 source_dl = http://ftp.gnu.org/gnu/gcc/%{thisapp}/
28 sources = %{thisapp}.tar.gz
29
30 build
31 requires
32 autogen
33 binutils >= %{required_binutils_version}
34 dejagnu
35 elfutils-devel
36 expect
37 filesystem >= 002
38 flex
39 glibc-devel >= 2.16
40 gmp-devel
41 libffi-devel
42 libmpc-devel
43 mpfr-devel
44 perl
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"
51 requires += cloog-ppl-devel >= 0.15.11-2
52 requires += ppl-devel >= 1.0
53 end
54
55 # Build libquadmath (only on x86).
56 build_libquadmath = 0
57
58 # Build libtasn (only on x86_64).
59 build_libtsan = 0
60
61 # A couple of configure arguments depending on the architecture and
62 # configuration.
63 configure_options =
64
65 make_bootstrap = profiledbootstrap
66
67 if "%{DISTRO_ARCH}" == "x86_64"
68 configure_options = --disable-multilib
69
70 build_libquadmath = 1
71 build_libtsan = 1
72 end
73
74 if "%{DISTRO_ARCH}" == "i686"
75 configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
76
77 build_libquadmath = 1
78 end
79
80 if "%{DISTRO_ARCH}" == "armv5tel"
81 make_bootstrap = bootstrap
82
83 configure_options += --disable-sjlj-exceptions
84 configure_options += --with-float=soft
85 end
86
87 if "%{DISTRO_ARCH}" == "armv7hl"
88 make_bootstrap = bootstrap
89
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
101 if "%{build_cloog_ppl}" == "1"
102 configure_options += --with-cloog --with-ppl \
103 --disable-ppl-version-check
104 end
105
106 # CFLAGS for hardening.
107 HARD_CFLAGS = -DENABLE_ESP -DEFAULT_PIE_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW
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
137 # than ALL_CFLAGS and ALL_CXXFLAGS...
138 sed -i gcc/Makefile.in \
139 -e '/^ALL_CFLAGS/iHARD_CFLAGS = %{HARD_CFLAGS}' \
140 -e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) |' \
141 -e '/^ALL_CXXFLAGS/iHARD_CFLAGS = %{HARD_CFLAGS}' \
142 -e 's|^ALL_CXXFLAGS = |ALL_CXXFLAGS = $(HARD_CFLAGS) |'
143
144 # However, genautomata crashes with a "Bus Error" when compiled
145 # with PIC.
146 sed -i gcc/Makefile.in \
147 -e 's|^build/genautomata$(build_exeext) .*|& -fno-PIC|'
148
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
156 #./contrib/gcc_update --touch
157 end
158
159 build
160 cd %{DIR_SRC}/gcc-build
161
162 # Modify CFLAGS
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')
166 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g')
167 CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g')
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} \
177 --prefix=/usr \
178 --libdir=%{libdir} \
179 --libexecdir=%{libdir} \
180 --mandir=%{mandir} \
181 --enable-esp \
182 --enable-shared \
183 --enable-threads=posix \
184 --enable-__cxa_atexit \
185 --enable-clocale=gnu \
186 --enable-languages=c,c++,lto \
187 --enable-bootstrap \
188 --enable-checking=release \
189 --disable-werror \
190 --disable-libssp \
191 --disable-static \
192 --with-system-zlib \
193 --with-bugurl=http://bugtracker.ipfire.org \
194 --disable-libunwind-exceptions \
195 --enable-gnu-unique-object \
196 --enable-linker-build-id \
197 --with-linker-hash-style=gnu \
198 --enable-plugin \
199 --enable-initfini-array \
200 %{configure_options}
201
202 # GCC does not support a parallel build.
203 make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}"
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
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
223 # Check if the installation path exists.
224 FULLPATH="%{BUILDROOT}%{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}"
225 [ -d "${FULLPATH}" ] || exit 1
226
227 mkdir -pv %{BUILDROOT}%{prefix}/lib
228 ln -sfv ../bin/cpp %{BUILDROOT}%{prefix}/lib/cpp
229 ln -sfv gcc %{BUILDROOT}/usr/bin/cc
230
231 # Fix libgcc_s symlinks.
232 rm -f ${FULLPATH}/libgcc_s.so %{BUILDROOT}%{libdir}/libgcc_s.so
233 case "%{DISTRO_ARCH}" in
234 arm*)
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)
240 GROUP ( %{libdir}/libgcc_s.so.1 libgcc.a )
241 EOF
242 ;;
243 *)
244 ln -svf ../../../../..%{libdir}/libgcc_s.so.1 ${FULLPATH}/libgcc_s.so
245 ;;
246 esac
247 chmod 755 %{BUILDROOT}%{libdir}/libgcc_s.so.1
248
249 # Remove some GNU debugger stuff.
250 rm -vf %{BUILDROOT}%{libdir}/lib*.py
251
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
262 # libgomp
263 mv -vf %{BUILDROOT}%{libdir}/libgomp.spec ${FULLPATH}/
264 ln -svf ../../../libgomp.so.1.0.0 ${FULLPATH}/libgomp.so
265 chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
266
267 # libstdc++
268 ln -svf ../../../libstdc++.so.6.0.18 ${FULLPATH}/libstdc++.so
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
273 chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.*
274
275 # libquadmath
276 if [ "%{build_libquadmath}" = "1" ]; then
277 ln -svf ../../../libquadmath.so.0.0.0 ${FULLPATH}/libquadmath.so
278 chmod 755 %{BUILDROOT}%{libdir}/libquadmath.so.0.*
279 fi
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.*
285 end
286
287 keep_libraries
288 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a
289 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a
290 end
291 end
292
293 packages
294 package %{name}
295 groups += Build
296
297 requires
298 binutils >= %{required_binutils_version}
299 filesystem >= 002
300 glibc >= 2.16
301 glibc-devel
302 gmp-devel
303 cpp = %{thisver}
304 libgcc = %{thisver}
305 libgomp = %{thisver}
306 end
307
308 # We do not ship libgcc-devel anymore.
309 provides += libgcc-devel = %{thisver}
310 obsoletes += libgcc-devel < %{thisver}
311
312 if "%{build_cloog_ppl}" == "1"
313 requires += cloog-ppl >= 0.15
314 end
315 end
316
317 package %{name}-c++
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
326 gcc = %{thisver}
327 libstdc++ = %{thisver}
328 libstdc++-devel = %{thisver}
329 end
330
331 files
332 /usr/bin/*++
333 %{libdir}/gcc/*/*/cc1plus
334 /usr/share/man/man*/*++*
335 end
336 end
337
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
364 files
365 %{prefix}/lib/cpp
366 %{bindir}/cpp
367 %{mandir}/man1/cpp.1*
368 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1
369 end
370
371 provides = /lib/cpp
372 requires = gcc-c++ = %{thisver}
373 end
374
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
381
382 files
383 %{libdir}/libgcc*.so.*
384 end
385 end
386
387 package libstdc++
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
394 files
395 %{libdir}/libstdc++*.so.*
396 end
397 end
398
399 package libstdc++-devel
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
408 libstdc++ = %{thisver}
409 end
410
411 files
412 %{includedir}/c++
413 %{libdir}/libstdc++*.so
414 end
415 end
416
417 package libgomp
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.
422 end
423
424 files
425 %{libdir}/libgomp*.so.*
426 end
427 end
428
429 package libmudflap
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
436 files
437 %{libdir}/libmudflap*.so.*
438 end
439 end
440
441 package libmudflap-devel
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
452 libmudflap = %{thisver}
453 end
454
455 files
456 %{libdir}/libmudflap.so
457 %{libdir}/libmudflapth.so
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
461 end
462 end
463
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
473 %{libdir}/libquadmath*.so.*
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
485 gcc = %{thisver}
486 libquadmath = %{thisver}
487 end
488
489 files
490 %{libdir}/libquadmath.so
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
494 end
495 end
496 end
497
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
523 %{libdir}/libitm.so
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
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
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
578 gcc = %{thisver}
579 gmp-devel >= 4.1.2-8
580 mpfr-devel >= 2.2.1
581 libmpc-devel >= 0.8.1
582 end
583
584 files
585 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
586 end
587 end
588
589 package %{name}-debuginfo
590 template DEBUGINFO
591 end
592 end