Initial commit
This commit is contained in:
commit
fdcb46d6f2
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
dist/
|
||||||
|
build/
|
||||||
|
sysroot/
|
14
Makefile
Normal file
14
Makefile
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
ifeq ($(BUILDROOT),)
|
||||||
|
$(error BUILDROOT IS NOT SET!)
|
||||||
|
endif
|
||||||
|
|
||||||
|
SYSROOT := $(BUILDROOT)/sysroot
|
||||||
|
|
||||||
|
DIST := $(BUILDROOT)/dist/mittos.iso
|
||||||
|
|
||||||
|
$(DIST):
|
||||||
|
grub-mkrescue -o $@ $(SYSROOT)
|
||||||
|
|
||||||
|
install: $(DIST)
|
||||||
|
|
||||||
|
.PHONY: install
|
3
dbg
Executable file
3
dbg
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
docker-compose -f toolchain/docker-compose.yml run --rm dbg "$@"
|
3
emu
Executable file
3
emu
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
docker-compose -f toolchain/docker-compose.yml run --rm --name emul emul "$@"
|
3
make
Executable file
3
make
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
docker-compose -f toolchain/docker-compose.yml run --rm make "$@"
|
11
toolchain/Dockerfile.build
Normal file
11
toolchain/Dockerfile.build
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
FROM alpine
|
||||||
|
|
||||||
|
ADD build-toolchain.sh /opt/build-toolchain.sh
|
||||||
|
|
||||||
|
RUN /opt/build-toolchain.sh
|
||||||
|
|
||||||
|
ENV PATH "/opt/toolchain:$PATH"
|
||||||
|
ENV MITTOS64 "true"
|
||||||
|
ENV BUILDROOT "/opt"
|
||||||
|
|
||||||
|
WORKDIR /opt
|
8
toolchain/Dockerfile.run
Normal file
8
toolchain/Dockerfile.run
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
FROM alpine
|
||||||
|
|
||||||
|
RUN apk --update --no-cache add qemu-system-x86_64 qemu-ui-curses gdb && rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
ENV MITTOS64 "true"
|
||||||
|
ENV BUILDROOT "/opt"
|
||||||
|
|
||||||
|
WORKDIR "/opt"
|
44
toolchain/build-toolchain.sh
Executable file
44
toolchain/build-toolchain.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
apk --update add build-base
|
||||||
|
apk add gmp-dev mpfr-dev mpc1-dev
|
||||||
|
|
||||||
|
apk add make
|
||||||
|
apk add grub-bios xorriso
|
||||||
|
|
||||||
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
|
target=x86_64-elf
|
||||||
|
binutils=binutils-2.37
|
||||||
|
gcc=gcc-11.2.0
|
||||||
|
|
||||||
|
cd /opt
|
||||||
|
wget http://ftp.gnu.org/gnu/binutils/${binutils}.tar.gz
|
||||||
|
tar -xf ${binutils}.tar.gz
|
||||||
|
mkdir binutils-build && cd binutils-build
|
||||||
|
../${binutils}/configure \
|
||||||
|
--target=${target} \
|
||||||
|
--disable-nls \
|
||||||
|
--disable-werror \
|
||||||
|
--with-sysroot \
|
||||||
|
|
||||||
|
make -j 4
|
||||||
|
make install
|
||||||
|
|
||||||
|
cd /opt
|
||||||
|
wget http://ftp.gnu.org/gnu/gcc/${gcc}/${gcc}.tar.gz
|
||||||
|
tar -xf ${gcc}.tar.gz
|
||||||
|
mkdir gcc-build && cd gcc-build
|
||||||
|
../${gcc}/configure \
|
||||||
|
--target=${target} \
|
||||||
|
--disable-nls \
|
||||||
|
--enable-languages=c \
|
||||||
|
--without-headers \
|
||||||
|
|
||||||
|
make all-gcc all-target-libgcc -j 4
|
||||||
|
make install-gcc install-target-libgcc
|
||||||
|
|
||||||
|
apk del build-base
|
||||||
|
|
||||||
|
cd /
|
||||||
|
rm -rf /opt
|
29
toolchain/docker-compose.yml
Normal file
29
toolchain/docker-compose.yml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
version: "3.5"
|
||||||
|
|
||||||
|
services:
|
||||||
|
make:
|
||||||
|
image: thomasloven/mittos-build
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.build
|
||||||
|
volumes:
|
||||||
|
- ..:/opt
|
||||||
|
command: make
|
||||||
|
|
||||||
|
emul:
|
||||||
|
image: thomasloven/mittos-run
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.run
|
||||||
|
volumes:
|
||||||
|
- ..:/opt
|
||||||
|
command: qemu-system-x86_64 -s -S -cdrom /opt/dist/mittos.iso -curses
|
||||||
|
|
||||||
|
dbg:
|
||||||
|
image: thomasloven/mittos-run
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.run
|
||||||
|
volumes:
|
||||||
|
- ..:/opt
|
||||||
|
command: gdb -q -x /opt/toolchain/gdbinit
|
16
toolchain/gdbinit
Normal file
16
toolchain/gdbinit
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
set prompt \033[31m(gdb) \033[0m
|
||||||
|
set disassembly-flavor intel
|
||||||
|
|
||||||
|
target remote emul:1234
|
||||||
|
|
||||||
|
define q
|
||||||
|
monitor quit
|
||||||
|
end
|
||||||
|
|
||||||
|
define reg
|
||||||
|
monitor info registers
|
||||||
|
end
|
||||||
|
|
||||||
|
define reset
|
||||||
|
monitor system_reset
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user