blob: 16d9abf6c7c98730a9b7b4b429452c886faa8bf3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2023 Luca Barbato and Donald Hoskins
include $(TOPDIR)/rules.mk
# rust-values.mk only needs rules.mk variables, so include it before package.mk
# to make RUST_VERSION available for PKG_VERSION.
include $(INCLUDE_DIR)/rust-values.mk
PKG_NAME:=libstd-rust
PKG_VERSION:=$(RUST_VERSION)
PKG_RELEASE:=1
PKG_SOURCE:=rustc-$(RUST_VERSION)-src.tar.xz
PKG_SOURCE_URL:=https://static.rust-lang.org/dist/
PKG_HASH:=$(RUST_SRC_TARBALL_HASH)
PKG_BUILD_DIR:=$(BUILD_DIR)/rustc-$(RUST_VERSION)-src
PKG_CONFIG_DEPENDS:=$(RUST_PKG_CONFIG_DEPENDS)
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=Apache-2.0 MIT
PKG_LICENSE_FILES:=LICENSE-APACHE LICENSE-MIT
PKG_CPE_ID:=cpe:/a:rust-lang:rust
include $(INCLUDE_DIR)/package.mk
LIBSTD_TARGET_DIR:=$(PKG_BUILD_DIR)/target/$(LIBSTD_RUST_ID)
LIBSTD_BUILD_DIR:=$(LIBSTD_TARGET_DIR)/$(RUSTC_TARGET_ARCH)/release/deps
LIBSTD_RUSTFLAGS:= \
$(RUST_LIBSTD_FLAGS) \
$(RUSTC_TARGET_LINKER_FLAGS) \
$(RUSTC_TARGET_LINK_ARGS) \
$(RUST_PATH_REMAP) \
-Clink-arg=-Wl,-soname,libstd-$(LIBSTD_RUST_ID).so
define Package/libstd-rust
SECTION:=libs
CATEGORY:=Libraries
TITLE:=Rust standard library
DEPENDS:=@USE_RUST_TOOLCHAIN $(RUST_ARCH_DEPENDS) +libgcc
ABI_VERSION:=$(LIBSTD_RUST_ID)
URL:=https://www.rust-lang.org/
endef
define Package/libstd-rust/description
The Rust standard library (libstd) for the target architecture.
Required at runtime by all dynamically-linked Rust packages.
endef
define Build/Configure
endef
define Build/Compile
+cd $(PKG_BUILD_DIR) && \
$(RUST_SCCACHE_VARS) \
RUSTC=$(RUSTC) \
CARGO_HOME=$(CARGO_HOME) \
RUSTC_BOOTSTRAP=1 \
RUSTFLAGS="$(LIBSTD_RUSTFLAGS)" \
$(RUSTC_TARGET_LINKER_VARS) \
CC=$(TARGET_CC_NOCACHE) \
TARGET_CC=$(TARGET_CC_NOCACHE) \
TARGET_CFLAGS="$(TARGET_CFLAGS) $(RUSTC_CFLAGS)" \
$(CARGO) build --release --locked --offline \
--manifest-path library/sysroot/Cargo.toml \
--target $(RUSTC_TARGET_ARCH) \
--target-dir $(LIBSTD_TARGET_DIR) \
--no-default-features --features "$(strip $(RUST_LIBSTD_FEATURES))" \
$(if $(filter --jobserver%,$(MAKEFLAGS)),,-j1)
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)$(RUSTLIB_TARGET_PATH)
for lib in $(LIBSTD_BUILD_DIR)/lib*.rlib $(LIBSTD_BUILD_DIR)/lib*.rmeta; do \
case "$$$$lib" in \
*/libsysroot-*|*/libstd.rlib) ;; \
*) $(CP) "$$$$lib" $(1)$(RUSTLIB_TARGET_PATH)/ ;; \
esac; \
done
$(INSTALL_DATA) $(LIBSTD_BUILD_DIR)/libstd.rlib \
$(1)$(RUSTLIB_TARGET_PATH)/libstd-$(LIBSTD_RUST_ID).rlib
$(INSTALL_DATA) $(LIBSTD_BUILD_DIR)/libstd.so \
$(1)$(RUSTLIB_TARGET_PATH)/libstd-$(LIBSTD_RUST_ID).so
endef
define Package/libstd-rust/install
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_BIN) $(LIBSTD_BUILD_DIR)/libstd.so \
$(1)/usr/lib/libstd-$(LIBSTD_RUST_ID).so
endef
$(eval $(call BuildPackage,libstd-rust))
|