blob: f9c174d9c1e5f1d669b5e8c10128bcfe1d3fe9e2 [file] [log] [blame]
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001# Copyright (C) 2014 Khem Raj <raj.khem@gmail.com>
2# Released under the MIT license (see COPYING.MIT for the terms)
3
4require musl.inc
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08005inherit linuxloader
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006
Andrew Geisslerc926e172021-05-07 16:11:35 -05007SRCREV = "aad50fcd791e009961621ddfbe3d4c245fd689a3"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008
Andrew Geisslerd1e89492021-02-12 15:35:20 -06009BASEVER = "1.2.2"
Brad Bishop19323692019-04-05 15:28:33 -040010
11PV = "${BASEVER}+git${SRCPV}"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012
13# mirror is at git://github.com/kraj/musl.git
14
15SRC_URI = "git://git.musl-libc.org/musl \
16 file://0001-Make-dynamic-linker-a-relative-symlink-to-libc.patch \
Brad Bishop19323692019-04-05 15:28:33 -040017 file://0002-ldso-Use-syslibdir-and-libdir-as-default-pathes-to-l.patch \
William A. Kennington IIIac69b482021-06-02 12:28:27 -070018 file://0001-riscv-Rename-__NR_fstatat-__NR_newfstatat.patch \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050019 "
20
21S = "${WORKDIR}/git"
22
Brad Bishop19323692019-04-05 15:28:33 -040023PROVIDES += "virtual/libc virtual/libiconv virtual/libintl virtual/crypt"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050024
25DEPENDS = "virtual/${TARGET_PREFIX}binutils \
Brad Bishop19323692019-04-05 15:28:33 -040026 virtual/${TARGET_PREFIX}gcc \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050027 libgcc-initial \
28 linux-libc-headers \
29 bsd-headers \
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080030 libssp-nonshared \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050031 "
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080032GLIBC_LDSO = "${@get_glibc_loader(d)}"
Andrew Geissler82c905d2020-04-13 13:39:40 -050033MUSL_LDSO_ARCH = "${@get_musl_loader_arch(d)}"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050034
35export CROSS_COMPILE="${TARGET_PREFIX}"
36
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050037LDFLAGS += "-Wl,-soname,libc.so"
38
Brad Bishopd7bf8c12018-02-25 22:55:05 -050039# When compiling for Thumb or Thumb2, frame pointers _must_ be disabled since the
40# Thumb frame pointer in r7 clashes with musl's use of inline asm to make syscalls
41# (where r7 is used for the syscall NR). In most cases, frame pointers will be
42# disabled automatically due to the optimisation level, but append an explicit
43# -fomit-frame-pointer to handle cases where optimisation is set to -O0 or frame
44# pointers have been enabled by -fno-omit-frame-pointer earlier in CFLAGS, etc.
Patrick Williams213cb262021-08-07 19:21:33 -050045CFLAGS:append:arm = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
Brad Bishopd7bf8c12018-02-25 22:55:05 -050046
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050047CONFIGUREOPTS = " \
48 --prefix=${prefix} \
49 --exec-prefix=${exec_prefix} \
50 --bindir=${bindir} \
51 --libdir=${libdir} \
52 --includedir=${includedir} \
Andrew Geissler82c905d2020-04-13 13:39:40 -050053 --syslibdir=/lib \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050054"
55
56do_configure() {
57 ${S}/configure ${CONFIGUREOPTS}
58}
59
60do_compile() {
61 oe_runmake
62}
63
64do_install() {
65 oe_runmake install DESTDIR='${D}'
Andrew Geissler90fd73c2021-03-05 15:25:55 -060066 install -d ${D}${bindir} ${D}/lib ${D}${sysconfdir}
Andrew Geissler82c905d2020-04-13 13:39:40 -050067 echo "${base_libdir}" > ${D}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path
68 echo "${libdir}" >> ${D}${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path
Brad Bishop08902b02019-08-20 09:16:51 -040069 rm -f ${D}${bindir}/ldd ${D}${GLIBC_LDSO}
Brad Bishop6e60e8b2018-02-01 10:27:11 -050070 lnr ${D}${libdir}/libc.so ${D}${bindir}/ldd
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050071}
72
Patrick Williams213cb262021-08-07 19:21:33 -050073FILES:${PN} += "/lib/ld-musl-${MUSL_LDSO_ARCH}.so.1 ${sysconfdir}/ld-musl-${MUSL_LDSO_ARCH}.path"
74FILES:${PN}-staticdev = "${libdir}/libc.a"
75FILES:${PN}-dev =+ "${libdir}/libcrypt.a ${libdir}/libdl.a ${libdir}/libm.a \
Andrew Geissler82c905d2020-04-13 13:39:40 -050076 ${libdir}/libpthread.a ${libdir}/libresolv.a \
77 ${libdir}/librt.a ${libdir}/libutil.a ${libdir}/libxnet.a \
78 "
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080079
Patrick Williams213cb262021-08-07 19:21:33 -050080RDEPENDS:${PN}-dev += "linux-libc-headers-dev bsd-headers-dev libssp-nonshared-staticdev"
81RPROVIDES:${PN}-dev += "libc-dev virtual-libc-dev"
82RPROVIDES:${PN} += "ldd libsegfault rtld(GNU_HASH)"
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050083
84LEAD_SONAME = "libc.so"
Patrick Williams213cb262021-08-07 19:21:33 -050085INSANE_SKIP:${PN}-dev = "staticdev"
86INSANE_SKIP:${PN} = "libdir"
Andrew Geissler09036742021-06-25 14:25:14 -050087
88UPSTREAM_CHECK_COMMITS = "1"