-
Notifications
You must be signed in to change notification settings - Fork 50
/
.common
163 lines (129 loc) · 5.4 KB
/
.common
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/bash
#######################################################################################################################
# exit if any command fails
set -e
#######################################################################################################################
# environment variables
WORKDIR=${WORKDIR:=~/mod-workdir}
#######################################################################################################################
# Colored print functions
function error {
echo -e "\e[0;31m"$@"\e[0m"
exit 1
}
function info {
echo -e "\e[0;32m"$@"\e[0m"
}
function warn {
echo -e "\e[0;33m"$@"\e[0m"
}
#######################################################################################################################
# check for old installation
if [ -d ${WORKDIR}/build ]; then
info "mod-plugin-builder has been updated to support multiple platforms"
info "Unfortunately this requires a complete rebuild of its packages"
error "Please delete ${WORKDIR} and re-run bootstrap.sh"
fi
if [ -z "${PLATFORM}" ]; then
error "Incorrect use of .common, PLATFORM not defined!"
fi
#######################################################################################################################
# check for debug builds
if [[ "${PLATFORM}" == *"-debug" ]]; then
TOOLCHAIN_PLATFORM="$(echo ${PLATFORM} | sed 's/-debug//')"
else
TOOLCHAIN_PLATFORM="${PLATFORM}"
fi
#######################################################################################################################
# check for kernel builds
if [[ "${PLATFORM}" == *"-kernel" ]]; then
BR2_BUILD_CONFIG="kernel"
BR2_PLATFORM="$(echo ${PLATFORM} | sed 's/-kernel//' | sed 's/-new//')"
TOOLCHAIN_PLATFORM="$(echo ${PLATFORM} | sed 's/-kernel//' | sed 's/-new//')-new"
else
BR2_BUILD_CONFIG="plugins-dep"
BR2_PLATFORM="${TOOLCHAIN_PLATFORM}"
fi
#######################################################################################################################
# check for generic builds
if [[ "${PLATFORM}" == "generic-aarch64-"* ]]; then
TOOLCHAIN_PLATFORM="generic-aarch64"
BR2_PLATFORM="${PLATFORM}"
fi
#######################################################################################################################
# check for readlink binary
if [ -f "/opt/local/bin/greadlink" ]; then
readlink="/opt/local/bin/greadlink"
else
readlink="readlink"
fi
#######################################################################################################################
# macOS support through homebrew
if [ -d "/usr/local/opt/ncurses/bin" ]; then
export CPPFLAGS="-I/usr/local/opt/ncurses/include -I/opt/homebrew/opt/gettext/include"
export LDFLAGS="-L/usr/local/opt/ncurses/lib -L/opt/homebrew/opt/gettext/lib"
export PATH="/usr/local/opt/ncurses/bin:${PATH}"
fi
#######################################################################################################################
# define buildroot and toolchain version per platform
case "${TOOLCHAIN_PLATFORM}" in
# old targets: ct-ng 1.22 with gcc 4.9 + glibc 2.21
"modduo"|"modduox")
BUILDROOT_TAR_EXT=bz2
BUILDROOT_VERSION=buildroot-2016.02
CT_NG_VERSION=crosstool-ng-1.22.0
;;
# intermediate targets: ct-ng 1.24 with gcc 7.5 + glibc 2.27 on dwarf or glibc 2.21 on duo/duox (static)
"modduo-static"|"modduox-static"|"moddwarf")
BUILDROOT_TAR_EXT=bz2
BUILDROOT_VERSION=buildroot-2016.02
CT_NG_VERSION=crosstool-ng-1.24.0
;;
# new targets: ct-ng 1.25 with gcc 9 + glibc 2.27
"modduo-new"|"modduox-new"|"moddwarf-new")
BUILDROOT_VERSION=buildroot-2016.02
CT_NG_VERSION=crosstool-ng-1.25.0
;;
# generic targets: ct-ng 1.25 with gcc 9 + glibc 2.34
"generic-aarch64"|"generic-x86_64")
BUILDROOT_VERSION=buildroot-2023.11.3
CT_NG_VERSION=crosstool-ng-1.25.0
;;
# fallback
*)
BUILDROOT_TAR_EXT=bz2
BUILDROOT_VERSION=buildroot-2016.02
CT_NG_VERSION=crosstool-ng-1.24.0
;;
esac
#######################################################################################################################
# crosstool-ng variables
CT_NG_LINK=http://crosstool-ng.org/download/crosstool-ng/
CT_NG_FILE=${CT_NG_VERSION}.tar.bz2
#######################################################################################################################
# buildroot variables
if [ "${BUILDROOT_VERSION}" = "buildroot-2016.02" ]; then
BUILDROOT_TAR_EXT=bz2
else
BUILDROOT_TAR_EXT=xz
fi
BUILDROOT_LINK=http://buildroot.uclibc.org/downloads/
BUILDROOT_FILE=${BUILDROOT_VERSION}.tar.${BUILDROOT_TAR_EXT}
SOURCE_DIR=$("${readlink}" -f $(dirname ${0}))
BR2_EXTERNAL=${SOURCE_DIR}/${BR2_BUILD_CONFIG}
BR2_MAKE="make O=${WORKDIR}/${PLATFORM} BR2_EXTERNAL=${BR2_EXTERNAL} BR2_EXTERNAL_PLUGINS_DEP=${BR2_EXTERNAL} BR2_PLATFORM=${BR2_PLATFORM}"
BR2_TARGET=${WORKDIR}/${PLATFORM}/target
#######################################################################################################################
# setup directories
BUILD_DIR=${WORKDIR}/${PLATFORM}/build
DOWNLOAD_DIR=${WORKDIR}/download
TOOLCHAIN_DIR=${WORKDIR}/${TOOLCHAIN_PLATFORM}/toolchain
TOOLCHAIN_BUILD_DIR=${WORKDIR}/${TOOLCHAIN_PLATFORM}/build
mkdir -p ${BUILD_DIR}
mkdir -p ${DOWNLOAD_DIR}
mkdir -p ${TOOLCHAIN_DIR}
if [[ "${BR2_BUILD_CONFIG}" != "kernel" ]]; then
PLUGINS_DIR=${WORKDIR}/${PLATFORM}/plugins
mkdir -p ${PLUGINS_DIR}
fi
#######################################################################################################################