@@ -23,8 +23,18 @@ nuttx=$WD/../nuttx
2323apps=$WD /../apps
2424tools=$WD /../tools
2525prebuilt=$WD /../prebuilt
26+ os=$( uname -s)
2627
27- install=" python-tools gen-romfs gperf kconfig-frontends arm-gcc-toolchain mips-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain c-cache"
28+ case $os in
29+ Darwin)
30+ install=" python-tools u-boot-tools discoteq-flock elf-toolchain gen-romfs kconfig-frontends arm-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain"
31+ mkdir -p ${prebuilt} /homebrew
32+ export HOMEBREW_CACHE=${prebuilt} /homebrew
33+ ;;
34+ Linux)
35+ install=" python-tools gen-romfs gperf kconfig-frontends arm-gcc-toolchain mips-gcc-toolchain riscv-gcc-toolchain xtensa-esp32-gcc-toolchain c-cache"
36+ ;;
37+ esac
2838
2939function add_path {
3040 PATH=$1 :$PATH
@@ -37,6 +47,38 @@ function python-tools {
3747 add_path $PYTHONUSERBASE /bin
3848}
3949
50+ function u-boot-tools {
51+ if ! type mkimage > /dev/null; then
52+ case $os in
53+ Darwin)
54+ brew install u-boot-tools
55+ ;;
56+ esac
57+ fi
58+ }
59+
60+ function discoteq-flock {
61+ if ! type flock > /dev/null; then
62+ case $os in
63+ Darwin)
64+ brew tap discoteq/discoteq
65+ brew install flock
66+ ;;
67+ esac
68+ fi
69+ }
70+
71+ function elf-toolchain {
72+ if ! type x86_64-elf-gcc > /dev/null; then
73+ case $os in
74+ Darwin)
75+ brew install x86_64-elf-gcc
76+ ;;
77+ esac
78+ fi
79+ x86_64-elf-gcc --version
80+ }
81+
4082function gen-romfs {
4183 add_path $prebuilt /genromfs/usr/bin
4284
@@ -87,11 +129,20 @@ function arm-gcc-toolchain {
87129 add_path $prebuilt /gcc-arm-none-eabi/bin
88130
89131 if [ ! -f " $prebuilt /gcc-arm-none-eabi/bin/arm-none-eabi-gcc" ]; then
132+ local flavor
133+ case $os in
134+ Darwin)
135+ flavor=mac
136+ ;;
137+ Linux)
138+ flavor=x86_64-linux
139+ ;;
140+ esac
90141 cd $prebuilt
91- wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux .tar.bz2
92- tar jxf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux .tar.bz2
142+ wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/gcc-arm-none-eabi-9-2019-q4-major-${flavor} .tar.bz2
143+ tar jxf gcc-arm-none-eabi-9-2019-q4-major-${flavor} .tar.bz2
93144 mv gcc-arm-none-eabi-9-2019-q4-major gcc-arm-none-eabi
94- rm gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux .tar.bz2
145+ rm gcc-arm-none-eabi-9-2019-q4-major-${flavor} .tar.bz2
95146 fi
96147 arm-none-eabi-gcc --version
97148}
@@ -110,11 +161,20 @@ function riscv-gcc-toolchain {
110161 add_path $prebuilt /riscv64-unknown-elf-gcc/bin
111162
112163 if [ ! -f " $prebuilt /riscv64-unknown-elf-gcc/bin/riscv64-unknown-elf-gcc" ]; then
164+ local flavor
165+ case $os in
166+ Darwin)
167+ flavor=x86_64-apple-darwin
168+ ;;
169+ Linux)
170+ flavor=x86_64-linux-ubuntu14
171+ ;;
172+ esac
113173 cd $prebuilt
114- wget https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14 .tar.gz
115- tar zxf riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14 .tar.gz
116- mv riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14 riscv64-unknown-elf-gcc
117- rm riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14 .tar.gz
174+ wget https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor} .tar.gz
175+ tar zxf riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor} .tar.gz
176+ mv riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor} riscv64-unknown-elf-gcc
177+ rm riscv64-unknown-elf-gcc-8.3.0-2019.08.0-${flavor} .tar.gz
118178 fi
119179 riscv64-unknown-elf-gcc --version
120180}
@@ -124,10 +184,19 @@ function xtensa-esp32-gcc-toolchain {
124184
125185 if [ ! -f " $prebuilt /xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc" ]; then
126186 cd $prebuilt
127- wget https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar.xz
128- xz -d xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar.xz
129- tar xf xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar
130- rm xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar
187+ case $os in
188+ Darwin)
189+ wget https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp-2019r2-macos.tar.gz
190+ tar xzf xtensa-esp32-elf-gcc8_2_0-esp-2019r2-macos.tar.gz
191+ rm xtensa-esp32-elf-gcc8_2_0-esp-2019r2-macos.tar.gz
192+ ;;
193+ Linux)
194+ wget https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar.xz
195+ xz -d xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar.xz
196+ tar xf xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar
197+ rm xtensa-esp32-elf-gcc8_2_0-esp32-2019r1-rc2-linux-amd64.tar
198+ ;;
199+ esac
131200 fi
132201 xtensa-esp32-elf-gcc --version
133202 pip install esptool
@@ -206,7 +275,17 @@ function install_tools {
206275}
207276
208277function run_builds {
209- local ncpus=` grep -c ^processor /proc/cpuinfo`
278+ local ncpus
279+
280+ case $os in
281+ Darwin)
282+ ncpus=$( sysctl -n machdep.cpu.thread_count)
283+ ;;
284+ Linux)
285+ ncpus=` grep -c ^processor /proc/cpuinfo`
286+ ;;
287+ esac
288+
210289 options+=" -j $ncpus "
211290
212291 for build in $builds ; do
0 commit comments