]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/blame - gcc/gcc.nm
Merge remote-tracking branch 'stevee/unicode-ucd'
[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
9763a93c 10version = 4.6.3
c6952ba1 11release = 6
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
56c0b63c
MT
30patches = \
31 gcc46-hack.patch0 \
32 gcc46-c++-builtin-redecl.patch0 \
33 gcc46-pr33763.patch0 \
34 gcc46-libgomp-omp_h-multilib.patch0 \
35 gcc46-libtool-no-rpath.patch0 \
36 gcc46-cloog-dl.patch0 \
37 gcc46-pr38757.patch0 \
38 gcc46-no-add-needed.patch0 \
39 gcc46-unwind-debughook-sdt.patch0 \
40 gcc46-ppl-0.10.patch \
41 gcc46-Woverlength-string.patch0 \
42 gcc46-Woverlength-string-asm.patch0 \
1d4e1316 43 gcc-4.6.3-piepatches-20120408.patch
802ea3af
MT
44
45build
46 requires
47 autogen
48 binutils>=%{required_binutils_version}
49 dejagnu
50 elfutils-devel
51 expect
7e981e59 52 filesystem >= 002
802ea3af
MT
53 flex
54 glibc-devel
55 gmp-devel
56 libffi-devel
56c0b63c 57 libmpc-devel
802ea3af
MT
58 mpfr-devel
59 texinfo
60 zlib-devel
61 end
62
63 # If cloog support is enabled, we require the devel packages for build.
64 if "%{build_cloog_ppl}" == "1"
4171bf1c
MT
65 requires += cloog-ppl-devel
66 requires += ppl-devel
802ea3af
MT
67 end
68
56c0b63c
MT
69 # Build libquadmath (only on x86).
70 build_libquadmath = 0
71
802ea3af
MT
72 # A couple of configure arguments depending on the architecture and
73 # configuration.
74 configure_options =
75
7bc68234
MT
76 make_bootstrap = profiledbootstrap
77
802ea3af
MT
78 if "%{DISTRO_ARCH}" == "x86_64"
79 configure_options = --disable-multilib
56c0b63c
MT
80
81 build_libquadmath = 1
802ea3af
MT
82 end
83
84 if "%{DISTRO_ARCH}" == "i686"
85 configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
56c0b63c
MT
86
87 build_libquadmath = 1
802ea3af
MT
88 end
89
66e276de 90 if "%{DISTRO_ARCH}" == "armv5tel"
7bc68234 91 make_bootstrap = bootstrap
56c0b63c 92
7bc68234 93 configure_options += --disable-sjlj-exceptions
66e276de
MT
94 configure_options += --with-float=soft
95 end
96
1a7bf898 97 if "%{DISTRO_ARCH}" == "armv7hl"
dc788393
MT
98 make_bootstrap = bootstrap
99
56c0b63c
MT
100 configure_options += --disable-sjlj-exceptions
101
102 configure_options += \
103 --with-cpu=cortex-a8 \
104 --with-tune=cortex-a8 \
105 --with-arch=armv7-a \
106 --with-float=hard \
107 --with-fpu=vfpv3-d16 \
108 --with-abi=aapcs-linux
109 end
110
802ea3af
MT
111 if "%{build_cloog_ppl}" == "1"
112 configure_options += --with-cloog --with-ppl
113 end
114
115 # CFLAGS for hardening.
d72c8258
MT
116 HARD_CFLAGS = -DEFAULT_PIE -DEFAULT_SSP -DEFAULT_PIE_SSP -DEFAULT_ESP_SPP \
117 -DENABLE_ESP_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW
802ea3af
MT
118
119 prepare_cmds
120 mkdir -v %{DIR_SRC}/gcc-build
121
122 # Remove unneeded features that will save some compile time
123 rm -rf lib{gfortran,java,objc} gcc/{fortran,java,objc,objcp}
124
125 # Apply a sed substitution that will suppress the installation of
126 # libiberty.a. The version of libiberty.a provided by Binutils will be used
127 # instead:
128 sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
129
130 # Branding gcc
131 echo "%{DISTRO_NAME} %{version}-%{release}" > gcc/DEV-PHASE
132
133 # Libgomp uses -Werror regardless of --disable-werror, and this will cause a
134 # build failure when -D_FORTIFY_SOURCE=2 causes build time warnings:
135 sed -e "s/-Werror//" -i libgomp/configure
136
137 # The fixincludes script is known to occasionally erroneously attempt to
138 # "fix" the system headers installed so far. As the headers up to this point
139 # are known to not require fixing, issue the following command to prevent
140 # the fixincludes script from running:
141 sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
142
143 sed -i gcc/Makefile.in \
144 -e "s/-fno-exceptions/& -fno-asynchronous-unwind-tables/"
145
146 # we want to be able to control the pie patch logic via something other
147 # than ALL_CFLAGS...
148 sed -i gcc/Makefile.in \
149 -e '/^ALL_CFLAGS/iHARD_CFLAGS = ' \
150 -e 's|^ALL_CFLAGS = |ALL_CFLAGS = $(HARD_CFLAGS) |'
151
152 # Enable the GCC hardening by default.
153 sed -i gcc/Makefile.in \
154 -e "s|^HARD_CFLAGS = |HARD_CFLAGS = %{HARD_CFLAGS} |"
155
156 # Compile the compiler with -fPIC as well.
157 sed -i gcc/Makefile.in \
158 -e "s|^ESP_NOPIE_CFLAGS = .*|ESP_NOPIE_CFLAGS =|"
159
56c0b63c
MT
160 # Default to -gdwarf-4 -fno-debug-types-section rather than -gdwarf-2
161 sed -i gcc/common.opt \
162 -e '/UInteger Var(dwarf_version)/s/Init(2)/Init(4)/' \
163 -e '/flag_debug_types_section/s/Init(1)/Init(0)/' \
164 -e '/dwarf_record_gcc_switches/s/Init(0)/Init(1)/' \
165 -e 's/\(may be either 2, 3 or 4; the default version is \)2\./\14./'
166
802ea3af
MT
167 ./contrib/gcc_update --touch
168 end
169
170 build
171 cd %{DIR_SRC}/gcc-build
172
173 # Modify CFLAGS
802ea3af
MT
174 CFLAGS="%{CFLAGS}"
175 CFLAGS=$(echo ${CFLAGS} | sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g')
176 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-m64//g;s/-m32//g;s/-m31//g')
56c0b63c
MT
177 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g')
178 CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g')
802ea3af
MT
179 CFLAGS=$(echo "${CFLAGS}" | sed -e 's/[[:blank:]]\+/ /g')
180 CXXFLAGS=$(echo ${CFLAGS} | sed -e 's/ -Wall//g')
181
182 CFLAGS="${CFLAGS}" \
183 CXXFLAGS="${CXXFLAGS}" \
184 XCFLAGS="${CFLAGS}" \
185 TCFLAGS="${CFLAGS}" \
186 ../%{thisapp}/configure \
187 --build=%{DISTRO_BUILDTARGET} \
166a6c21 188 --prefix=/usr \
c30b5fa5
MT
189 --libdir=%{libdir} \
190 --libexecdir=%{libdir} \
107ed6ee 191 --mandir=/usr/share/man \
b8b873e7 192 --enable-esp \
166a6c21
MT
193 --enable-shared \
194 --enable-threads=posix \
195 --enable-__cxa_atexit \
196 --enable-clocale=gnu \
f23b0b6e
MT
197 --enable-languages=c,c++,lto \
198 --enable-bootstrap \
199 --enable-checking=release \
166a6c21
MT
200 --disable-werror \
201 --disable-libssp \
202 --disable-static \
f23b0b6e
MT
203 --with-system-zlib \
204 --with-bugurl=http://bugtracker.ipfire.org \
b415c6aa
MT
205 --disable-libunwind-exceptions \
206 --enable-gnu-unique-object \
207 --enable-linker-build-id \
802ea3af
MT
208 %{configure_options}
209
210 # GCC does not support a parallel build.
7bc68234 211 make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}"
802ea3af
MT
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
56c0b63c 223 # Check if the installation path exists.
c30b5fa5 224 FULLPATH="%{BUILDROOT}%{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}"
56c0b63c
MT
225 [ -d "${FULLPATH}" ] || exit 1
226
7e981e59
MT
227 mkdir -pv %{BUILDROOT}%{prefix}/lib
228 ln -sfv ../bin/cpp %{BUILDROOT}%{prefix}/lib/cpp
802ea3af
MT
229 ln -sfv gcc %{BUILDROOT}/usr/bin/cc
230
0302fa63 231 # Fix libgcc_s symlinks.
c30b5fa5 232 rm -f ${FULLPATH}/libgcc_s.so %{BUILDROOT}%{libdir}/libgcc_s.so
13319128
MT
233 case "%{DISTRO_ARCH}" in
234 arm*)
13319128
MT
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)
0302fa63 240 GROUP ( %{libdir}/libgcc_s.so.1 libgcc.a )
13319128
MT
241 EOF
242 ;;
243 *)
0302fa63 244 ln -svf ../../../../../%{libdir}/libgcc_s.so.1 ${FULLPATH}/libgcc_s.so
13319128
MT
245 ;;
246 esac
802ea3af
MT
247
248 # Remove some GNU debugger stuff.
c30b5fa5 249 rm -vf %{BUILDROOT}%{libdir}/lib*.py
56c0b63c 250
0f737982
MT
251 # Install missing header file(s) on ARM.
252 case "%{DISTRO_ARCH}" in
253 arm*)
254 cp -vf %{DIR_APP}/gcc/config/vxworks-dummy.h \
255 ${FULLPATH}/plugin/include/config/
256 cp -vf %{DIR_APP}/gcc/config/arm/arm-cores.def \
257 ${FULLPATH}/plugin/include/config/arm/
258 ;;
259 esac
260
56c0b63c 261 # libgomp
c30b5fa5 262 mv -vf %{BUILDROOT}%{libdir}/libgomp.spec ${FULLPATH}/
56c0b63c 263 ln -svf ../../../libgomp.so.1.0.0 ${FULLPATH}/libgomp.so
c30b5fa5 264 chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
56c0b63c
MT
265
266 # libstdc++
267 ln -svf ../../../libstdc++.so.6.0.16 ${FULLPATH}/libstdc++.so
268
269 # libmudflap
270 ln -svf ../../../libmudflap.so.0.0.0 ${FULLPATH}/libmudflap.so
271 ln -svf ../../../libmudflapth.so.0.0.0 ${FULLPATH}/libmudflapth.so
c30b5fa5 272 chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.*
56c0b63c
MT
273
274 # libquadmath
275 if [ "%{build_libquadmath}" = "1" ]; then
9d2ad5e3 276 ln -svf ../../../libquadmath.so.0.0.0 ${FULLPATH}/libquadmath.so
c30b5fa5 277 chmod 755 %{BUILDROOT}%{libdir}/libquadmath.so.0.*
56c0b63c 278 fi
802ea3af 279 end
876f9cff
MT
280
281 keep_libraries
c30b5fa5
MT
282 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a
283 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a
876f9cff 284 end
802ea3af
MT
285end
286
287packages
288 package %{name}
289 groups += Build
290
291 requires
0302fa63 292 binutils >= %{required_binutils_version}
7e981e59 293 filesystem >= 002
802ea3af 294 glibc-devel
7112214f 295 gmp-devel
0302fa63
MT
296 cpp = %{thisver}
297 libgcc = %{thisver}
298 libgomp = %{thisver}
802ea3af
MT
299 end
300
9d2ad5e3 301 # We do not ship libgcc-devel anymore.
0302fa63
MT
302 provides += libgcc-devel = %{thisver}
303 obsoletes += libgcc-devel < %{thisver}
9d2ad5e3 304
802ea3af 305 if "%{build_cloog_ppl}" == "1"
0302fa63 306 requires += cloog-ppl >= 0.15
802ea3af
MT
307 end
308 end
309
802ea3af 310 package %{name}-c++
56c0b63c
MT
311 summary = C++ support for GCC.
312 description
313 This package adds C++ support to the GNU Compiler Collection.
314 It includes support for most of the current C++ specification,
315 including templates and exception handling.
316 end
317
318 requires
0302fa63
MT
319 gcc = %{thisver}
320 libstdc++ = %{thisver}
321 libstdc++-devel = %{thisver}
56c0b63c 322 end
802ea3af
MT
323
324 files
325 /usr/bin/*++
c30b5fa5 326 %{libdir}/gcc/*/*/cc1plus
802ea3af
MT
327 /usr/share/man/man*/*++*
328 end
329 end
330
56c0b63c
MT
331 package cpp
332 summary = The C Preprocessor.
333 description
334 Cpp is the GNU C-Compatible Compiler Preprocessor.
335 Cpp is a macro processor which is used automatically
336 by the C compiler to transform your program before actual
337 compilation. It is called a macro processor because it allows
338 you to define macros, abbreviations for longer
339 constructs.
340
341 The C preprocessor provides four separate functionalities: the
342 inclusion of header files (files of declarations that can be
343 substituted into your program); macro expansion (you can define macros,
344 and the C preprocessor will replace the macros with their definitions
345 throughout the program); conditional compilation (using special
346 preprocessing directives, you can include or exclude parts of the
347 program according to various conditions); and line control (if you use
348 a program to combine or rearrange source files into an intermediate
349 file which is then compiled, you can use line control to inform the
350 compiler about where each source line originated).
351
352 You should install this package if you are a C programmer and you use
353 macros.
354 end
355 group = Development/Languages
356
802ea3af 357 files
7e981e59
MT
358 %{prefix}/lib/cpp
359 %{bindir}/cpp
360 %{mandir}/man1/cpp.1*
c30b5fa5 361 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1
802ea3af 362 end
7e981e59
MT
363
364 provides = /lib/cpp
802ea3af
MT
365 end
366
56c0b63c
MT
367 package libgcc
368 summary = GCC shared support library.
369 description
370 This package contains GCC shared support library which is needed
371 e.g. for exception handling support.
372 end
802ea3af
MT
373
374 files
0302fa63 375 %{libdir}/libgcc*.so.*
802ea3af
MT
376 end
377 end
378
379 package libstdc++
56c0b63c
MT
380 summary = GNU Standard C++ Library.
381 description
382 The libstdc++ package contains a rewritten standard compliant GCC Standard
383 C++ Library.
384 end
385
802ea3af 386 files
c30b5fa5 387 %{libdir}/libstdc++*.so.*
802ea3af
MT
388 end
389 end
390
391 package libstdc++-devel
56c0b63c
MT
392 summary = Header files and libraries for C++ development.
393 description
394 This is the GNU implementation of the standard C++ libraries. This
395 package includes the header files and libraries needed for C++
396 development. This includes rewritten implementation of STL.
397 end
398
399 requires
0302fa63 400 libstdc++ = %{thisver}
56c0b63c
MT
401 end
402
802ea3af 403 files
c30b5fa5
MT
404 %{includedir}/c++
405 %{libdir}/libstdc++*.so
802ea3af
MT
406 end
407 end
408
409 package libgomp
56c0b63c
MT
410 summary = GCC OpenMP v3.0 shared support library.
411 description
412 This package contains GCC shared support library which is needed
413 for OpenMP v3.0 support.
802ea3af 414 end
802ea3af 415
802ea3af 416 files
c30b5fa5 417 %{libdir}/libgomp*.so.*
802ea3af
MT
418 end
419 end
420
421 package libmudflap
56c0b63c
MT
422 summary = GCC mudflap shared support library.
423 description
424 This package contains GCC shared support library which is needed
425 for mudflap support.
426 end
427
802ea3af 428 files
c30b5fa5 429 %{libdir}/libmudflap*.so.*
802ea3af
MT
430 end
431 end
432
433 package libmudflap-devel
56c0b63c
MT
434 summary = Development files for GCC mudflap support.
435 description
436 This package contains headers for building mudflap-instrumented programs.
437
438 To instrument a non-threaded program, add -fmudflap
439 option to GCC and when linking add -lmudflap, for threaded programs
440 also add -fmudflapth and -lmudflapth.
441 end
442
443 requires
0302fa63 444 libmudflap = %{thisver}
56c0b63c
MT
445 end
446
802ea3af 447 files
c30b5fa5
MT
448 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/mf-runtime.h
449 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflap.so
450 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflapth.so
802ea3af
MT
451 end
452 end
453
56c0b63c
MT
454 if "%{build_libquadmath}" == "1"
455 package libquadmath
456 summary = GCC __float128 shared support library.
457 description
458 This package contains GCC shared support library which is needed
459 for __float128 math support and for Fortran REAL*16 support.
460 end
461
462 files
c30b5fa5 463 %{libdir}/libquadmath*.so.*
56c0b63c
MT
464 end
465 end
466
467 package libquadmath-devel
468 summary = Development files for GCC __float128 support.
469 description
470 This package contains headers for building Fortran programs using
471 REAL*16 and programs using __float128 math.
472 end
473
474 requires
0302fa63
MT
475 gcc = %{thisver}
476 libquadmath = %{thisver}
56c0b63c
MT
477 end
478
479 files
c30b5fa5
MT
480 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath.h
481 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath_weak.h
482 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libquadmath.so
56c0b63c 483 end
802ea3af
MT
484 end
485 end
486
56c0b63c
MT
487 package gcc-plugin-devel
488 summary = Support for compiling GCC plugins.
489 description
490 This package contains header files and other support files
491 for compiling GCC plugins. The GCC plugin ABI is currently
492 not stable, so plugins must be rebuilt any time GCC is updated.
493 end
494
495 requires
0302fa63
MT
496 gcc = %{thisver}
497 gmp-devel >= 4.1.2-8
498 mpfr-devel >= 2.2.1
499 libmpc-devel >= 0.8.1
56c0b63c
MT
500 end
501
802ea3af 502 files
c30b5fa5 503 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
802ea3af
MT
504 end
505 end
1f9bc2f0
MT
506
507 package %{name}-debuginfo
508 template DEBUGINFO
509 end
802ea3af 510end