]> git.ipfire.org Git - people/stevee/ipfire-3.x.git/blame - gcc/gcc.nm
glibc: Provide ld-linux.so.3(GLIBC_PRIVATE) on armv7hl.
[people/stevee/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
62f274aa 11release = 2
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 *)
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
802ea3af 302 glibc-devel
7112214f 303 gmp-devel
0302fa63
MT
304 cpp = %{thisver}
305 libgcc = %{thisver}
306 libgomp = %{thisver}
802ea3af
MT
307 end
308
9d2ad5e3 309 # We do not ship libgcc-devel anymore.
0302fa63
MT
310 provides += libgcc-devel = %{thisver}
311 obsoletes += libgcc-devel < %{thisver}
9d2ad5e3 312
802ea3af 313 if "%{build_cloog_ppl}" == "1"
0302fa63 314 requires += cloog-ppl >= 0.15
802ea3af
MT
315 end
316 end
317
802ea3af 318 package %{name}-c++
56c0b63c
MT
319 summary = C++ support for GCC.
320 description
321 This package adds C++ support to the GNU Compiler Collection.
322 It includes support for most of the current C++ specification,
323 including templates and exception handling.
324 end
325
326 requires
0302fa63
MT
327 gcc = %{thisver}
328 libstdc++ = %{thisver}
329 libstdc++-devel = %{thisver}
56c0b63c 330 end
802ea3af
MT
331
332 files
333 /usr/bin/*++
c30b5fa5 334 %{libdir}/gcc/*/*/cc1plus
802ea3af
MT
335 /usr/share/man/man*/*++*
336 end
337 end
338
56c0b63c
MT
339 package cpp
340 summary = The C Preprocessor.
341 description
342 Cpp is the GNU C-Compatible Compiler Preprocessor.
343 Cpp is a macro processor which is used automatically
344 by the C compiler to transform your program before actual
345 compilation. It is called a macro processor because it allows
346 you to define macros, abbreviations for longer
347 constructs.
348
349 The C preprocessor provides four separate functionalities: the
350 inclusion of header files (files of declarations that can be
351 substituted into your program); macro expansion (you can define macros,
352 and the C preprocessor will replace the macros with their definitions
353 throughout the program); conditional compilation (using special
354 preprocessing directives, you can include or exclude parts of the
355 program according to various conditions); and line control (if you use
356 a program to combine or rearrange source files into an intermediate
357 file which is then compiled, you can use line control to inform the
358 compiler about where each source line originated).
359
360 You should install this package if you are a C programmer and you use
361 macros.
362 end
363 group = Development/Languages
364
802ea3af 365 files
7e981e59
MT
366 %{prefix}/lib/cpp
367 %{bindir}/cpp
368 %{mandir}/man1/cpp.1*
c30b5fa5 369 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1
802ea3af 370 end
7e981e59
MT
371
372 provides = /lib/cpp
62f274aa 373 requires = gcc-c++ = %{thisver}
802ea3af
MT
374 end
375
56c0b63c
MT
376 package libgcc
377 summary = GCC shared support library.
378 description
379 This package contains GCC shared support library which is needed
380 e.g. for exception handling support.
381 end
802ea3af
MT
382
383 files
0302fa63 384 %{libdir}/libgcc*.so.*
802ea3af
MT
385 end
386 end
387
388 package libstdc++
56c0b63c
MT
389 summary = GNU Standard C++ Library.
390 description
391 The libstdc++ package contains a rewritten standard compliant GCC Standard
392 C++ Library.
393 end
394
802ea3af 395 files
c30b5fa5 396 %{libdir}/libstdc++*.so.*
802ea3af
MT
397 end
398 end
399
400 package libstdc++-devel
56c0b63c
MT
401 summary = Header files and libraries for C++ development.
402 description
403 This is the GNU implementation of the standard C++ libraries. This
404 package includes the header files and libraries needed for C++
405 development. This includes rewritten implementation of STL.
406 end
407
408 requires
0302fa63 409 libstdc++ = %{thisver}
56c0b63c
MT
410 end
411
802ea3af 412 files
c30b5fa5
MT
413 %{includedir}/c++
414 %{libdir}/libstdc++*.so
802ea3af
MT
415 end
416 end
417
418 package libgomp
56c0b63c
MT
419 summary = GCC OpenMP v3.0 shared support library.
420 description
421 This package contains GCC shared support library which is needed
422 for OpenMP v3.0 support.
802ea3af 423 end
802ea3af 424
802ea3af 425 files
c30b5fa5 426 %{libdir}/libgomp*.so.*
802ea3af
MT
427 end
428 end
429
430 package libmudflap
56c0b63c
MT
431 summary = GCC mudflap shared support library.
432 description
433 This package contains GCC shared support library which is needed
434 for mudflap support.
435 end
436
802ea3af 437 files
c30b5fa5 438 %{libdir}/libmudflap*.so.*
802ea3af
MT
439 end
440 end
441
442 package libmudflap-devel
56c0b63c
MT
443 summary = Development files for GCC mudflap support.
444 description
445 This package contains headers for building mudflap-instrumented programs.
446
447 To instrument a non-threaded program, add -fmudflap
448 option to GCC and when linking add -lmudflap, for threaded programs
449 also add -fmudflapth and -lmudflapth.
450 end
451
452 requires
0302fa63 453 libmudflap = %{thisver}
56c0b63c
MT
454 end
455
802ea3af 456 files
c30b5fa5
MT
457 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/mf-runtime.h
458 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflap.so
459 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflapth.so
802ea3af
MT
460 end
461 end
462
56c0b63c
MT
463 if "%{build_libquadmath}" == "1"
464 package libquadmath
465 summary = GCC __float128 shared support library.
466 description
467 This package contains GCC shared support library which is needed
468 for __float128 math support and for Fortran REAL*16 support.
469 end
470
471 files
c30b5fa5 472 %{libdir}/libquadmath*.so.*
56c0b63c
MT
473 end
474 end
475
476 package libquadmath-devel
477 summary = Development files for GCC __float128 support.
478 description
479 This package contains headers for building Fortran programs using
480 REAL*16 and programs using __float128 math.
481 end
482
483 requires
0302fa63
MT
484 gcc = %{thisver}
485 libquadmath = %{thisver}
56c0b63c
MT
486 end
487
488 files
c30b5fa5
MT
489 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath.h
490 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath_weak.h
491 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libquadmath.so
56c0b63c 492 end
802ea3af
MT
493 end
494 end
495
4de56d3e
MT
496 package libitm
497 summary = The GNU Transactional Memory library.
498 description
499 This package contains the GNU Transactional Memory library
500 which is a GCC transactional memory support runtime library.
501 end
502
503 files
504 %{libdir}/libitm.so.1*
505 end
506 end
507
508 package libitm-devel
509 summary = The GNU Transactional Memory support.
510 description
511 This package contains headers and support files for the
512 GNU Transactional Memory library.
513 end
514
515 requires
516 gcc = %{thisver}
517 libitm = %{thisver}
518 end
519
520 files
521 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm.h
522 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/itm_weak.h
523 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libitm.so
524 end
525 end
526
56c0b63c
MT
527 package gcc-plugin-devel
528 summary = Support for compiling GCC plugins.
529 description
530 This package contains header files and other support files
531 for compiling GCC plugins. The GCC plugin ABI is currently
532 not stable, so plugins must be rebuilt any time GCC is updated.
533 end
534
535 requires
0302fa63
MT
536 gcc = %{thisver}
537 gmp-devel >= 4.1.2-8
538 mpfr-devel >= 2.2.1
539 libmpc-devel >= 0.8.1
56c0b63c
MT
540 end
541
802ea3af 542 files
c30b5fa5 543 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
802ea3af
MT
544 end
545 end
1f9bc2f0
MT
546
547 package %{name}-debuginfo
548 template DEBUGINFO
549 end
802ea3af 550end