diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 98b4c26..4e83609 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -17,14 +17,19 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Run tests + - name: Build KenOS from a clean checkout run: | echo $DOCKER_PASS | docker login --username $DOCKER_USER --password-stdin docker pull memegauste/kenos-build:alphadocker - docker run -w $GITHUB_DIR -v $GITHUB_DIR:$GITHUB_DIR memegauste/kenos-build:alphadocker /bin/bash -c "make -j$(nproc) -k RPT_FLAGS='-ffreestanding -O2 -Wall -Wno-error'" + docker run --rm -w "$GITHUB_DIR" -v "$GITHUB_DIR:$GITHUB_DIR" memegauste/kenos-build:alphadocker /bin/bash -ec ' + make clean + make -j"$(nproc)" + grub-file --is-x86-multiboot kenos.bin + ' - uses: actions/upload-artifact@v4 name: Upload current KenOS build with: name: kenos.iso path: ./kenos.iso + if-no-files-found: error diff --git a/makefile b/makefile index c182dc1..d27338f 100755 --- a/makefile +++ b/makefile @@ -16,19 +16,19 @@ kenos.iso: kenos.bin kenos.bin: build/kernel.o build/boot.o $(OBJECTS) ${CC} -T linker.ld -o $@ -ffreestanding -O2 -nostdlib $^ -build/kernel.o: kernel.c - mkdir build +build: + mkdir -p $@ + +build/kernel.o: kernel.c | build ${CC} -c $< -o $@ -std=gnu99 ${RPT_FLAGS} -Iinclude -Wextra -build/%.o: lib/%.c +build/%.o: lib/%.c | build ${CC} -c $< -o $@ -std=gnu99 ${RPT_FLAGS} -Iinclude -Wextra -build/boot.o: boot.asm - ${ASM} -felf32 $? -o $@ +build/boot.o: boot.asm | build + ${ASM} -felf32 $< -o $@ +.PHONY: clean clean: rm -rf build - rm kenos.bin - rm build/* - rm isodir/boot/kenos.bin - rm kenos.iso + rm -f kenos.bin isodir/boot/kenos.bin kenos.iso