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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# -*-makefile-*-
#
# Copyright (C) 2019 by Michael Olbrich <m.olbrich@pengutronix.de>
#
# See CREDITS for details about who has contributed to this project.
#
# For further information about the PTXdist project and license conditions
# see the README file.
#
#
# We provide this package
#
CROSS_PACKAGES-$(PTXCONF_CROSS_RUSTC) += cross-rustc
#
# Paths and names
#
CROSS_RUSTC_VERSION := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_VERSION))
CROSS_RUSTC_MD5 := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_MD5))
CROSS_RUSTC := rustc-$(CROSS_RUSTC_VERSION)
CROSS_RUSTC_SUFFIX := tar.xz
CROSS_RUSTC_URL := https://static.rust-lang.org/dist/$(CROSS_RUSTC)-src.$(CROSS_RUSTC_SUFFIX)
CROSS_RUSTC_SOURCE := $(SRCDIR)/$(CROSS_RUSTC)-src.$(CROSS_RUSTC_SUFFIX)
CROSS_RUSTC_DIR := $(CROSS_BUILDDIR)/$(CROSS_RUSTC)
CROSS_RUSTC_BUILD_VERSION := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_BUILD_VERSION))
CROSS_RUSTC_BUILD_DATE := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_BUILD_DATE))
CROSS_RUSTC_BUILD_STD_VERSION := $(CROSS_RUSTC_BUILD_VERSION)
CROSS_RUSTC_BUILD_STD_MD5 := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_BUILD_STD_MD5))
CROSS_RUSTC_BUILD_STD := rust-std-$(CROSS_RUSTC_BUILD_STD_VERSION)-$(GNU_BUILD)
CROSS_RUSTC_BUILD_STD_SUFFIX := tar.xz
CROSS_RUSTC_BUILD_STD_URL := https://static.rust-lang.org/dist/$(CROSS_RUSTC_BUILD_DATE)/$(CROSS_RUSTC_BUILD_STD).$(CROSS_RUSTC_BUILD_STD_SUFFIX)
CROSS_RUSTC_BUILD_STD_SOURCE := $(SRCDIR)/$(CROSS_RUSTC_BUILD_STD).$(CROSS_RUSTC_BUILD_STD_SUFFIX)
$(CROSS_RUSTC_BUILD_STD_SOURCE) := CROSS_RUSTC_BUILD_STD
CROSS_RUSTC_SOURCES += $(CROSS_RUSTC_BUILD_STD_SOURCE)
CROSS_RUSTC_BUILD_RUSTC_VERSION := $(CROSS_RUSTC_BUILD_VERSION)
CROSS_RUSTC_BUILD_RUSTC_MD5 := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_BUILD_RUSTC_MD5))
CROSS_RUSTC_BUILD_RUSTC := rustc-$(CROSS_RUSTC_BUILD_RUSTC_VERSION)-$(GNU_BUILD)
CROSS_RUSTC_BUILD_RUSTC_SUFFIX := tar.xz
CROSS_RUSTC_BUILD_RUSTC_URL := https://static.rust-lang.org/dist/$(CROSS_RUSTC_BUILD_DATE)/$(CROSS_RUSTC_BUILD_RUSTC).$(CROSS_RUSTC_BUILD_RUSTC_SUFFIX)
CROSS_RUSTC_BUILD_RUSTC_SOURCE := $(SRCDIR)/$(CROSS_RUSTC_BUILD_RUSTC).$(CROSS_RUSTC_BUILD_RUSTC_SUFFIX)
$(CROSS_RUSTC_BUILD_RUSTC_SOURCE) := CROSS_RUSTC_BUILD_RUSTC
CROSS_RUSTC_SOURCES += $(CROSS_RUSTC_BUILD_RUSTC_SOURCE)
CROSS_RUSTC_BUILD_CARGO_VERSION := $(CROSS_RUSTC_BUILD_VERSION)
CROSS_RUSTC_BUILD_CARGO_MD5 := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_BUILD_CARGO_MD5))
CROSS_RUSTC_BUILD_CARGO := cargo-$(CROSS_RUSTC_BUILD_CARGO_VERSION)-$(GNU_BUILD)
CROSS_RUSTC_BUILD_CARGO_SUFFIX := tar.xz
CROSS_RUSTC_BUILD_CARGO_URL := https://static.rust-lang.org/dist/$(CROSS_RUSTC_BUILD_DATE)/$(CROSS_RUSTC_BUILD_CARGO).$(CROSS_RUSTC_BUILD_CARGO_SUFFIX)
CROSS_RUSTC_BUILD_CARGO_SOURCE := $(SRCDIR)/$(CROSS_RUSTC_BUILD_CARGO).$(CROSS_RUSTC_BUILD_CARGO_SUFFIX)
$(CROSS_RUSTC_BUILD_CARGO_SOURCE) := CROSS_RUSTC_BUILD_CARGO
CROSS_RUSTC_SOURCES += $(CROSS_RUSTC_BUILD_CARGO_SOURCE)
CROSS_RUSTC_CONFIG := $(call ptx/in-path, PTXDIST_PATH_LAYERS, config/rustc.toml)
CROSS_RUSTC_TARGET := $(call remove_quotes,$(PTXCONF_CROSS_RUSTC_TARGET))
CROSS_RUSTC_TARGET_PATH := $(PTXDIST_WORKSPACE)/config/rust
# ----------------------------------------------------------------------------
# Prepare
# ----------------------------------------------------------------------------
CROSS_RUSTC_CONF_ENV := \
BUILD_TRIPLE=$(GNU_BUILD) \
TARGET_TRIPLE=$(CROSS_RUSTC_TARGET) \
PREFIX=$(PTXCONF_PREFIX_CROSS) \
LLVM_CONFIG=$(CROSS_LLVM_DIR)-build/bin/llvm-config \
COMPILER_PREFIX=$(COMPILER_PREFIX)
$(STATEDIR)/cross-rustc.prepare:
@$(call targetinfo)
@mkdir -p $(CROSS_RUSTC_DIR)/build/cache/$(CROSS_RUSTC_BUILD_DATE)
@cp -v \
$(CROSS_RUSTC_BUILD_STD_SOURCE) \
$(CROSS_RUSTC_BUILD_RUSTC_SOURCE) \
$(CROSS_RUSTC_BUILD_CARGO_SOURCE) \
$(CROSS_RUSTC_DIR)/build/cache/$(CROSS_RUSTC_BUILD_DATE)/
$(CROSS_RUSTC_CONF_ENV) ptxd_replace_magic \
$(CROSS_RUSTC_CONFIG) > $(CROSS_RUSTC_DIR)/config.toml
@$(call touch)
# ----------------------------------------------------------------------------
# Compile
# ----------------------------------------------------------------------------
CROSS_RUSTC_MAKE_ENV := \
RUST_TARGET_PATH=$(CROSS_RUSTC_TARGET_PATH)
$(STATEDIR)/cross-rustc.compile:
@$(call targetinfo)
@$(call world/execute, CROSS_RUSTC, ./x.py build)
@$(call touch)
# ----------------------------------------------------------------------------
# Install
# ----------------------------------------------------------------------------
define ptx/cross-rustc-wrapper-impl
echo "Creating '$(1)'..."
rm -f '$(1)'
echo '#!/bin/sh' > '$(1)'
echo 'd="$$(dirname $$(readlink -f "$${0}"))"' >> '$(1)'
echo 'export RUST_TARGET_PATH="$$d"' >> '$(1)'
echo 'exec "$$d/rustc" --target $(CROSS_RUSTC_TARGET) "$$@"' >> '$(1)'
chmod +x '$(1)'
endef
define ptx/cross-rustc-wrapper
$(call ptx/cross-rustc-wrapper-impl,$(strip \
$(CROSS_RUSTC_PKGDIR)$(PTXCONF_PREFIX_CROSS)/bin/$(COMPILER_PREFIX)rustc))
endef
$(STATEDIR)/cross-rustc.install:
@$(call targetinfo)
@$(call world/execute, CROSS_RUSTC, \
DESTDIR=$(CROSS_RUSTC_PKGDIR) ./x.py install)
@rm -rv $(CROSS_RUSTC_PKGDIR)$(PTXCONF_PREFIX_CROSS)/lib/rustlib/$(GNU_BUILD)/bin
@cp -v $(CROSS_RUSTC_TARGET_PATH)/$(CROSS_RUSTC_TARGET).json \
$(CROSS_RUSTC_PKGDIR)$(PTXCONF_PREFIX_CROSS)/bin/
@$(call ptx/cross-rustc-wrapper)
@$(call touch)
# vim: syntax=make
|