twx-linux/scripts
Tamir Duberstein 0730422bce rust: use host dylib naming convention to support macOS
Because the `macros` crate exposes procedural macros, it must be
compiled as a dynamic library (so it can be loaded by the compiler at
compile-time).

Before this change the resulting artifact was always named
`libmacros.so`, which works on hosts where this matches the naming
convention for dynamic libraries. However the proper name on macOS would
be `libmacros.dylib`.

This turns out to matter even when the dependency is passed with a path
(`--extern macros=path/to/libmacros.so` rather than `--extern macros`)
because rustc uses the file name to infer the type of the library (see
link). This is because there's no way to specify both the path to and
the type of the external library via CLI flags. The compiler could
speculatively parse the file to determine its type, but it does not do
so today.

This means that libraries that match neither rustc's naming convention
for static libraries nor the platform's naming convention for dynamic
libraries are *rejected*.

The only solution I've found is to follow the host platform's naming
convention. This patch does that by querying the compiler to determine
the appropriate name for the artifact. This allows the kernel to build
with CONFIG_RUST=y on macOS.

Link: https://github.com/rust-lang/rust/blob/d829780/compiler/rustc_metadata/src/locator.rs#L728-L752
Tested-by: Daniel Gomez <da.gomez@samsung.com>
Co-developed-by: Fiona Behrens <me@kloenk.dev>
Signed-off-by: Fiona Behrens <me@kloenk.dev>
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
Tested-by: Andreas Hindborg <a.hindborg@kernel.org>
Link: https://lore.kernel.org/r/20241216-b4-dylib-host-macos-v7-1-cfc507681447@gmail.com
[ Added `MAKEFLAGS=`s to avoid jobserver warnings. Removed space.
  Reworded title. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2025-01-10 01:01:24 +01:00
..
atomic locking/atomic: scripts: fix ${atomic}_sub_and_test() kerneldoc 2024-06-05 15:52:34 +02:00
basic fixdep: use xmalloc() 2024-09-01 20:34:49 +09:00
clang-tools
coccinelle scripts/nsdeps: get 'make nsdeps' working again 2024-12-03 08:22:25 -08:00
dtc dt: dt-extract-compatibles: Extract compatibles from function parameters 2024-09-05 10:17:03 -05:00
dummy-tools
gcc-plugins gcc-plugins: randstruct: Remove GCC 4.7 or newer requirement 2024-08-05 14:34:23 -07:00
gdb gdb: lx-symbols: do not error out on monolithic build 2024-11-14 22:51:14 -08:00
genksyms genksyms: reduce indentation in export_symbol() 2024-11-28 08:46:02 +09:00
include scripts: import more list macros 2024-10-07 02:12:27 +09:00
ipe scripts: ipe: polgen: remove redundant close and error exit path 2024-11-19 13:57:03 -08:00
kconfig kconfig: document the positional argument in the help message 2024-11-06 08:46:35 +09:00
ksymoops
mod modpost: Add .irqentry.text to OTHER_SECTIONS 2024-12-08 17:11:34 +09:00
package kbuild: deb-pkg: fix build error with O= 2024-12-08 17:11:34 +09:00
selinux \n 2024-11-21 09:50:18 -08:00
tracing
.gitignore
as-version.sh
asn1_compiler.c
bloat-o-meter
bootgraph.pl
bpf_doc.py bpf: Allow specifying bpf_fastcall attribute for BPF helpers 2024-10-03 17:47:53 -07:00
build-version kbuild: move init/build-version to scripts/ 2024-07-16 01:08:37 +09:00
cc-can-link.sh
cc-version.sh
check_extable.sh
check-git
check-sysctl-docs
check-uapi.sh
check-variable-fonts.sh docs: scripts/check-variable-fonts.sh: Improve commands for detection 2024-05-02 10:14:52 -06:00
checkdeclares.pl
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl - The series "resource: A couple of cleanups" from Andy Shevchenko 2024-11-25 16:09:48 -08:00
checkstack.pl
checksyscalls.sh
checktransupdate.py scripts: fix all issues reported by pylint 2024-07-29 15:34:22 -06:00
checkversion.pl
cleanfile
cleanpatch
coccicheck kbuild: change working directory to external module directory with M= 2024-11-28 08:10:23 +09:00
config
const_structs.checkpatch const_structs.checkpatch: add ctl_table 2024-10-09 13:39:11 +02:00
decode_stacktrace.sh scripts/decode_stacktrace.sh: remove trailing space 2024-11-05 17:12:32 -08:00
decodecode
depmod.sh kbuild: add $(objtree)/ prefix to some in-kernel build artifacts 2024-11-27 09:38:27 +09:00
dev-needs.sh
diffconfig
documentation-file-ref-check
extract_xc3028.pl
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
faddr2line Revert "scripts/faddr2line: Check only two symbols when calculating symbol size" 2024-10-17 15:16:04 -07:00
file-size.sh
find-unused-docs.sh
gcc-x86_32-has-stack-protector.sh kbuild: Fix '-S -c' in x86 stack protector scripts 2024-07-29 03:47:00 +09:00
gcc-x86_64-has-stack-protector.sh kbuild: Fix '-S -c' in x86 stack protector scripts 2024-07-29 03:47:00 +09:00
gen-randstruct-seed.sh
generate_builtin_ranges.awk kbuild: generate offset range data for builtin modules 2024-09-20 09:21:43 +09:00
generate_initcall_order.pl
generate_rust_analyzer.py rust: use host dylib naming convention to support macOS 2025-01-10 01:01:24 +01:00
generate_rust_target.rs kbuild: rust: Enable KASAN support 2024-09-16 18:04:37 +02:00
get_abi.pl
get_dvb_firmware
get_feat.pl
get_maintainer.pl get_maintainer: add --bug option to print bug reporting info 2024-08-26 16:10:12 -06:00
gfp-translate scripts: fix gfp-translate after ___GFP_*_BITS conversion to an enum 2024-09-01 17:59:01 -07:00
git.orderFile
head-object-list.txt openrisc: place exception table at the head of vmlinux 2024-12-10 12:04:19 +00:00
headerdep.pl
headers_install.sh m68k: Avoid CONFIG_COLDFIRE switch in uapi header 2024-05-07 08:55:23 +10:00
insert-sys-cert.c
install.sh kbuild: Create INSTALL_PATH directory if it does not exist 2024-07-20 13:34:54 +09:00
jobserver-exec
kallsyms.c kallsyms: change overflow variable to bool type 2024-09-20 09:21:52 +09:00
Kbuild.include kbuild: add $(objtree)/ prefix to some in-kernel build artifacts 2024-11-27 09:38:27 +09:00
Kconfig.include kbuild: rust: add CONFIG_RUSTC_LLVM_VERSION 2024-10-13 22:22:28 +02:00
kernel-doc scripts/kernel-doc: Get -export option working again 2024-12-11 09:15:26 -07:00
ld-version.sh kbuild: Make ld-version.sh more robust against version string changes 2024-07-15 03:13:32 +09:00
leaking_addresses.pl
Lindent
link-vmlinux.sh Kbuild updates for v6.13 2024-11-30 13:41:50 -08:00
macro_checker.py scripts: add macro_checker script to check unused parameters in macros 2024-09-01 20:43:28 -07:00
make_fit.py scripts/make_fit: Support decomposing DTBs 2024-07-16 01:08:37 +09:00
Makefile scripts: add boot policy generation program 2024-08-20 14:03:39 -04:00
Makefile.asm-headers kbuild: fix rebuild of generic syscall headers 2024-07-18 10:01:55 -07:00
Makefile.autofdo AutoFDO: Enable machine function split optimization for AutoFDO 2024-11-27 09:38:27 +09:00
Makefile.btf kbuild,bpf: Pass make jobs' value to pahole 2024-11-11 20:00:21 -08:00
Makefile.build Kbuild updates for v6.13 2024-11-30 13:41:50 -08:00
Makefile.clang sparc/build: Add SPARC target flags for compiling with clang 2024-11-16 09:52:56 +01:00
Makefile.clean kbuild: change working directory to external module directory with M= 2024-11-28 08:10:23 +09:00
Makefile.compiler kbuild: change working directory to external module directory with M= 2024-11-28 08:10:23 +09:00
Makefile.debug kbuild: rust: use -Zdebuginfo-compression 2024-04-02 17:41:22 +02:00
Makefile.defconf
Makefile.dtbinst kbuild: Install dtb files as 0644 in Makefile.dtbinst 2024-06-26 00:18:57 +09:00
Makefile.dtbs kbuild: move non-boot built-in DTBs to .rodata section 2024-09-30 20:42:52 +09:00
Makefile.extrawarn kbuild: enable -Wcast-function-type-strict unconditionally 2024-05-19 14:36:16 -07:00
Makefile.gcc-plugins
Makefile.headersinst
Makefile.host kbuild: support building external modules in a separate build directory 2024-11-28 08:11:55 +09:00
Makefile.kasan kbuild: rust: Enable KASAN support 2024-09-16 18:04:37 +02:00
Makefile.kcov
Makefile.kcsan
Makefile.kmsan
Makefile.lib kbuild: switch from lz4c to lz4 for compression 2024-11-28 08:11:56 +09:00
Makefile.modfinal kbuild: re-enable KCSAN for autogenerated *.mod.c intermediaries 2024-11-28 08:11:55 +09:00
Makefile.modinst kbuild: remove extmod_prefix, MODORDER, MODULES_NSDEPS variables 2024-11-28 08:11:55 +09:00
Makefile.modpost kbuild: remove extmod_prefix, MODORDER, MODULES_NSDEPS variables 2024-11-28 08:11:55 +09:00
Makefile.package kbuild: rpm-pkg: disable kernel-devel package when cross-compiling 2024-10-31 21:40:46 +09:00
Makefile.propeller kbuild: Fix Propeller build option 2024-11-27 09:38:27 +09:00
Makefile.randstruct
Makefile.ubsan
Makefile.userprogs
Makefile.vdsoinst more s390 updates for 6.10 merge window 2024-05-21 12:09:36 -07:00
Makefile.vmlinux Kbuild updates for v6.13 2024-11-30 13:41:50 -08:00
Makefile.vmlinux_o kbuild: generate offset range data for builtin modules 2024-09-20 09:21:43 +09:00
makelst
markup_oops.pl
min-tool-version.sh rust: upgrade to Rust 1.78.0 2024-05-05 20:17:25 +02:00
misc-check
mkcompile_h
mksysmap kbuild: change scripts/mksysmap into sed script 2024-05-29 16:40:03 +09:00
mkuboot.sh
module-common.c kbuild: compile constant module information only once 2024-09-07 17:24:08 +09:00
module.lds.S Modules changes for v6.13-rc1 2024-11-27 10:20:50 -08:00
modules-check.sh
nsdeps scripts/nsdeps: get 'make nsdeps' working again 2024-12-03 08:22:25 -08:00
objdiff
objdump-func
orc_hash.sh
pahole-version.sh
parse-maintainers.pl
patch-kernel
profile2linkerlist.pl
prune-kernel
recordmcount.c
recordmcount.h
recordmcount.pl
relocs_check.sh
remove-stale-files selinux: move genheaders to security/selinux/ 2024-10-03 16:07:51 -04:00
rust_is_available_bindgen_0_66.h rust: warn about bindgen versions 0.66.0 and 0.66.1 2024-07-10 10:28:52 +02:00
rust_is_available_bindgen_libclang_concat.h rust: warn on bindgen < 0.69.5 and libclang >= 19.1 2024-11-12 21:26:54 +01:00
rust_is_available_bindgen_libclang.h
rust_is_available_test.py rust: warn on bindgen < 0.69.5 and libclang >= 19.1 2024-11-12 21:26:54 +01:00
rust_is_available.sh rust: document bindgen 0.71.0 regression 2025-01-10 00:17:00 +01:00
rustc-llvm-version.sh kbuild: rust: avoid errors with old rustcs without LLVM patch version 2024-10-28 00:27:16 +01:00
rustc-version.sh kbuild: rust: add CONFIG_RUSTC_VERSION 2024-09-05 22:44:18 +02:00
rustdoc_test_builder.rs
rustdoc_test_gen.rs
setlocalversion setlocalversion: add -e option 2024-11-28 08:11:56 +09:00
show_delta
sign-file.c sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 2024-09-20 19:52:48 +03:00
sorttable.c
sorttable.h
spdxcheck-test.sh
spdxcheck.py scripts/spdxcheck: Add count of missing files to stats output 2024-05-04 19:00:54 +02:00
spdxexclude
spelling.txt scripts/spelling.txt: add typo "exprienced" and "rewritting" 2024-11-05 17:12:32 -08:00
sphinx-pre-install scripts: sphinx-pre-install: remove unnecessary double check for $cur_version 2024-09-05 14:32:36 -06:00
split-man.pl
ssl-common.h sign-file,extract-cert: avoid using deprecated ERR_get_error_line() 2024-09-20 19:49:52 +03:00
stackdelta
stackusage
subarch.include scripts: subarch.include: fix SUBARCH on macOS hosts 2024-09-10 13:56:37 +09:00
syscall.tbl fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
syscallhdr.sh
syscallnr.sh
syscalltbl.sh x86/syscall: Mark exit[_group] syscall handlers __noreturn 2024-06-28 15:23:38 +02:00
tags.sh Char/Misc/IIO/Whatever driver subsystem updates for 6.13-rc1 2024-11-29 11:58:27 -08:00
tools-support-relr.sh
unifdef.c scripts/unifdef: avoid constexpr keyword 2024-04-23 00:09:41 +09:00
ver_linux
verify_builtin_ranges.awk scripts: add verifier script for builtin module range data 2024-09-20 09:21:52 +09:00
xen-hypercalls.sh
xz_wrap.sh xz: adjust arch-specific options for better kernel compression 2024-09-01 20:43:27 -07:00