[Edited Message Follows]

>From ba6cdecb93c09e1f218542a3cfbeb63d9141e069 Mon Sep 17 00:00:00 2001

From: Alexander Thoma [email protected] ( [email protected] 
)

Date: Fri, 5 Aug 2022 08:41:09 +0200

Subject: [PATCH] gcc-sanitizers: modify to also build static libs

gcc-sanitizers static-dev can be build for static and dynamic linking. Before 
static-dev package was always empty since static build was not enabled.

Package-dependencies needs to be rearranged since both dev and static-dev need 
the obj-files.

Signed-off-by: Alexander Thoma [email protected] ( 
[email protected] )

Signed-off-by: Florian Wuehr [email protected] ( 
[email protected] )

---

meta/recipes-devtools/gcc/gcc-sanitizers.inc | 43 +++++++++++++++-----

1 file changed, 32 insertions(+), 11 deletions(-)

diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers.inc 
b/meta/recipes-devtools/gcc/gcc-sanitizers.inc

index 668e14a59f..561e8f95b0 100644

--- a/meta/recipes-devtools/gcc/gcc-sanitizers.inc

+++ b/meta/recipes-devtools/gcc/gcc-sanitizers.inc

@@ -6,6 +6,8 @@ LIC_FILES_CHKSUM = "\

file://libsanitizer/LICENSE.TXT;md5=0249c37748936faf5b1efd5789587909 ( 
file://libsanitizer/LICENSE.TXT;md5=0249c37748936faf5b1efd5789587909 ) \

"

+EXTRA_OECONF_append = " --enable-static"

+

EXTRA_OECONF_PATHS = "\

--with-sysroot=/not/exist \

--with-build-sysroot=${STAGING_DIR_TARGET} \

@@ -23,6 +25,8 @@ do_configure () {

sed -i -e 's/hardcode_into_libs=yes/hardcode_into_libs=no/' 
${B}/${TARGET_SYS}/libsanitizer/libtool

# Link to the sysroot's libstdc++ instead of one gcc thinks it just built

sed -i -e '/LIBSTDCXX_RAW_CXX_\(CXXFLAGS\|LDFLAGS\)\s*=/d' 
${B}/${TARGET_SYS}/libsanitizer/*/Makefile

+    # Enable static build

+    sed -i -e 's/build_old_libs=no/build_old_libs=yes/' 
${B}/${TARGET_SYS}/libsanitizer/libtool

}

EXTRACONFFUNCS += "extract_stashed_builddir"

do_configure[depends] += "${COMPILERDEP}"

@@ -53,16 +57,25 @@ BBCLASSEXTEND = "nativesdk"

PACKAGES = "${PN} ${PN}-dbg"

PACKAGES += "libasan libubsan liblsan libtsan"

PACKAGES += "libasan-dev libubsan-dev liblsan-dev libtsan-dev"

+PACKAGES += "libasan-obj libubsan-obj liblsan-obj libtsan-obj"

PACKAGES += "libasan-staticdev libubsan-staticdev liblsan-staticdev 
libtsan-staticdev"

RDEPENDS_libasan += "libstdc++"

RDEPENDS_libubsan += "libstdc++"

RDEPENDS_liblsan += "libstdc++"

RDEPENDS_libtsan += "libstdc++"

-RDEPENDS_libasan-dev += "${PN}"

-RDEPENDS_libubsan-dev += "${PN}"

-RDEPENDS_liblsan-dev += "${PN}"

-RDEPENDS_libtsan-dev += "${PN}"

+RDEPENDS_libasan-dev += "${PN} libasan-obj"

+RDEPENDS_libubsan-dev += "${PN} libubsan-obj"

+RDEPENDS_liblsan-dev += "${PN} liblsan-obj"

+RDEPENDS_libtsan-dev += "${PN} libtsan-obj"

+RDEPENDS_libasan-staticdev += "${PN} libasan-obj"

+RDEPENDS_libubsan-staticdev += "${PN} libubsan-obj"

+RDEPENDS_liblsan-staticdev += "${PN} liblsan-obj"

+RDEPENDS_libtsan-staticdev += "${PN} libtsan-obj"

+ALLOW_EMPTY_libasan-obj = "1"

+ALLOW_EMPTY_libubsan-obj = "1"

+ALLOW_EMPTY_liblsan-obj = "1"

+ALLOW_EMPTY_libtsan-obj = "1"

RRECOMMENDS_${PN} += "libasan libubsan"

RRECOMMENDS_${PN}_append_x86 = " liblsan"

RRECOMMENDS_${PN}_append_x86-64 = " liblsan libtsan"

@@ -79,34 +92,42 @@ COMPATIBLE_HOST = 
'(x86_64|i.86|powerpc|sparc|s390|arm|aarch64).*-linux'

COMPATIBLE_HOST_libc-musl = 'null'

FILES_libasan += "${libdir}/libasan.so.*"

-FILES_libasan-dev += "\

+FILES_libasan-obj += "\

${libdir}/libasan_preinit.o \

-    ${libdir}/libasan.so \

${libdir}/libasan.la \

"

+FILES_libasan-dev += "\

+    ${libdir}/libasan.so \

+"

FILES_libasan-staticdev += "${libdir}/libasan.a"

FILES_libubsan += "${libdir}/libubsan.so.*"

+FILES_libubsan-obj += "\

+    ${libdir}/libubsan.la \

+"

FILES_libubsan-dev += "\

${libdir}/libubsan.so \

-    ${libdir}/libubsan.la \

"

FILES_libubsan-staticdev += "${libdir}/libubsan.a"

FILES_liblsan += "${libdir}/liblsan.so.*"

-FILES_liblsan-dev += "\

-    ${libdir}/liblsan.so \

+FILES_liblsan-obj += "\

${libdir}/liblsan.la \

${libdir}/liblsan_preinit.o \

"

+FILES_liblsan-dev += "\

+    ${libdir}/liblsan.so \

+"

FILES_liblsan-staticdev += "${libdir}/liblsan.a"

FILES_libtsan += "${libdir}/libtsan.so.*"

-FILES_libtsan-dev += "\

-    ${libdir}/libtsan.so \

+FILES_libtsan-obj += "\

${libdir}/libtsan.la \

${libdir}/libtsan_*.o \

"

+FILES_libtsan-dev += "\

+    ${libdir}/libtsan.so \

+"

FILES_libtsan-staticdev += "${libdir}/libtsan.a"

FILES_${PN} = "${libdir}/*.spec 
${libdir}/gcc/${TARGET_SYS}/${BINV}/include/sanitizer/*.h"

--

2.25.1

Kind regards

*Alexander Thoma*
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#170339): 
https://lists.openembedded.org/g/openembedded-core/message/170339
Mute This Topic: https://lists.openembedded.org/mt/93496465/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to