]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/blob - gcc/gcc.nm
Merge remote-tracking branch 'stevee/unicode-ucd'
[people/amarx/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.6.3
11 release = 6
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 patches = \
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 \
43 gcc-4.6.3-piepatches-20120408.patch
44
45 build
46 requires
47 autogen
48 binutils>=%{required_binutils_version}
49 dejagnu
50 elfutils-devel
51 expect
52 filesystem >= 002
53 flex
54 glibc-devel
55 gmp-devel
56 libffi-devel
57 libmpc-devel
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"
65 requires += cloog-ppl-devel
66 requires += ppl-devel
67 end
68
69 # Build libquadmath (only on x86).
70 build_libquadmath = 0
71
72 # A couple of configure arguments depending on the architecture and
73 # configuration.
74 configure_options =
75
76 make_bootstrap = profiledbootstrap
77
78 if "%{DISTRO_ARCH}" == "x86_64"
79 configure_options = --disable-multilib
80
81 build_libquadmath = 1
82 end
83
84 if "%{DISTRO_ARCH}" == "i686"
85 configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
86
87 build_libquadmath = 1
88 end
89
90 if "%{DISTRO_ARCH}" == "armv5tel"
91 make_bootstrap = bootstrap
92
93 configure_options += --disable-sjlj-exceptions
94 configure_options += --with-float=soft
95 end
96
97 if "%{DISTRO_ARCH}" == "armv7hl"
98 make_bootstrap = bootstrap
99
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
111 if "%{build_cloog_ppl}" == "1"
112 configure_options += --with-cloog --with-ppl
113 end
114
115 # CFLAGS for hardening.
116 HARD_CFLAGS = -DEFAULT_PIE -DEFAULT_SSP -DEFAULT_PIE_SSP -DEFAULT_ESP_SPP \
117 -DENABLE_ESP_SSP -DEFAULT_RELRO -DEFAULT_BIND_NOW
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
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
167 ./contrib/gcc_update --touch
168 end
169
170 build
171 cd %{DIR_SRC}/gcc-build
172
173 # Modify CFLAGS
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')
177 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g')
178 CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g')
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} \
188 --prefix=/usr \
189 --libdir=%{libdir} \
190 --libexecdir=%{libdir} \
191 --mandir=/usr/share/man \
192 --enable-esp \
193 --enable-shared \
194 --enable-threads=posix \
195 --enable-__cxa_atexit \
196 --enable-clocale=gnu \
197 --enable-languages=c,c++,lto \
198 --enable-bootstrap \
199 --enable-checking=release \
200 --disable-werror \
201 --disable-libssp \
202 --disable-static \
203 --with-system-zlib \
204 --with-bugurl=http://bugtracker.ipfire.org \
205 --disable-libunwind-exceptions \
206 --enable-gnu-unique-object \
207 --enable-linker-build-id \
208 %{configure_options}
209
210 # GCC does not support a parallel build.
211 make %{make_bootstrap} BOOT_CFLAGS="${CFLAGS}"
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
223 # Check if the installation path exists.
224 FULLPATH="%{BUILDROOT}%{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}"
225 [ -d "${FULLPATH}" ] || exit 1
226
227 mkdir -pv %{BUILDROOT}%{prefix}/lib
228 ln -sfv ../bin/cpp %{BUILDROOT}%{prefix}/lib/cpp
229 ln -sfv gcc %{BUILDROOT}/usr/bin/cc
230
231 # Fix libgcc_s symlinks.
232 rm -f ${FULLPATH}/libgcc_s.so %{BUILDROOT}%{libdir}/libgcc_s.so
233 case "%{DISTRO_ARCH}" in
234 arm*)
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)
240 GROUP ( %{libdir}/libgcc_s.so.1 libgcc.a )
241 EOF
242 ;;
243 *)
244 ln -svf ../../../../../%{libdir}/libgcc_s.so.1 ${FULLPATH}/libgcc_s.so
245 ;;
246 esac
247
248 # Remove some GNU debugger stuff.
249 rm -vf %{BUILDROOT}%{libdir}/lib*.py
250
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
261 # libgomp
262 mv -vf %{BUILDROOT}%{libdir}/libgomp.spec ${FULLPATH}/
263 ln -svf ../../../libgomp.so.1.0.0 ${FULLPATH}/libgomp.so
264 chmod 755 %{BUILDROOT}%{libdir}/libgomp.so.1.*
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
272 chmod 755 %{BUILDROOT}%{libdir}/libmudflap{,th}.so.0.*
273
274 # libquadmath
275 if [ "%{build_libquadmath}" = "1" ]; then
276 ln -svf ../../../libquadmath.so.0.0.0 ${FULLPATH}/libquadmath.so
277 chmod 755 %{BUILDROOT}%{libdir}/libquadmath.so.0.*
278 fi
279 end
280
281 keep_libraries
282 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc.a
283 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/libgcc_eh.a
284 end
285 end
286
287 packages
288 package %{name}
289 groups += Build
290
291 requires
292 binutils >= %{required_binutils_version}
293 filesystem >= 002
294 glibc-devel
295 gmp-devel
296 cpp = %{thisver}
297 libgcc = %{thisver}
298 libgomp = %{thisver}
299 end
300
301 # We do not ship libgcc-devel anymore.
302 provides += libgcc-devel = %{thisver}
303 obsoletes += libgcc-devel < %{thisver}
304
305 if "%{build_cloog_ppl}" == "1"
306 requires += cloog-ppl >= 0.15
307 end
308 end
309
310 package %{name}-c++
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
319 gcc = %{thisver}
320 libstdc++ = %{thisver}
321 libstdc++-devel = %{thisver}
322 end
323
324 files
325 /usr/bin/*++
326 %{libdir}/gcc/*/*/cc1plus
327 /usr/share/man/man*/*++*
328 end
329 end
330
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
357 files
358 %{prefix}/lib/cpp
359 %{bindir}/cpp
360 %{mandir}/man1/cpp.1*
361 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1
362 end
363
364 provides = /lib/cpp
365 end
366
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
373
374 files
375 %{libdir}/libgcc*.so.*
376 end
377 end
378
379 package libstdc++
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
386 files
387 %{libdir}/libstdc++*.so.*
388 end
389 end
390
391 package libstdc++-devel
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
400 libstdc++ = %{thisver}
401 end
402
403 files
404 %{includedir}/c++
405 %{libdir}/libstdc++*.so
406 end
407 end
408
409 package libgomp
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.
414 end
415
416 files
417 %{libdir}/libgomp*.so.*
418 end
419 end
420
421 package libmudflap
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
428 files
429 %{libdir}/libmudflap*.so.*
430 end
431 end
432
433 package libmudflap-devel
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
444 libmudflap = %{thisver}
445 end
446
447 files
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
451 end
452 end
453
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
463 %{libdir}/libquadmath*.so.*
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
475 gcc = %{thisver}
476 libquadmath = %{thisver}
477 end
478
479 files
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
483 end
484 end
485 end
486
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
496 gcc = %{thisver}
497 gmp-devel >= 4.1.2-8
498 mpfr-devel >= 2.2.1
499 libmpc-devel >= 0.8.1
500 end
501
502 files
503 %{libdir}/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
504 end
505 end
506
507 package %{name}-debuginfo
508 template DEBUGINFO
509 end
510 end