1 # SPDX-License-Identifier: GPL-2.0-only
3 # Copyright (C) 2023 Luca Barbato and Donald Hoskins
5 include $(TOPDIR
)/rules.mk
11 PKG_SOURCE
:=rustc-
$(PKG_VERSION
)-src.
tar.gz
12 PKG_SOURCE_URL
:=https
://static.rust-lang.org
/dist/
13 PKG_HASH
:=ff544823a5cb27f2738128577f1e7e00ee8f4c83f2a348781ae4fc355e91d5a9
14 HOST_BUILD_DIR
:=$(BUILD_DIR
)/host
/rustc-
$(PKG_VERSION
)-src
16 PKG_MAINTAINER
:=Luca Barbato
<lu_zero@luminem.org
>
17 PKG_LICENSE
:=Apache-2.0 MIT
18 PKG_LICENSE_FILES
:=LICENSE-APACHE LICENSE-MIT
21 PKG_BUILD_FLAGS
:=no-mips16
23 include $(INCLUDE_DIR
)/host-build.mk
24 include $(INCLUDE_DIR
)/package.mk
25 include .
/rust-values.mk
31 TITLE
:=Rust Programming Language Compiler
32 URL
:=https
://www.rust-lang.org
/
33 DEPENDS
:=$(RUST_ARCH_DEPENDS
)
36 define Package
/rust
/description
37 Rust is a multi-paradigm
, general-purpose programming language designed for performance
38 and safety
, especially safe concurrency. Rust is syntactically similar to C
++, but can
39 guarantee memory safety by using a borrow checker to validate references.
42 define Package
/rust
/config
43 source
"$(SOURCE)/Config.in"
46 # Rust-lang has an uninstall script
47 RUST_UNINSTALL
:=$(STAGING_DIR
)/host
/lib
/rustlib
/uninstall.sh
50 TARGET_CONFIGURE_ARGS
= \
51 --set
=target.
$(RUSTC_TARGET_ARCH
).
ar=$(TARGET_AR
) \
52 --set
=target.
$(RUSTC_TARGET_ARCH
).
cc=$(TARGET_CC_NOCACHE
) \
53 --set
=target.
$(RUSTC_TARGET_ARCH
).
cxx=$(TARGET_CXX_NOCACHE
) \
54 --set
=target.
$(RUSTC_TARGET_ARCH
).linker
=$(TARGET_CC_NOCACHE
) \
55 --set
=target.
$(RUSTC_TARGET_ARCH
).ranlib
=$(TARGET_RANLIB
) \
56 --set
=target.
$(RUSTC_TARGET_ARCH
).crt-static
=false \
57 $(if
$(CONFIG_USE_MUSL
),--set
=target.
$(RUSTC_TARGET_ARCH
).musl-root
=$(TOOLCHAIN_DIR
))
59 # CARGO_HOME is an environmental
60 HOST_CONFIGURE_VARS
+= CARGO_HOME
="$(CARGO_HOME)"
62 # Rust Configuration Arguments
63 HOST_CONFIGURE_ARGS
= \
64 --build
=$(RUSTC_HOST_ARCH
) \
65 --target
=$(RUSTC_TARGET_ARCH
),$(RUSTC_HOST_ARCH
) \
66 --host
=$(RUSTC_HOST_ARCH
) \
67 --prefix=$(STAGING_DIR
)/host \
68 --bindir=$(STAGING_DIR
)/host
/bin \
69 --libdir=$(STAGING_DIR
)/host
/lib \
70 --sysconfdir
=$(STAGING_DIR
)/host
/etc \
71 --datadir=$(STAGING_DIR
)/host
/share \
72 --mandir=$(STAGING_DIR
)/host
/man \
73 --dist-compression-formats
=gz \
74 --disable-sanitizers \
75 --release-channel
=stable \
76 --enable-cargo-native-static \
77 --bootstrap-cache-path
=$(DL_DIR
)/rustc \
78 --set
=llvm.download-ci-llvm
=true \
79 $(TARGET_CONFIGURE_ARGS
)
82 # Call the Uninstall script
83 [ -f
$(RUST_UNINSTALL
) ] && \
84 $(BASH
) $(RUST_UNINSTALL
) || echo No Uninstall
88 $(RUST_SCCACHE_VARS
) \
89 CARGO_HOME
=$(CARGO_HOME
) \
90 TARGET_CFLAGS
="$(TARGET_CFLAGS)" \
91 $(PYTHON
) $(HOST_BUILD_DIR
)/x.py \
92 --build-dir
$(HOST_BUILD_DIR
)/build \
93 --config
$(HOST_BUILD_DIR
)/config.toml \
94 dist build-manifest cargo llvm-tools rustc rust-std rust-src
99 cd
$(HOST_BUILD_DIR
)/build
/dist ; \
100 for targz in
*.
tar.gz
; do \
101 $(STAGING_DIR_HOST
)/bin
/libdeflate-gzip
-dc
"$$$$targz" |
tar -xf
- ; \
103 find .
-mindepth
2 -maxdepth
2 -type f
-name
install.sh \
104 -execdir bash
'{}' --prefix=$(STAGING_DIR
)/host
--disable-ldconfig \
; ; \
108 $(eval
$(call HostBuild
))
109 $(eval
$(call BuildPackage
,rust
))