You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/sys-libs/basu/files/0002-basu-0.2.0-meson-fix-l...

45 lines
1.5 KiB

From c4d9f5aac80d02b7e7447d2eda698e17a245071e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
Date: Tue, 25 Jan 2022 18:36:36 +0100
Subject: [PATCH basu] meson: fix linking on LLD 13/LD 2.37 and older CCs
For compilers that do not support __attribute((retain)),
-z no-start-stop-gc is a requirement.
---
Submitted at: https://lists.sr.ht/~emersion/public-inbox/patches/28722#%3C20220125192953.1781959-1-arsen@aarsen.me%3E
Gentoo bug: https://bugs.gentoo.org/832045
meson.build | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/meson.build b/meson.build
index 1f29690..74e9934 100644
--- a/meson.build
+++ b/meson.build
@@ -101,6 +101,22 @@ if get_option('buildtype') != 'debug'
possible_link_flags += '-Wl,--gc-sections'
endif
+if cc.get_id() in ['gcc', 'clang']
+# XXX(arsen): remember to update with a future meson release
+ has_retain_attr = cc.compiles(
+ '__attribute__((retain)) int x;',
+ args : ['-Werror=attributes'],
+ name : 'compiler supports __attribute__((retain))'
+ )
+
+ if not has_retain_attr and cc.has_link_argument('-Wl,-z,start-stop-gc')
+ possible_link_flags += [
+ '-Wl,-z,nostart-stop-gc'
+ ]
+ endif
+endif
+
+
add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
--
2.34.1