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