blob: 934376931227a0e6c35fb5a468f0639211c70965 (
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
95
96
97
98
99
|
# $NetBSD: do-cross.mk,v 1.3 2022/09/01 09:59:46 jperkin Exp $
# Do all the NetBSD cross builds
# Collect the bootstrap kits in dist/
VERSION!= make show-var VARNAME=PKGVERSION
V_NOREV!= make show-var VARNAME=PKGVERSION_NOREV
SHORT_TARGETS+= armv7
SHORT_TARGETS+= sparc64
SHORT_TARGETS+= powerpc
SHORT_TARGETS+= powerpc90
SHORT_TARGETS+= arm64
SHORT_TARGETS+= arm64_be
SHORT_TARGETS+= i386
# Conditional local overrides of ROOT.* variables:
.sinclude "local-roots.mk"
# Root of target directories.
# Must have dest/ (build.sh's DESTDIR) and tools/ subdirectories
ROOT.armv7?= /u/evbarm-armv7hf
ROOT.sparc64?= /u/sparc64
ROOT.powerpc?= /u/macppc
ROOT.powerpc90?= /u/9.0-macppc
ROOT.arm64?= /u/evbarm64
ROOT.arm64_be?= /u/evbarm64eb
ROOT.i386?= /u/i386
# Mapping to GNU triple
G_TGT.armv7= armv7--netbsdelf-eabihf
G_TGT.sparc64= sparc64--netbsd
G_TGT.powerpc= powerpc--netbsd
G_TGT.powerpc90= powerpc--netbsd
G_TGT.arm64= aarch64--netbsd
G_TGT.arm64_be= aarch64_be--netbsd
G_TGT.i386= i486--netbsdelf
# Mapping to rust's TARGET specification
TGT.armv7= armv7-unknown-netbsd-eabihf
TGT.sparc64= sparc64-unknown-netbsd
TGT.powerpc= powerpc-unknown-netbsd
TGT.powerpc90= powerpc-unknown-netbsd
TGT.arm64= aarch64-unknown-netbsd
TGT.arm64_be= aarch64_be-unknown-netbsd
TGT.i386= i586-unknown-netbsd
# Optional target tweak for bootstrap files
TT.powerpc90= powerpc-unknown-netbsd90
WRKDIR= ${.CURDIR}/work
SCRIPTS= ${WRKDIR}/scripts
#DEBUG= echo
# Make list of make targets
.for st in ${SHORT_TARGETS}
MTGTS+= do-${st}
.endfor
all: ${MTGTS}
# Define the individual build targets, used above
.for st in ${SHORT_TARGETS}
CA.${st}=--host=${TGT.${st}}
CA.${st}+=--target=${TGT.${st}}
CA.${st}+=--set=target.${TGT.${st}}.cc=${SCRIPTS}/gcc-wrap
CA.${st}+=--set=target.${TGT.${st}}.cxx=${SCRIPTS}/c++-wrap
CA.${st}+=--set=target.${TGT.${st}}.linker=${SCRIPTS}/gcc-wrap
CA.${st}+=--set=target.${TGT.${st}}.ar=${ROOT.${st}}/tools/bin/${G_TGT.${st}}-ar
do-${st}:
mkdir -p dist
${ECHO} "=======> Cross-building rust for ${st}"
${DEBUG} make -f Makefile clean
${DEBUG} env \
CROSS_ROOT=${ROOT.${st}} \
GNU_CROSS_TARGET=${G_TGT.${st}} \
make -f Makefile \
ADD_CONFIGURE_ARGS="${CA.${st}}" \
TARGET=${TGT.${st}}
if [ "${TT.${st}}" != "" ]; then \
TT=${TT.${st}}; \
else \
TT=${TGT.${st}}; \
fi; \
distdir=${WRKDIR}/rustc-${V_NOREV}-src/build/dist; \
for comp in rust rust-std; do \
src=$${distdir}/$${comp}-${V_NOREV}-${TGT.${st}}.tar.xz; \
tgt=dist/$${comp}-${VERSION}-$${TT}.tar.xz; \
if [ ! -f "$${tgt}" ]; then \
${ECHO} ln $${src} $${tgt}; \
${DEBUG} ln $${src} $${tgt}; \
fi; \
done; \
src_comp=rust-src-${V_NOREV}.tar.xz; \
if [ ! -f dist/$${src_comp} ]; then \
${ECHO} ln $${distdir}/$${src_comp} dist; \
${DEBUG} ln $${distdir}/$${src_comp} dist; \
fi
.endfor
|