aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2022-01-12 15:58:29 +0100
committerAleksa Vučković <aleksav013@gmail.com>2022-01-12 18:35:41 +0100
commit0d4b19bdc8ea4e60c1736d1afe92e8ece2757843 (patch)
tree388c09707a2830011b755472df44766a6ccdafd3
parent9cb37d94c95238deb583620dd1360cc71f5238de (diff)
Fully working, installs toolchain into $SYSROOT
-rw-r--r--.gitignore6
-rwxr-xr-xscripts/binutils_build.sh14
-rwxr-xr-xscripts/gcc_build.sh13
-rwxr-xr-xscripts/install_headers.sh14
-rwxr-xr-xscripts/setup.sh74
5 files changed, 85 insertions, 36 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..179b395
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+binutils-2.37.tar.gz
+binutils-2.37/
+gcc-11.2.0.tar.gz
+gcc-11.2.0/
+mine/
+mykernel/
diff --git a/scripts/binutils_build.sh b/scripts/binutils_build.sh
deleted file mode 100755
index a969291..0000000
--- a/scripts/binutils_build.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-mkdir build
-cd build || exit
-
-../configure --target=i686-aleksa \
- --prefix=/usr \
- --with-sysroot=/opt/aleksa \
- --bindir=/usr/bin \
- --libdir=/usr/lib \
- --disable-nls \
- --disable-werror
-
-make
diff --git a/scripts/gcc_build.sh b/scripts/gcc_build.sh
deleted file mode 100755
index d70cb0e..0000000
--- a/scripts/gcc_build.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-mkdir build
-cd build || exit
-
-../configure --target=i686-aleksa \
- --prefix=/usr \
- --with-sysroot=/opt/aleksa \
- --disable-nls \
- --disable-plugin \
- --enable-languages=c,c++
-
-make
diff --git a/scripts/install_headers.sh b/scripts/install_headers.sh
new file mode 100755
index 0000000..ae0e560
--- /dev/null
+++ b/scripts/install_headers.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+SYSROOT="/opt/aleksa"
+GCC_DIR=$(gcc --print-file-name=)
+
+if [ ! -d mykernel ]; then
+ git clone "https://github.com/aleksav013/mykernel"
+fi
+
+rm -rf "$SYSROOT/usr/include"
+mkdir -p "$SYSROOT/usr/include"
+cp -r "$GCC_DIR"include/* "$SYSROOT/usr/include"
+cp -r mykernel/src/include/* "$SYSROOT/usr/include"
+cp "$SYSROOT/usr/include/stdint-gcc.h" "$SYSROOT/usr/include/stdint.h"
diff --git a/scripts/setup.sh b/scripts/setup.sh
index 9145f9d..950bb3b 100755
--- a/scripts/setup.sh
+++ b/scripts/setup.sh
@@ -1,5 +1,7 @@
#!/bin/sh
+SYSROOT=/opt/aleksa
+
download()
{
if [ ! -f "./binutils-2.37.tar.gz" ]; then
@@ -29,25 +31,77 @@ patch_gnu()
if [ ! -d "./binutils-2.37" ]; then
cp -r "../binutils-2.37" .
- patch -p0 < "./scripts/aleksa-binutils-2.37.diff"
+ patch -p0 < "../scripts/aleksa-binutils-2.37.diff"
+ cd "./binutils-2.37/ld" || exit
+ sed -i "s/2.69/2.71/" "Makefile.am"
+ aclocal
+ automake
+ cd "../.." || exit
fi
if [ ! -d "./gcc-11.2.0" ]; then
cp -r "../gcc-11.2.0" .
patch -p0 < "../scripts/aleksa-gcc-11.2.0.diff"
+ cd "./gcc-11.2.0/libstdc++-v3" || exit
+ sed -i "s/2.69/2.71/" "../config/override.m4"
+ autoreconf
+ cd "../.." || exit
fi
}
-build()
+build_binutils()
{
cd "./binutils-2.37" || exit
- ../../../scripts/binutils_build.sh
- cd .. || exit
-
- cd "./binutils-2.37" || exit
- ../../../scripts/gcc_build.sh
- cd .. || exit
+ mkdir -p build
+ cd build || exit
+
+ if [ ! -f Makefile ]; then
+ ../configure --target=i686-aleksa \
+ --prefix=/usr \
+ --with-sysroot="$SYSROOT" \
+ --bindir=/usr/bin \
+ --libdir=/usr/lib \
+ --disable-nls \
+ --disable-werror
+ fi
+
+ make -j4
+ make DESTDIR="$SYSROOT" install
+
+ cd "../.." || exit
+}
+
+install_headers()
+{
+ ../scripts/install_headers.sh
+}
+
+build_gcc()
+{
+ cd "./gcc-11.2.0" || exit
+
+ mkdir -p build
+ cd build || exit
+
+ if [ ! -f Makefile ]; then
+ ../configure --target=i686-aleksa \
+ --prefix=/usr \
+ --with-sysroot="$SYSROOT" \
+ --disable-nls \
+ --disable-plugin \
+ --enable-languages=c,c++
+ fi
+
+ make -j4 all-gcc
+ make -j4 all-target-libgcc
+
+ make -k check || true
+
+ make DESTDIR="$SYSROOT" install-gcc
+ make DESTDIR="$SYSROOT" install-target-libgcc
+
+ cd "../.." || exit
}
main()
@@ -55,7 +109,9 @@ main()
download
extract
patch_gnu
-# build
+ install_headers
+ build_binutils
+ build_gcc
}
main