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