summaryrefslogtreecommitdiff
path: root/gcc/gcc-uclibc_3.3.2.oe
blob: bfa276b1c4b4ff79504be0c05f72f9c6398719d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
include gcc_${PV}.oe
FILESDIR = ${@os.path.dirname(oe.data.getVar('FILE',d,1))}/gcc-${PV}

DESCRIPTION := The GNU cc and gcc C compilers (uclibc).
LICENSE := GPL
MAINTAINER := Gerald Britton <gbritton@doomcom.org>

# This will ONLY build to this target
TARGET_VENDOR := -uclibc
TARGET_SYS := ${TARGET_ARCH}${TARGET_VENDOR}-${TARGET_OS}
TARGET_PREFIX := ${TARGET_SYS}-

DEPENDS := virtual/${HOST_PREFIX}binutils virtual/${HOST_PREFIX}gcc \
           uclibc patcher

PACKAGES = ${PN} ${PN}-symlinks \
           ${PN}-c++ ${PN}-c++-symlinks \
           uclibc-libgcc uclibc-libstdc++ uclibc-libstdc++-dev \
           ${PN}-doc

# The rest of these are properly defined in gcc_${PV}.oe
FILES_uclibc-libgcc = ${FILES_libgcc}
FILES_uclibc-libstdc++ = ${FILES_libstdc++}
FILES_uclibc-libstdc++-dev = \
	${includedir}/c++/${PV}-uclibc \
	${libdir}/libstdc++.so \
	${libdir}/libstdc++.la \
	${libdir}/libstdc++.a \
	${libdir}/libsupc++.la \
	${libdir}/libsupc++.a

SRC_URI_append = " file://${FILESDIR}/gcc-001-disable-mathf.patch;patch=1 \
                   file://${FILESDIR}/gcc-006-include-search.patch;patch=1 \
                   file://${FILESDIR}/gcc-810-libstd++-locale.patch;patch=1"

EXTRA_OECONF := --with-local-prefix=/usr/local \
                --with-gxx-include-dir=${includedir}/c++/${PV}-uclibc \
                --enable-target-optspace \
                --disable-nls \
                --with-gnu-ld \
                --disable-__cxa_atexit \
                --enable-languages=c,c++ \
                --enable-shared \
                --enable-multilib \
                --program-prefix=${TARGET_PREFIX}

gccbuild_do_patch () {
	#
	# Hack things to use the correct shared lib loader
	#
	LIST=`grep -lr -- "-dynamic-linker.*\.so[\.0-9]*" .`
	if [ -n "$LIST" ] ; then
		perl -i -p -e "s,-dynamic-linker.*\.so[\.0-9]*},-dynamic-linker /lib/ld-uClibc.so.0},;" $LIST
	fi

	#
	# Prevent system glibc start files from leaking in uninvited...
	#
	perl -i -p -e "s,standard_startfile_prefix_1 = \".*,standard_startfile_prefix_1 = \"${CROSS_DIR}/${TARGET_SYS}/lib/\";,;" gcc/gcc.c
	perl -i -p -e "s,standard_startfile_prefix_2 = \".*,standard_startfile_prefix_2 = \"${CROSS_DIR}/${TARGET_SYS}/usr/lib/\";,;" gcc/gcc.c

	#
	# Prevent system glibc include files from leaking in uninvited...
	#
	perl -i -p -e "s,^NATIVE_SYSTEM_HEADER_DIR.*,NATIVE_SYSTEM_HEADER_DIR=${CROSS_DIR}/${TARGET_SYS}/include,;" gcc/Makefile.in
	perl -i -p -e "s,^CROSS_SYSTEM_HEADER_DIR.*,CROSS_SYSTEM_HEADER_DIR=${CROSS_DIR}/${TARGET_SYS}/include,;" gcc/Makefile.in
	perl -i -p -e "s,^#define.*STANDARD_INCLUDE_DIR.*,#define STANDARD_INCLUDE_DIR \"${CROSS_DIR}/${TARGET_SYS}/include\",;" gcc/cppdefault.h

	#
	# Prevent system glibc libraries from being found by collect2 
	# when it calls locatelib() and rummages about the system looking 
	# for libraries with the correct name...
	#
	perl -i -p -e "s,\"/lib,\"${CROSS_DIR}/${TARGET_SYS}/lib,g;" \
		gcc/collect2.c
	perl -i -p -e "s,\"/usr/,\"${CROSS_DIR}/${TARGET_SYS}/usr/,g;" \
		gcc/collect2.c

	#
	# Prevent gcc from using the unwind-dw2-fde-glibc code
	#
	perl -i -p -e "s,^#ifndef inhibit_libc,#define inhibit_libc\n#ifndef inhibit_libc,g;" gcc/unwind-dw2-fde-glibc.c
}

python do_patch () {
	oe.build.exec_func('base_do_patch', d)
	oe.build.exec_func('gccbuild_do_patch', d)
}