blob: 5a2ae1ae9b01d1017143fc38222a4e3d750f4a95 (
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
|
require packages/gcc/gcc-common.inc
SECTION = "libs"
DESCRIPTION = "Foreign Function Interface library"
LICENSE = "libffi"
PRIORITY = "optional"
inherit autotools gettext
PR = "r1"
PACKAGES = "${PN}-dbg ${PN} ${PN}-dev"
FILES_${PN} = "${libdir}/libffi.so.*"
FILES_${PN}-dev = "${includedir}/${TARGET_SYS}/ffi* \
${libdir}/libffi.a \
${libdir}/libffi.la \
${libdir}/libffi.so"
GCC_VER = "${@bb.data.getVar('PV',d,1).split('gcc')[1]}"
SRC_URI = "${GNU_MIRROR}/gcc/gcc-${GCC_VER}/gcc-${GCC_VER}.tar.bz2 \
"
MIRRORS_prepend () {
${GNU_MIRROR}/gcc/ http://gcc.get-software.com/releases/
${GNU_MIRROR}/gcc/ http://mirrors.rcn.net/pub/sourceware/gcc/releases/
}
S = "${WORKDIR}/gcc-${GCC_VER}/libffi"
B = "${S}/build.${HOST_SYS}.${TARGET_SYS}"
EXTRA_OECONF = "--with-gnu-ld \
--enable-shared \
--enable-target-optspace \
--enable-languages=c,c++,f77 \
--enable-threads=posix \
--enable-multilib \
--enable-c99 \
--enable-long-long \
--enable-symvers=gnu \
--program-prefix=${TARGET_PREFIX} \
${EXTRA_OECONF_FPU} \
${EXTRA_OECONF_PATHS}"
EXTRA_OECONF_PATHS = "--with-local-prefix=${prefix}/local \
--with-gxx-include-dir=${includedir}/c++/${PV}"
# Build uclibc compilers without cxa_atexit support
EXTRA_OECONF_append_linux = " --enable-__cxa_atexit"
EXTRA_OECONF_append_linux-gnueabi = " --enable-__cxa_atexit"
EXTRA_OECONF_append_linux-uclibc = " --disable-__cxa_atexit"
EXTRA_OECONF_append_linux-uclibcgnueabi = " --disable-__cxa_atexit"
EXTRA_OECONF_FPU = "${@get_gcc_fpu_setting(bb, d)}"
#Somehow gcc doesn't set __SOFTFP__ when passing -mfloatabi=softp :(
TARGET_CC_ARCH_append_armv6 = " -D__SOFTFP__"
TARGET_CC_ARCH_append_armv7a = " -D__SOFTFP__"
do_configure () {
(cd ${S}/.. && gnu-configize) || die "failure running gnu-configize"
oe_runconf
}
do_install_append() {
install_libffi_headers
}
# Separate function which can be disabled in the -native recipe.
install_libffi_headers() {
# follow Debian and move this to $includedir/${TARGET_SYS}
install -d ${D}${includedir}/${TARGET_SYS}
mv ${D}${libdir}/gcc/${TARGET_SYS}/${GCC_VER}/include/ffitarget.h ${D}${includedir}/${TARGET_SYS}
mv ${D}${libdir}/gcc/${TARGET_SYS}/${GCC_VER}/include/ffi.h ${D}${includedir}/${TARGET_SYS}
}
ffi_include = "ffi.h ffitarget.h"
do_stage () {
oe_libinstall -so -C .libs libffi ${STAGING_LIBDIR}
mkdir -p ${STAGING_INCDIR}/
for i in ${ffi_include}; do
install -m 0644 include/$i ${STAGING_INCDIR}/
done
}
|