Skip to content

Commit b40607b

Browse files
committed
Fetch AVR LIBC from github instead of patching the SVN version. Using AVR-LIBC3.
Make it so building GCC or BINUTILS is optional so that rebuilding AVR-LIBC3 is quicker when the compiler doesn't change.
1 parent b26888f commit b40607b

File tree

1 file changed

+56
-64
lines changed

1 file changed

+56
-64
lines changed

build.sh

+56-64
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,20 @@ BUILD_WIN32=0
1616
# Build 64 bit Windows toolchain
1717
BUILD_WIN64=0
1818

19-
# Build AVR-LibC
20-
BUILD_LIBC=1
19+
# Build Binutils? Can be set on command line.
20+
if [ -z ${BUILD_BINUTILS+x} ]; then
21+
BUILD_BINUTILS=0
22+
fi
23+
24+
# Build AVR-GCC? Can be set on command line.
25+
if [ -z ${BUILD_GCC+x} ]; then
26+
BUILD_GCC=0
27+
fi
28+
29+
# Build AVR-LibC? Can be set on command line.
30+
if [ -z ${BUILD_LIBC+x} ]; then
31+
BUILD_LIBC=1
32+
fi
2133

2234
# Output locations for built toolchains
2335
PREFIX_LINUX=/opt/AVR/linux
@@ -50,7 +62,7 @@ set -e
5062

5163
NAME_BINUTILS="binutils-2.32"
5264
NAME_GCC="gcc-9.1.0"
53-
NAME_LIBC="avr-libc-SVN"
65+
NAME_LIBC="avr-libc.git"
5466

5567
HOST_WIN32="i686-w64-mingw32"
5668
HOST_WIN64="x86_64-w64-mingw32"
@@ -82,29 +94,6 @@ makeDir()
8294
mkdir -p "$1"
8395
}
8496

85-
fixGCCAVR()
86-
{
87-
# In GCC 7.1.0 there seems to be an issue with INT8_MAX and some other things being undefined in /gcc/config/avr/avr.c when building for Windows.
88-
# Adding '#include <stdint.h>' doesn't fix it, but manually defining the values does the trick.
89-
90-
echo "Fixing missing defines..."
91-
92-
DEFSFIX="
93-
#if (defined _WIN32 || defined __CYGWIN__)
94-
#define INT8_MIN (-128)
95-
#define INT16_MIN (-32768)
96-
#define INT8_MAX 127
97-
#define INT16_MAX 32767
98-
#define UINT8_MAX 0xff
99-
#define UINT16_MAX 0xffff
100-
#endif
101-
"
102-
103-
ORIGINAL=$(cat ../gcc/config/avr/avr.c)
104-
echo "$DEFSFIX" > ../gcc/config/avr/avr.c
105-
echo "$ORIGINAL" >> ../gcc/config/avr/avr.c
106-
}
107-
10897
echo "Clearing output directories..."
10998
[ $BUILD_LINUX -eq 1 ] && makeDir "$PREFIX_LINUX"
11099
[ $BUILD_WIN32 -eq 1 ] && makeDir "$PREFIX_WIN32"
@@ -118,25 +107,25 @@ CC=""
118107
export CC
119108

120109
echo "Downloading sources..."
121-
rm -f $NAME_BINUTILS.tar.xz
122-
rm -rf $NAME_BINUTILS/
123-
wget ftp://ftp.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/$NAME_BINUTILS.tar.xz
124-
rm -f $NAME_GCC.tar.xz
125-
rm -rf $NAME_GCC/
126-
wget ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/$NAME_GCC/$NAME_GCC.tar.xz
110+
if [ $BUILD_BINUTILS -eq 1 ]; then
111+
rm -f $NAME_BINUTILS.tar.xz
112+
rm -rf $NAME_BINUTILS/
113+
wget ftp://ftp.mirrorservice.org/sites/ftp.gnu.org/gnu/binutils/$NAME_BINUTILS.tar.xz
114+
fi
115+
116+
if [ $BUILD_GCC -eq 1 ]; then
117+
rm -f $NAME_GCC.tar.xz
118+
rm -rf $NAME_GCC/
119+
wget ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/$NAME_GCC/$NAME_GCC.tar.xz
120+
fi
121+
127122
if [ $BUILD_LIBC -eq 1 ]; then
128-
rm -f $NAME_LIBC.tar.bz2
129123
rm -rf $NAME_LIBC/
130-
if [ "$NAME_LIBC" = "avr-libc-SVN" ]; then
131-
rm -f avrxmega3-v9.diff.bz2
132-
wget -O avrxmega3-v9.diff.bz2 https://savannah.nongnu.org/patch/download.php?file_id=45738
133-
svn co svn://svn.savannah.nongnu.org/avr-libc/trunk
134-
mv trunk/avr-libc $NAME_LIBC
135-
rm -rf trunk
136-
echo "Patching for XMEGA3 support"
137-
cat avrxmega3-v9.diff.bz2 | bzip2 -dc - | patch -d avr-libc-SVN -p0
124+
if [ "$NAME_LIBC" = "avr-libc.git" ]; then
125+
git clone https://github.com/stevenj/avr-libc3.git "$NAME_LIBC"
138126
echo "Preparing"
139127
cd $NAME_LIBC
128+
git checkout 8e93ef44b707cdcddf46e5e8d770fd68c59829cc
140129
./bootstrap
141130
cd ..
142131
else
@@ -153,35 +142,38 @@ confMake()
153142
}
154143

155144
# Make AVR-Binutils
156-
echo "Making Binutils..."
157-
echo "Extracting..."
158-
tar xf $NAME_BINUTILS.tar.xz
159-
mkdir -p $NAME_BINUTILS/obj-avr
160-
cd $NAME_BINUTILS/obj-avr
161-
[ $BUILD_LINUX -eq 1 ] && confMake "$PREFIX_LINUX" "$OPTS_BINUTILS"
162-
[ $BUILD_WIN32 -eq 1 ] && confMake "$PREFIX_WIN32" "$OPTS_BINUTILS" --host=$HOST_WIN32 --build=`../config.guess`
163-
[ $BUILD_WIN64 -eq 1 ] && confMake "$PREFIX_WIN64" "$OPTS_BINUTILS" --host=$HOST_WIN64 --build=`../config.guess`
164-
cd ../../
145+
if [ $BUILD_BINUTILS -eq 1 ]; then
146+
echo "Making Binutils..."
147+
echo "Extracting..."
148+
tar xf $NAME_BINUTILS.tar.xz
149+
mkdir -p $NAME_BINUTILS/obj-avr
150+
cd $NAME_BINUTILS/obj-avr
151+
[ $BUILD_LINUX -eq 1 ] && confMake "$PREFIX_LINUX" "$OPTS_BINUTILS"
152+
[ $BUILD_WIN32 -eq 1 ] && confMake "$PREFIX_WIN32" "$OPTS_BINUTILS" --host=$HOST_WIN32 --build=`../config.guess`
153+
[ $BUILD_WIN64 -eq 1 ] && confMake "$PREFIX_WIN64" "$OPTS_BINUTILS" --host=$HOST_WIN64 --build=`../config.guess`
154+
cd ../../
155+
fi
165156

166157
# Make AVR-GCC
167-
echo "Making GCC..."
168-
echo "Extracting..."
169-
tar xf $NAME_GCC.tar.xz
170-
mkdir -p $NAME_GCC/obj-avr
171-
cd $NAME_GCC
172-
chmod +x ./contrib/download_prerequisites
173-
./contrib/download_prerequisites
174-
cd obj-avr
175-
# fixGCCAVR
176-
[ $BUILD_LINUX -eq 1 ] && confMake "$PREFIX_LINUX" "$OPTS_GCC"
177-
[ $BUILD_WIN32 -eq 1 ] && confMake "$PREFIX_WIN32" "$OPTS_GCC" --host=$HOST_WIN32 --build=`../config.guess`
178-
[ $BUILD_WIN64 -eq 1 ] && confMake "$PREFIX_WIN64" "$OPTS_GCC" --host=$HOST_WIN64 --build=`../config.guess`
179-
cd ../../
158+
if [ $BUILD_GCC -eq 1 ]; then
159+
echo "Making GCC..."
160+
echo "Extracting..."
161+
tar xf $NAME_GCC.tar.xz
162+
mkdir -p $NAME_GCC/obj-avr
163+
cd $NAME_GCC
164+
chmod +x ./contrib/download_prerequisites
165+
./contrib/download_prerequisites
166+
cd obj-avr
167+
[ $BUILD_LINUX -eq 1 ] && confMake "$PREFIX_LINUX" "$OPTS_GCC"
168+
[ $BUILD_WIN32 -eq 1 ] && confMake "$PREFIX_WIN32" "$OPTS_GCC" --host=$HOST_WIN32 --build=`../config.guess`
169+
[ $BUILD_WIN64 -eq 1 ] && confMake "$PREFIX_WIN64" "$OPTS_GCC" --host=$HOST_WIN64 --build=`../config.guess`
170+
cd ../../
171+
fi
180172

181173
# Make AVR-LibC
182174
if [ $BUILD_LIBC -eq 1 ]; then
183175
echo "Making AVR-LibC..."
184-
if [ "$NAME_LIBC" != "avr-libc-SVN" ]; then
176+
if [ "$NAME_LIBC" != "avr-libc.git" ]; then
185177
echo "Extracting..."
186178
bunzip2 -c $NAME_LIBC.tar.bz2 | tar xf -
187179
fi

0 commit comments

Comments
 (0)