diff options
Diffstat (limited to 'meta/classes-recipe/binconfig.bbclass')
-rw-r--r-- | meta/classes-recipe/binconfig.bbclass | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/meta/classes-recipe/binconfig.bbclass b/meta/classes-recipe/binconfig.bbclass new file mode 100644 index 0000000000..427dba7f1f --- /dev/null +++ b/meta/classes-recipe/binconfig.bbclass | |||
@@ -0,0 +1,60 @@ | |||
1 | # | ||
2 | # Copyright OpenEmbedded Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: MIT | ||
5 | # | ||
6 | |||
7 | FILES:${PN}-dev += "${bindir}/*-config" | ||
8 | |||
9 | # The namespaces can clash here hence the two step replace | ||
10 | def get_binconfig_mangle(d): | ||
11 | s = "-e ''" | ||
12 | if not bb.data.inherits_class('native', d): | ||
13 | optional_quote = r"\(\"\?\)" | ||
14 | s += " -e 's:=%s${base_libdir}:=\\1OEBASELIBDIR:;'" % optional_quote | ||
15 | s += " -e 's:=%s${libdir}:=\\1OELIBDIR:;'" % optional_quote | ||
16 | s += " -e 's:=%s${includedir}:=\\1OEINCDIR:;'" % optional_quote | ||
17 | s += " -e 's:=%s${datadir}:=\\1OEDATADIR:'" % optional_quote | ||
18 | s += " -e 's:=%s${prefix}/:=\\1OEPREFIX/:'" % optional_quote | ||
19 | s += " -e 's:=%s${exec_prefix}/:=\\1OEEXECPREFIX/:'" % optional_quote | ||
20 | s += " -e 's:-L${libdir}:-LOELIBDIR:;'" | ||
21 | s += " -e 's:-I${includedir}:-IOEINCDIR:;'" | ||
22 | s += " -e 's:-L${WORKDIR}:-LOELIBDIR:'" | ||
23 | s += " -e 's:-I${WORKDIR}:-IOEINCDIR:'" | ||
24 | s += " -e 's:OEBASELIBDIR:${STAGING_BASELIBDIR}:;'" | ||
25 | s += " -e 's:OELIBDIR:${STAGING_LIBDIR}:;'" | ||
26 | s += " -e 's:OEINCDIR:${STAGING_INCDIR}:;'" | ||
27 | s += " -e 's:OEDATADIR:${STAGING_DATADIR}:'" | ||
28 | s += " -e 's:OEPREFIX:${STAGING_DIR_HOST}${prefix}:'" | ||
29 | s += " -e 's:OEEXECPREFIX:${STAGING_DIR_HOST}${exec_prefix}:'" | ||
30 | if d.getVar("OE_BINCONFIG_EXTRA_MANGLE", False): | ||
31 | s += d.getVar("OE_BINCONFIG_EXTRA_MANGLE") | ||
32 | |||
33 | return s | ||
34 | |||
35 | BINCONFIG_GLOB ?= "*-config" | ||
36 | |||
37 | PACKAGE_PREPROCESS_FUNCS += "binconfig_package_preprocess" | ||
38 | |||
39 | binconfig_package_preprocess () { | ||
40 | for config in `find ${PKGD} -type f -name '${BINCONFIG_GLOB}'`; do | ||
41 | sed -i \ | ||
42 | -e 's:${STAGING_BASELIBDIR}:${base_libdir}:g;' \ | ||
43 | -e 's:${STAGING_LIBDIR}:${libdir}:g;' \ | ||
44 | -e 's:${STAGING_INCDIR}:${includedir}:g;' \ | ||
45 | -e 's:${STAGING_DATADIR}:${datadir}:' \ | ||
46 | -e 's:${STAGING_DIR_HOST}${prefix}:${prefix}:' \ | ||
47 | $config | ||
48 | done | ||
49 | } | ||
50 | |||
51 | SYSROOT_PREPROCESS_FUNCS += "binconfig_sysroot_preprocess" | ||
52 | |||
53 | binconfig_sysroot_preprocess () { | ||
54 | for config in `find ${S} -type f -name '${BINCONFIG_GLOB}'` `find ${B} -type f -name '${BINCONFIG_GLOB}'`; do | ||
55 | configname=`basename $config` | ||
56 | install -d ${SYSROOT_DESTDIR}${bindir_crossscripts} | ||
57 | sed ${@get_binconfig_mangle(d)} $config > ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname | ||
58 | chmod u+x ${SYSROOT_DESTDIR}${bindir_crossscripts}/$configname | ||
59 | done | ||
60 | } | ||