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