Improved build commands

This commit is contained in:
Thomas Lovén 2022-01-02 20:19:53 +01:00
parent e0979ed357
commit 271ab8860f
8 changed files with 54 additions and 29 deletions

3
.gitignore vendored
View File

@ -1,5 +1,4 @@
dist/ mittos.iso
build/
sysroot/ sysroot/
*.d *.d

View File

@ -2,23 +2,27 @@ ifeq ($(BUILDROOT),)
$(error BUILDROOT IS NOT SET!) $(error BUILDROOT IS NOT SET!)
endif endif
TARGET := x86_64-elf
KERNELMAKE := TARGET=${TARGET} $(MAKE) -C src/kernel
DIST := $(BUILDROOT)/mittos.iso
SYSROOT := $(BUILDROOT)/sysroot SYSROOT := $(BUILDROOT)/sysroot
DIST := $(BUILDROOT)/dist/mittos.iso $(DIST): $(SYSROOT)/kernel
$(BUILDROOT)/toolchain/setup-grub.sh
$(DIST):
setup-grub.sh
grub-mkrescue -o $@ $(SYSROOT) grub-mkrescue -o $@ $(SYSROOT)
kernel: $(SYSROOT)/kernel: FORCE
ifeq ($(shell make -sqC src/kernel || echo 1), 1) ifeq ($(shell make -sqC src/kernel || echo 1), 1)
$(MAKE) -C src/kernel install $(KERNELMAKE) install
endif endif
install: $(DIST) .PHONY: FORCE
clean: clean:
rm -rf $(DIST) rm -rf $(DIST)
$(MAKE) -C src/kernel clean $(KERNELMAKE) clean
.PHONY: install distclean:
$(MAKE) clean
rm -rf $(SYSROOT)

11
dbg
View File

@ -1,3 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
docker-compose -f toolchain/docker-compose.yml run --rm dbg "$@" default="gdb -q -x /opt/toolchain/gdbinit"
if [[ "$1" == "-" ]]; then
shift
cmd="$@"
else
cmd="${default} $@"
fi
docker-compose -f toolchain/docker-compose.yml run --rm -u $(id -u):$(id -g) run ${cmd}

11
emu
View File

@ -1,3 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
docker-compose -f toolchain/docker-compose.yml run --rm --name emul emul "$@" default="qemu-system-x86_64 -s -S -cdrom /opt/mittos.iso -curses"
if [[ "$1" == "-" ]]; then
shift
cmd="$@"
else
cmd="${default} $@"
fi
docker-compose -f toolchain/docker-compose.yml run --rm --name emul -u $(id -u):$(id -g) run ${cmd}

11
make
View File

@ -1,3 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
docker-compose -f toolchain/docker-compose.yml run --rm -u $(id -u):$(id -g) make make "$@" default="make"
if [[ "$1" == "-" ]]; then
shift
cmd="$@"
else
cmd="${default} $@"
fi
docker-compose -f toolchain/docker-compose.yml run --rm -u $(id -u):$(id -g) build ${cmd}

View File

@ -1,5 +1,8 @@
ifeq ($(BUILDROOT),)
$(error BUILDROOT IS NOT SET!)
endif
CC := x86_64-elf-gcc CC := ${TARGET}-gcc
SRC := $(wildcard **/*.[cS]) SRC := $(wildcard **/*.[cS])
OBJ := $(patsubst %, %.o, $(basename $(SRC))) OBJ := $(patsubst %, %.o, $(basename $(SRC)))
@ -13,6 +16,7 @@ LDFLAGS := -n -nostdlib -lgcc -T Link.ld
kernel: $(OBJ) kernel: $(OBJ)
$(LINK.c) $^ -o $@ $(LINK.c) $^ -o $@
# Automatic dependency tracking
DEP := $(OBJ:.o=.d) DEP := $(OBJ:.o=.d)
DEPFLAGS = -MT $@ -MMD -MP -MF $*.d DEPFLAGS = -MT $@ -MMD -MP -MF $*.d
$(OBJ): CPPFLAGS += $(DEPFLAGS) $(OBJ): CPPFLAGS += $(DEPFLAGS)
@ -30,4 +34,5 @@ clean:
.PHONY: install .PHONY: install
# Include automatic dependency rules
include $(DEP) include $(DEP)

View File

@ -1,29 +1,18 @@
version: "3.5" version: "3.5"
services: services:
make: build:
image: thomasloven/mittos-build image: thomasloven/mittos-build
build: build:
context: . context: .
dockerfile: Dockerfile.build dockerfile: Dockerfile.build
volumes: volumes:
- ..:/opt - ..:/opt
command: make
emul: run:
image: thomasloven/mittos-run image: thomasloven/mittos-run
build: build:
context: . context: .
dockerfile: Dockerfile.run dockerfile: Dockerfile.run
volumes: volumes:
- ..:/opt - ..:/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

View File

@ -5,6 +5,7 @@ target remote emul:1234
define q define q
monitor quit monitor quit
quit
end end
define reg define reg