]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blob - gcc/gcc.nm
gcc: Replace libgcc-devel package correctly.
[people/arne_f/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.2
11 release = 5
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.0-piepatches-20110407.patch
44
45 build
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
56 libmpc-devel
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
67 # Build libquadmath (only on x86).
68 build_libquadmath = 0
69
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
76
77 build_libquadmath = 1
78 end
79
80 if "%{DISTRO_ARCH}" == "i686"
81 configure_options = --with-arch=%{DISTRO_ARCH} --with-tune=generic
82
83 build_libquadmath = 1
84 end
85
86 if "%{DISTRO_ARCH}" == "armv5tel"
87 configure_options += --disable-sjlj-exceptions
88
89 configure_options += --with-float=soft
90 end
91
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
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
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
159 ./contrib/gcc_update --touch
160 end
161
162 build
163 cd %{DIR_SRC}/gcc-build
164
165 # Modify CFLAGS
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')
169 CFLAGS=$(echo ${CFLAGS} | sed -e 's/-march=i.86//g')
170 CFLAGS=$(echo ${CFLAGS} | sed -e 's/ -pipe / /g')
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} \
180 --prefix=/usr \
181 --libexecdir=/usr/lib \
182 --mandir=/usr/share/man \
183 --enable-esp \
184 --enable-shared \
185 --enable-threads=posix \
186 --enable-__cxa_atexit \
187 --enable-clocale=gnu \
188 --enable-languages=c,c++,lto \
189 --enable-bootstrap \
190 --enable-checking=release \
191 --disable-werror \
192 --disable-libssp \
193 --disable-static \
194 --with-system-zlib \
195 --with-bugurl=http://bugtracker.ipfire.org \
196 --disable-libunwind-exceptions \
197 --enable-gnu-unique-object \
198 --enable-linker-build-id \
199 %{configure_options}
200
201 # GCC does not support a parallel build.
202 make profiledbootstrap BOOT_CFLAGS="${CFLAGS}"
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
214 # Check if the installation path exists.
215 FULLPATH="%{BUILDROOT}/usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}"
216 [ -d "${FULLPATH}" ] || exit 1
217
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
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.0.0 ${FULLPATH}/libquadmath.so
245 chmod 755 %{BUILDROOT}/usr/lib/libquadmath.so.0.*
246 fi
247 end
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
253 end
254
255 packages
256 package %{name}
257 groups += Build
258
259 requires
260 binutils>=%{required_binutils_version}
261 glibc-devel
262 gmp-devel
263 cpp=%{thisver}
264 libgcc=%{thisver}
265 libgomp=%{thisver}
266 end
267
268 # We do not ship libgcc-devel anymore.
269 provides += libgcc-devel=%{thisver}
270 obsoletes += libgcc-devel<%{thisver}
271
272 if "%{build_cloog_ppl}" == "1"
273 requires += cloog-ppl>=0.15
274 end
275 end
276
277 package %{name}-c++
278 summary = C++ support for GCC.
279 description
280 This package adds C++ support to the GNU Compiler Collection.
281 It includes support for most of the current C++ specification,
282 including templates and exception handling.
283 end
284
285 requires
286 gcc=%{thisver}
287 libstdc++=%{thisver}
288 libstdc++-devel=%{thisver}
289 end
290
291 files
292 /usr/bin/*++
293 /usr/lib/gcc/*/*/cc1plus
294 /usr/share/man/man*/*++*
295 end
296 end
297
298 package cpp
299 summary = The C Preprocessor.
300 description
301 Cpp is the GNU C-Compatible Compiler Preprocessor.
302 Cpp is a macro processor which is used automatically
303 by the C compiler to transform your program before actual
304 compilation. It is called a macro processor because it allows
305 you to define macros, abbreviations for longer
306 constructs.
307
308 The C preprocessor provides four separate functionalities: the
309 inclusion of header files (files of declarations that can be
310 substituted into your program); macro expansion (you can define macros,
311 and the C preprocessor will replace the macros with their definitions
312 throughout the program); conditional compilation (using special
313 preprocessing directives, you can include or exclude parts of the
314 program according to various conditions); and line control (if you use
315 a program to combine or rearrange source files into an intermediate
316 file which is then compiled, you can use line control to inform the
317 compiler about where each source line originated).
318
319 You should install this package if you are a C programmer and you use
320 macros.
321 end
322 group = Development/Languages
323
324 files
325 /lib/cpp
326 /usr/bin/cpp
327 /usr/share/man/man1/cpp.1*
328 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/cc1
329 end
330 end
331
332 package libgcc
333 summary = GCC shared support library.
334 description
335 This package contains GCC shared support library which is needed
336 e.g. for exception handling support.
337 end
338
339 files
340 /lib/libgcc*.so.*
341 end
342 end
343
344 package libstdc++
345 summary = GNU Standard C++ Library.
346 description
347 The libstdc++ package contains a rewritten standard compliant GCC Standard
348 C++ Library.
349 end
350
351 files
352 /usr/lib/libstdc++*.so.*
353 end
354 end
355
356 package libstdc++-devel
357 summary = Header files and libraries for C++ development.
358 description
359 This is the GNU implementation of the standard C++ libraries. This
360 package includes the header files and libraries needed for C++
361 development. This includes rewritten implementation of STL.
362 end
363
364 requires
365 libstdc++=%{thisver}
366 end
367
368 files
369 /usr/include/c++
370 /usr/lib/libstdc++*.so
371 end
372 end
373
374 package libgomp
375 summary = GCC OpenMP v3.0 shared support library.
376 description
377 This package contains GCC shared support library which is needed
378 for OpenMP v3.0 support.
379 end
380
381 files
382 /usr/lib/libgomp*.so.*
383 end
384 end
385
386 package libmudflap
387 summary = GCC mudflap shared support library.
388 description
389 This package contains GCC shared support library which is needed
390 for mudflap support.
391 end
392
393 files
394 /usr/lib/libmudflap*.so.*
395 end
396 end
397
398 package libmudflap-devel
399 summary = Development files for GCC mudflap support.
400 description
401 This package contains headers for building mudflap-instrumented programs.
402
403 To instrument a non-threaded program, add -fmudflap
404 option to GCC and when linking add -lmudflap, for threaded programs
405 also add -fmudflapth and -lmudflapth.
406 end
407
408 requires
409 libmudflap=%{thisver}
410 end
411
412 files
413 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/mf-runtime.h
414 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflap.so
415 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/libmudflapth.so
416 end
417 end
418
419 if "%{build_libquadmath}" == "1"
420 package libquadmath
421 summary = GCC __float128 shared support library.
422 description
423 This package contains GCC shared support library which is needed
424 for __float128 math support and for Fortran REAL*16 support.
425 end
426
427 files
428 /usr/lib/libquadmath*.so.*
429 end
430 end
431
432 package libquadmath-devel
433 summary = Development files for GCC __float128 support.
434 description
435 This package contains headers for building Fortran programs using
436 REAL*16 and programs using __float128 math.
437 end
438
439 requires
440 gcc=%{thisver}
441 libquadmath=%{thisver}
442 end
443
444 files
445 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath.h
446 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/include/quadmath_weak.h
447 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/libquadmath.so
448 end
449 end
450 end
451
452 package gcc-plugin-devel
453 summary = Support for compiling GCC plugins.
454 description
455 This package contains header files and other support files
456 for compiling GCC plugins. The GCC plugin ABI is currently
457 not stable, so plugins must be rebuilt any time GCC is updated.
458 end
459
460 requires
461 gcc=%{thisver}
462 gmp-devel>=4.1.2-8
463 mpfr-devel>=2.2.1
464 libmpc-devel>=0.8.1
465 end
466
467 files
468 /usr/lib/gcc/%{DISTRO_BUILDTARGET}/%{version}/plugin
469 end
470 end
471
472 package %{name}-debuginfo
473 template DEBUGINFO
474 end
475 end