]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/blame - gcc/gcc.nm
gcc: Update to 4.7.0.
[people/amarx/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
4de56d3e
MT
10version = 4.7.0
11release = 0.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
33 binutils>=%{required_binutils_version}
34 dejagnu
35 elfutils-devel
36 expect
7e981e59 37 filesystem >= 002
802ea3af
MT
38 flex
39 glibc-devel
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"
4171bf1c
MT
51 requires += cloog-ppl-devel
52 requires += ppl-devel
802ea3af
MT
53 end
54
56c0b63c
MT
55 # Build libquadmath (only on x86).
56 build_libquadmath = 0
57
802ea3af
MT
58 # A couple of configure arguments depending on the architecture and
59 # configuration.
60 configure_options =
61
7bc68234
MT
62 make_bootstrap = profiledbootstrap
63
802ea3af
MT
64 if "%{DISTRO_ARCH}" == "x86_64"
65 configure_options = --disable-multilib
56c0b63c
MT
66
67 build_libquadmath = 1
802ea3af
MT
68 end
69
70 if "%{DISTRO_ARCH}" == "i686"
71 configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
56c0b63c
MT
72
73 build_libquadmath = 1
802ea3af
MT
74 end
75
66e276de 76 if "%{DISTRO_ARCH}" == "armv5tel"
7bc68234 77 make_bootstrap = bootstrap
56c0b63c 78
7bc68234 79 configure_options += --disable-sjlj-exceptions
66e276de
MT
80 configure_options += --with-float=soft
81 end
82
1a7bf898 83 if "%{DISTRO_ARCH}" == "armv7hl"
dc788393
MT
84 make_bootstrap = bootstrap
85
56c0b63c
MT
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
802ea3af
MT
97 if "%{build_cloog_ppl}" == "1"
98 configure_options += --with-cloog --with-ppl
99 end
100
101 # CFLAGS for hardening.
d72c8258
MT
102 HARD_CFLAGS = -DEFAULT_PIE -DEFAULT_SSP -DEFAULT_PIE_SSP -DEFAULT_ESP_SPP \
103 -DENABLE_ESP_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW
802ea3af
MT
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
4de56d3e 133 # than ALL_CFLAGS and ALL_CXXFLAGS...
802ea3af
MT
134 sed -i gcc/Makefile.in \
135 -e '/^ALL_CFLAGS/iHARD_CFLAGS = ' \
4de56d3e
MT
136 -e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) |' \
137 -e '/^ALL_CXXFLAGS/iHARD_CFLAGS = ' \
138 -e 's|^ALL_CXXFLAGS = |ALL_CXXFLAGS = $(HARD_CFLAGS) |'
802ea3af
MT
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.
4de56d3e
MT
145 # However, genautomata crashes with a "Bus Error" when compiled
146 # with PIC.
802ea3af 147 sed -i gcc/Makefile.in \
4de56d3e
MT
148 -e "s|^ESP_NOPIE_CFLAGS = .*|ESP_NOPIE_CFLAGS =|" \
149 -e 's|^build/genautomata$(build_exeext) .*|& -fno-PIC|'
802ea3af 150
56c0b63c
MT
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
802ea3af
MT
158 ./contrib/gcc_update --touch
159 end
160
161 build
162 cd %{DIR_SRC}/gcc-build
163
164 # Modify CFLAGS
802ea3af
MT
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')
56c0b63c
MT
168 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g')
169 CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g')
802ea3af
MT
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} \
166a6c21 179 --prefix=/usr \
c30b5fa5
MT
180 --libdir=%{libdir} \
181 --libexecdir=%{libdir} \
107ed6ee 182 --mandir=/usr/share/man \
b8b873e7 183 --enable-esp \
166a6c21
MT
184 --enable-shared \
185 --enable-threads=posix \
186 --enable-__cxa_atexit \
187 --enable-clocale=gnu \
f23b0b6e
MT
188 --enable-languages=c,c++,lto \
189 --enable-bootstrap \
190 --enable-checking=release \
4de56d3e
MT
191 --disable-build-with-cxx \
192 --disable-build-poststage1-with-cxx \
166a6c21
MT
193 --disable-werror \
194 --disable-libssp \
195 --disable-static \
f23b0b6e
MT
196 --with-system-zlib \
197 --with-bugurl=http://bugtracker.ipfire.org \
b415c6aa
MT
198 --disable-libunwind-exceptions \
199 --enable-gnu-unique-object \
200 --enable-linker-build-id \
4de56d3e 201 --with-linker-hash-style=gnu \
802ea3af
MT
202 %{configure_options}
203
204 # GCC does not support a parallel build.
7bc68234 205 make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}"
4de56d3e
MT
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
802ea3af
MT
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
56c0b63c 225 # Check if the installation path exists.
c30b5fa5 226 FULLPATH="%{BUILDROOT}%{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}"
56c0b63c
MT
227 [ -d "${FULLPATH}" ] || exit 1
228
7e981e59
MT
229 mkdir -pv %{BUILDROOT}%{prefix}/lib
230 ln -sfv ../bin/cpp %{BUILDROOT}%{prefix}/lib/cpp
802ea3af
MT
231 ln -sfv gcc %{BUILDROOT}/usr/bin/cc
232
0302fa63 233 # Fix libgcc_s symlinks.
c30b5fa5 234 rm -f ${FULLPATH}/libgcc_s.so %{BUILDROOT}%{libdir}/libgcc_s.so
13319128
MT
235 case "%{DISTRO_ARCH}" in
236 arm*)
13319128
MT
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)
0302fa63 242 GROUP ( %{libdir}/libgcc_s.so.1 libgcc.a )
13319128
MT
243 EOF
244 ;;
245 *)
0302fa63 246 ln -svf ../../../../../%{libdir}/libgcc_s.so.1 ${FULLPATH}/libgcc_s.so
13319128
MT
247 ;;
248 esac
802ea3af
MT
249
250 # Remove some GNU debugger stuff.
c30b5fa5 251 rm -vf %{BUILDROOT}%{libdir}/lib*.py
56c0b63c 252
0f737982
MT
253 # Install missing header file(s) on ARM.
254 case "%{DISTRO_ARCH}" in
255 arm*)
256 cp -vf %{DIR_APP}/gcc/config/vxworks-dummy.h \
257 ${FULLPATH}/plugin/include/config/
258 cp -vf %{DIR_APP}/gcc/config/arm/arm-cores.def \
259 ${FULLPATH}/plugin/include/config/arm/
260 ;;
261 esac
262
56c0b63c 263 # libgomp
c30b5fa5 264 mv -vf %{BUILDROOT}%{libdir}/libgomp.spec ${FULLPATH}/
56c0b63c 265 ln -svf ../../../libgomp.so.1.0.0 ${FULLPATH}/libgomp.so
c30b5fa5 266 chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
56c0b63c
MT
267
268 # libstdc++
4de56d3e 269 ln -svf ../../../libstdc++.so.6.0.17 ${FULLPATH}/libstdc++.so
56c0b63c
MT
270
271 # libmudflap
272 ln -svf ../../../libmudflap.so.0.0.0 ${FULLPATH}/libmudflap.so
273 ln -svf ../../../libmudflapth.so.0.0.0 ${FULLPATH}/libmudflapth.so
c30b5fa5 274 chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.*
56c0b63c
MT
275
276 # libquadmath
277 if [ "%{build_libquadmath}" = "1" ]; then
9d2ad5e3 278 ln -svf ../../../libquadmath.so.0.0.0 ${FULLPATH}/libquadmath.so
c30b5fa5 279 chmod 755 %{BUILDROOT}%{libdir}/libquadmath.so.0.*
56c0b63c 280 fi
4de56d3e
MT
281
282 # libitm
283 mv -vf %{BUILDROOT}%{libdir}/libitm.spec ${FULLPATH}/
284 ln -svf ../../../libitm.so.1.0.0 ${FULLPATH}/libitm.so
285 chmod 755 %{BUILDROOT}%{libdir}/libitm.so.1.*
802ea3af 286 end
876f9cff
MT
287
288 keep_libraries
c30b5fa5
MT
289 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a
290 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a
876f9cff 291 end
802ea3af
MT
292end
293
294packages
295 package %{name}
296 groups += Build
297
298 requires
0302fa63 299 binutils >= %{required_binutils_version}
7e981e59 300 filesystem >= 002
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
802ea3af
MT
372 end
373
56c0b63c
MT
374 package libgcc
375 summary = GCC shared support library.
376 description
377 This package contains GCC shared support library which is needed
378 e.g. for exception handling support.
379 end
802ea3af
MT
380
381 files
0302fa63 382 %{libdir}/libgcc*.so.*
802ea3af
MT
383 end
384 end
385
386 package libstdc++
56c0b63c
MT
387 summary = GNU Standard C++ Library.
388 description
389 The libstdc++ package contains a rewritten standard compliant GCC Standard
390 C++ Library.
391 end
392
802ea3af 393 files
c30b5fa5 394 %{libdir}/libstdc++*.so.*
802ea3af
MT
395 end
396 end
397
398 package libstdc++-devel
56c0b63c
MT
399 summary = Header files and libraries for C++ development.
400 description
401 This is the GNU implementation of the standard C++ libraries. This
402 package includes the header files and libraries needed for C++
403 development. This includes rewritten implementation of STL.
404 end
405
406 requires
0302fa63 407 libstdc++ = %{thisver}
56c0b63c
MT
408 end
409
802ea3af 410 files
c30b5fa5
MT
411 %{includedir}/c++
412 %{libdir}/libstdc++*.so
802ea3af
MT
413 end
414 end
415
416 package libgomp
56c0b63c
MT
417 summary = GCC OpenMP v3.0 shared support library.
418 description
419 This package contains GCC shared support library which is needed
420 for OpenMP v3.0 support.
802ea3af 421 end
802ea3af 422
802ea3af 423 files
c30b5fa5 424 %{libdir}/libgomp*.so.*
802ea3af
MT
425 end
426 end
427
428 package libmudflap
56c0b63c
MT
429 summary = GCC mudflap shared support library.
430 description
431 This package contains GCC shared support library which is needed
432 for mudflap support.
433 end
434
802ea3af 435 files
c30b5fa5 436 %{libdir}/libmudflap*.so.*
802ea3af
MT
437 end
438 end
439
440 package libmudflap-devel
56c0b63c
MT
441 summary = Development files for GCC mudflap support.
442 description
443 This package contains headers for building mudflap-instrumented programs.
444
445 To instrument a non-threaded program, add -fmudflap
446 option to GCC and when linking add -lmudflap, for threaded programs
447 also add -fmudflapth and -lmudflapth.
448 end
449
450 requires
0302fa63 451 libmudflap = %{thisver}
56c0b63c
MT
452 end
453
802ea3af 454 files
c30b5fa5
MT
455 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/mf-runtime.h
456 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflap.so
457 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflapth.so
802ea3af
MT
458 end
459 end
460
56c0b63c
MT
461 if "%{build_libquadmath}" == "1"
462 package libquadmath
463 summary = GCC __float128 shared support library.
464 description
465 This package contains GCC shared support library which is needed
466 for __float128 math support and for Fortran REAL*16 support.
467 end
468
469 files
c30b5fa5 470 %{libdir}/libquadmath*.so.*
56c0b63c
MT
471 end
472 end
473
474 package libquadmath-devel
475 summary = Development files for GCC __float128 support.
476 description
477 This package contains headers for building Fortran programs using
478 REAL*16 and programs using __float128 math.
479 end
480
481 requires
0302fa63
MT
482 gcc = %{thisver}
483 libquadmath = %{thisver}
56c0b63c
MT
484 end
485
486 files
c30b5fa5
MT
487 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath.h
488 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath_weak.h
489 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libquadmath.so
56c0b63c 490 end
802ea3af
MT
491 end
492 end
493
4de56d3e
MT
494 package libitm
495 summary = The GNU Transactional Memory library.
496 description
497 This package contains the GNU Transactional Memory library
498 which is a GCC transactional memory support runtime library.
499 end
500
501 files
502 %{libdir}/libitm.so.1*
503 end
504 end
505
506 package libitm-devel
507 summary = The GNU Transactional Memory support.
508 description
509 This package contains headers and support files for the
510 GNU Transactional Memory library.
511 end
512
513 requires
514 gcc = %{thisver}
515 libitm = %{thisver}
516 end
517
518 files
519 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm.h
520 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm_weak.h
521 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libitm.so
522 end
523 end
524
56c0b63c
MT
525 package gcc-plugin-devel
526 summary = Support for compiling GCC plugins.
527 description
528 This package contains header files and other support files
529 for compiling GCC plugins. The GCC plugin ABI is currently
530 not stable, so plugins must be rebuilt any time GCC is updated.
531 end
532
533 requires
0302fa63
MT
534 gcc = %{thisver}
535 gmp-devel >= 4.1.2-8
536 mpfr-devel >= 2.2.1
537 libmpc-devel >= 0.8.1
56c0b63c
MT
538 end
539
802ea3af 540 files
c30b5fa5 541 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
802ea3af
MT
542 end
543 end
1f9bc2f0
MT
544
545 package %{name}-debuginfo
546 template DEBUGINFO
547 end
802ea3af 548end