]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blame - gcc/gcc.nm
Merge remote-tracking branch 'stevee/openvswitch-systemd'
[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
b085ba45 10version = 4.7.1
e0e5b1d5 11release = 3
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 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"
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 *)
62f274aa 246 ln -svf ../../../../..%{libdir}/libgcc_s.so.1 ${FULLPATH}/libgcc_s.so
13319128
MT
247 ;;
248 esac
62f274aa 249 chmod 755 %{BUILDROOT}%{libdir}/libgcc_s.so.1
802ea3af
MT
250
251 # Remove some GNU debugger stuff.
c30b5fa5 252 rm -vf %{BUILDROOT}%{libdir}/lib*.py
56c0b63c 253
0f737982
MT
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
56c0b63c 264 # libgomp
c30b5fa5 265 mv -vf %{BUILDROOT}%{libdir}/libgomp.spec ${FULLPATH}/
56c0b63c 266 ln -svf ../../../libgomp.so.1.0.0 ${FULLPATH}/libgomp.so
c30b5fa5 267 chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
56c0b63c
MT
268
269 # libstdc++
4de56d3e 270 ln -svf ../../../libstdc++.so.6.0.17 ${FULLPATH}/libstdc++.so
56c0b63c
MT
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
c30b5fa5 275 chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.*
56c0b63c
MT
276
277 # libquadmath
278 if [ "%{build_libquadmath}" = "1" ]; then
9d2ad5e3 279 ln -svf ../../../libquadmath.so.0.0.0 ${FULLPATH}/libquadmath.so
c30b5fa5 280 chmod 755 %{BUILDROOT}%{libdir}/libquadmath.so.0.*
56c0b63c 281 fi
4de56d3e
MT
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.*
802ea3af 287 end
876f9cff
MT
288
289 keep_libraries
c30b5fa5
MT
290 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a
291 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a
876f9cff 292 end
802ea3af
MT
293end
294
295packages
296 package %{name}
297 groups += Build
298
299 requires
0302fa63 300 binutils >= %{required_binutils_version}
7e981e59 301 filesystem >= 002
e0e5b1d5 302 glibc >= 2.16
802ea3af 303 glibc-devel
7112214f 304 gmp-devel
0302fa63
MT
305 cpp = %{thisver}
306 libgcc = %{thisver}
307 libgomp = %{thisver}
802ea3af
MT
308 end
309
9d2ad5e3 310 # We do not ship libgcc-devel anymore.
0302fa63
MT
311 provides += libgcc-devel = %{thisver}
312 obsoletes += libgcc-devel < %{thisver}
9d2ad5e3 313
802ea3af 314 if "%{build_cloog_ppl}" == "1"
0302fa63 315 requires += cloog-ppl >= 0.15
802ea3af
MT
316 end
317 end
318
802ea3af 319 package %{name}-c++
56c0b63c
MT
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
0302fa63
MT
328 gcc = %{thisver}
329 libstdc++ = %{thisver}
330 libstdc++-devel = %{thisver}
56c0b63c 331 end
802ea3af
MT
332
333 files
334 /usr/bin/*++
c30b5fa5 335 %{libdir}/gcc/*/*/cc1plus
802ea3af
MT
336 /usr/share/man/man*/*++*
337 end
338 end
339
56c0b63c
MT
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
802ea3af 366 files
7e981e59
MT
367 %{prefix}/lib/cpp
368 %{bindir}/cpp
369 %{mandir}/man1/cpp.1*
c30b5fa5 370 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1
802ea3af 371 end
7e981e59
MT
372
373 provides = /lib/cpp
62f274aa 374 requires = gcc-c++ = %{thisver}
802ea3af
MT
375 end
376
56c0b63c
MT
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
802ea3af
MT
383
384 files
0302fa63 385 %{libdir}/libgcc*.so.*
802ea3af
MT
386 end
387 end
388
389 package libstdc++
56c0b63c
MT
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
802ea3af 396 files
c30b5fa5 397 %{libdir}/libstdc++*.so.*
802ea3af
MT
398 end
399 end
400
401 package libstdc++-devel
56c0b63c
MT
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
0302fa63 410 libstdc++ = %{thisver}
56c0b63c
MT
411 end
412
802ea3af 413 files
c30b5fa5
MT
414 %{includedir}/c++
415 %{libdir}/libstdc++*.so
802ea3af
MT
416 end
417 end
418
419 package libgomp
56c0b63c
MT
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.
802ea3af 424 end
802ea3af 425
802ea3af 426 files
c30b5fa5 427 %{libdir}/libgomp*.so.*
802ea3af
MT
428 end
429 end
430
431 package libmudflap
56c0b63c
MT
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
802ea3af 438 files
c30b5fa5 439 %{libdir}/libmudflap*.so.*
802ea3af
MT
440 end
441 end
442
443 package libmudflap-devel
56c0b63c
MT
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
0302fa63 454 libmudflap = %{thisver}
56c0b63c
MT
455 end
456
802ea3af 457 files
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
c30b5fa5
MT
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
56c0b63c 493 end
802ea3af
MT
494 end
495 end
496
4de56d3e
MT
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
56c0b63c
MT
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
0302fa63
MT
537 gcc = %{thisver}
538 gmp-devel >= 4.1.2-8
539 mpfr-devel >= 2.2.1
540 libmpc-devel >= 0.8.1
56c0b63c
MT
541 end
542
802ea3af 543 files
c30b5fa5 544 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
802ea3af
MT
545 end
546 end
1f9bc2f0
MT
547
548 package %{name}-debuginfo
549 template DEBUGINFO
550 end
802ea3af 551end