diff options
Diffstat (limited to 'meta/recipes-support/icu/icu_69.1.bb')
-rw-r--r-- | meta/recipes-support/icu/icu_69.1.bb | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/meta/recipes-support/icu/icu_69.1.bb b/meta/recipes-support/icu/icu_69.1.bb new file mode 100644 index 0000000000..bfeea8d2f0 --- /dev/null +++ b/meta/recipes-support/icu/icu_69.1.bb | |||
@@ -0,0 +1,150 @@ | |||
1 | SUMMARY = "International Component for Unicode libraries" | ||
2 | DESCRIPTION = "The International Component for Unicode (ICU) is a mature, \ | ||
3 | portable set of C/C++ and Java libraries for Unicode support, software \ | ||
4 | internationalization (I18N) and globalization (G11N), giving applications the \ | ||
5 | same results on all platforms." | ||
6 | HOMEPAGE = "http://site.icu-project.org/" | ||
7 | |||
8 | LICENSE = "ICU" | ||
9 | DEPENDS = "icu-native" | ||
10 | DEPENDS_class-native = "" | ||
11 | |||
12 | CVE_PRODUCT = "international_components_for_unicode" | ||
13 | |||
14 | S = "${WORKDIR}/icu/source" | ||
15 | SPDX_S = "${WORKDIR}/icu" | ||
16 | STAGING_ICU_DIR_NATIVE = "${STAGING_DATADIR_NATIVE}/${BPN}/${PV}" | ||
17 | |||
18 | BINCONFIG = "${bindir}/icu-config" | ||
19 | |||
20 | ICU_MAJOR_VER = "${@d.getVar('PV').split('.')[0]}" | ||
21 | |||
22 | inherit autotools pkgconfig binconfig multilib_script | ||
23 | |||
24 | MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/icu-config" | ||
25 | |||
26 | # ICU needs the native build directory as an argument to its --with-cross-build option when | ||
27 | # cross-compiling. Taken the situation that different builds may share a common sstate-cache | ||
28 | # into consideration, the native build directory needs to be staged. | ||
29 | EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE}" | ||
30 | EXTRA_OECONF_class-native = "" | ||
31 | EXTRA_OECONF_class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE}" | ||
32 | |||
33 | EXTRA_OECONF_append_class-target = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' --with-data-packaging=archive', '', d)}" | ||
34 | TARGET_CXXFLAGS_append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${PV}\\""', '', d)}" | ||
35 | |||
36 | ASNEEDED = "" | ||
37 | |||
38 | do_compile_prepend_class-target () { | ||
39 | # Make sure certain build host references do not end up being compiled | ||
40 | # in the image. This only affects libicutu and icu-dbg | ||
41 | sed \ | ||
42 | -e 's,DU_BUILD=,DU_BUILD_unused=,g' \ | ||
43 | -e '/^CPPFLAGS.*/ s,--sysroot=${STAGING_DIR_TARGET},,g' \ | ||
44 | -i ${B}/tools/toolutil/Makefile | ||
45 | } | ||
46 | |||
47 | PREPROCESS_RELOCATE_DIRS = "${datadir}/${BPN}/${PV}" | ||
48 | do_install_append_class-native() { | ||
49 | mkdir -p ${D}/${STAGING_ICU_DIR_NATIVE}/config | ||
50 | cp -r ${B}/config/icucross.mk ${D}/${STAGING_ICU_DIR_NATIVE}/config | ||
51 | cp -r ${B}/config/icucross.inc ${D}/${STAGING_ICU_DIR_NATIVE}/config | ||
52 | cp -r ${B}/lib ${D}/${STAGING_ICU_DIR_NATIVE} | ||
53 | cp -r ${B}/bin ${D}/${STAGING_ICU_DIR_NATIVE} | ||
54 | cp -r ${B}/tools ${D}/${STAGING_ICU_DIR_NATIVE} | ||
55 | } | ||
56 | |||
57 | do_install_append_class-target() { | ||
58 | # The native pkgdata can not generate the correct data file. | ||
59 | # Use icupkg to re-generate it. | ||
60 | if [ "${SITEINFO_ENDIANNESS}" = "be" ] ; then | ||
61 | rm -f ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat | ||
62 | icupkg -tb ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat ${D}/${datadir}/${BPN}/${PV}/icudt${ICU_MAJOR_VER}b.dat | ||
63 | fi | ||
64 | |||
65 | # Remove build host references... | ||
66 | sed -i \ | ||
67 | -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \ | ||
68 | -e 's|${DEBUG_PREFIX_MAP}||g' \ | ||
69 | -e 's:${HOSTTOOLS_DIR}/::g' \ | ||
70 | ${D}/${bindir}/icu-config ${D}/${libdir}/${BPN}/${PV}/Makefile.inc \ | ||
71 | ${D}/${libdir}/${BPN}/${PV}/pkgdata.inc | ||
72 | } | ||
73 | |||
74 | PACKAGES =+ "libicudata libicuuc libicui18n libicutu libicuio" | ||
75 | |||
76 | FILES_${PN}-dev += "${libdir}/${BPN}/" | ||
77 | |||
78 | FILES_libicudata = "${libdir}/libicudata.so.*" | ||
79 | FILES_libicuuc = "${libdir}/libicuuc.so.*" | ||
80 | FILES_libicui18n = "${libdir}/libicui18n.so.*" | ||
81 | FILES_libicutu = "${libdir}/libicutu.so.*" | ||
82 | FILES_libicuio = "${libdir}/libicuio.so.*" | ||
83 | |||
84 | BBCLASSEXTEND = "native nativesdk" | ||
85 | |||
86 | LIC_FILES_CHKSUM = "file://../LICENSE;md5=002d2fdc32d17f0ec06e9a47f2c0c8d0" | ||
87 | |||
88 | def icu_download_version(d): | ||
89 | pvsplit = d.getVar('PV').split('.') | ||
90 | return pvsplit[0] + "_" + pvsplit[1] | ||
91 | |||
92 | def icu_download_folder(d): | ||
93 | pvsplit = d.getVar('PV').split('.') | ||
94 | return pvsplit[0] + "-" + pvsplit[1] | ||
95 | |||
96 | ICU_PV = "${@icu_download_version(d)}" | ||
97 | ICU_FOLDER = "${@icu_download_folder(d)}" | ||
98 | |||
99 | # http://errors.yoctoproject.org/Errors/Details/20486/ | ||
100 | ARM_INSTRUCTION_SET_armv4 = "arm" | ||
101 | ARM_INSTRUCTION_SET_armv5 = "arm" | ||
102 | |||
103 | BASE_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-src.tgz" | ||
104 | DATA_SRC_URI = "https://github.com/unicode-org/icu/releases/download/release-${ICU_FOLDER}/icu4c-${ICU_PV}-data.zip" | ||
105 | SRC_URI = "${BASE_SRC_URI};name=code \ | ||
106 | ${DATA_SRC_URI};name=data \ | ||
107 | file://filter.json \ | ||
108 | file://fix-install-manx.patch \ | ||
109 | file://0001-icu-Added-armeb-support.patch \ | ||
110 | " | ||
111 | |||
112 | SRC_URI_append_class-target = "\ | ||
113 | file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \ | ||
114 | " | ||
115 | SRC_URI[code.sha256sum] = "4cba7b7acd1d3c42c44bb0c14be6637098c7faf2b330ce876bc5f3b915d09745" | ||
116 | SRC_URI[data.sha256sum] = "4fc2d8cfc3343673123586fca3967404abd4e346fba5515829204533b3bae4bf" | ||
117 | |||
118 | UPSTREAM_CHECK_REGEX = "icu4c-(?P<pver>\d+(_\d+)+)-src" | ||
119 | UPSTREAM_CHECK_URI = "https://github.com/unicode-org/icu/releases" | ||
120 | |||
121 | EXTRA_OECONF_append_libc-musl = " ac_cv_func_strtod_l=no" | ||
122 | |||
123 | PACKAGECONFIG ?= "" | ||
124 | PACKAGECONFIG[make-icudata] = ",,," | ||
125 | |||
126 | do_make_icudata_class-target () { | ||
127 | ${@bb.utils.contains('PACKAGECONFIG', 'make-icudata', '', 'exit 0', d)} | ||
128 | cd ${S} | ||
129 | rm -rf data | ||
130 | cp -a ${WORKDIR}/data . | ||
131 | AR='${BUILD_AR}' \ | ||
132 | CC='${BUILD_CC}' \ | ||
133 | CPP='${BUILD_CPP}' \ | ||
134 | CXX='${BUILD_CXX}' \ | ||
135 | RANLIB='${BUILD_RANLIB}' \ | ||
136 | CFLAGS='${BUILD_CFLAGS}' \ | ||
137 | CPPFLAGS='${BUILD_CPPFLAGS}' \ | ||
138 | CXXFLAGS='${BUILD_CXXFLAGS}' \ | ||
139 | LDFLAGS='${BUILD_LDFLAGS}' \ | ||
140 | ICU_DATA_FILTER_FILE=${WORKDIR}/filter.json \ | ||
141 | ./runConfigureICU Linux --with-data-packaging=archive | ||
142 | oe_runmake | ||
143 | install -Dm644 ${S}/data/out/icudt${ICU_MAJOR_VER}l.dat ${S}/data/in/icudt${ICU_MAJOR_VER}l.dat | ||
144 | } | ||
145 | |||
146 | do_make_icudata() { | ||
147 | : | ||
148 | } | ||
149 | |||
150 | addtask make_icudata before do_configure after do_patch | ||