diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..66643fd --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,63 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] +jobs: + build-macos: + runs-on: macos-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: nasm + run: brew install nasm + + - name: x86_64-elf-gcc + run: brew install x86_64-elf-gcc + + - name: setup + run: ./setup.sh + + - name: build + run: ./build.sh + + build-ubuntu: + runs-on: ubuntu-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: install nasm + run: sudo apt install nasm + + - name: setup + run: ./setup.sh + + - name: build + run: ./build.sh + + build-windows: + runs-on: windows-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v4 + + - name: install packages + run: choco install nasm mingw + + - name: setup + run: ./setup.sh + + - name: build + run: ./build.sh + + diff --git a/.gitignore b/.gitignore index c51b481..d501f92 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,5 @@ bin/* src/libBareMetal.asm src/libBareMetal.c src/libBareMetal.h -src/*.o +**/*.o .vscode/ \ No newline at end of file diff --git a/build.sh b/build.sh index e1ea0ba..cc34d91 100755 --- a/build.sh +++ b/build.sh @@ -1,34 +1,37 @@ #!/usr/bin/env bash -CFLAGS="-c -m64 -nostdlib -nostartfiles -nodefaultlibs -ffreestanding -falign-functions=16 -fomit-frame-pointer -mno-red-zone -fno-builtin" +source cross.sh cd src -nasm hello.asm -o ../bin/hello.app -l ../bin/hello-debug.txt -nasm sysinfo.asm -o ../bin/sysinfo.app -l ../bin/sysinfo-debug.txt -nasm euler1.asm -o ../bin/euler1.app -nasm ethtest.asm -o ../bin/ethtest.app -nasm smptest.asm -o ../bin/smptest.app -nasm systest.asm -o ../bin/systest.app -nasm uitest.asm -o ../bin/uitest.app -nasm mouse.asm -o ../bin/mouse.app -if [ "$(uname)" != "Darwin" ]; then - gcc $CFLAGS -o crt0.o crt0.c - gcc $CFLAGS -o libBareMetal.o libBareMetal.c - gcc $CFLAGS -o helloc.o helloc.c - ld -T c.ld -o ../bin/helloc.app crt0.o helloc.o libBareMetal.o - gcc $CFLAGS -o uitestc.o uitestc.c - ld -T c.ld -o ../bin/uitestc.app crt0.o uitestc.o libBareMetal.o - gcc $CFLAGS -o raytrace.o raytrace.c - ld -T c.ld -o ../bin/raytrace.app crt0.o raytrace.o libBareMetal.o - gcc $CFLAGS -o gavare.o gavare.c - ld -T c.ld -o ../bin/gavare.app crt0.o gavare.o libBareMetal.o - gcc $CFLAGS -o minIP.o minIP.c - ld -T c.ld -o ../bin/minIP.app crt0.o minIP.o libBareMetal.o - gcc $CFLAGS -o cube3d.o cube3d.c - ld -T c.ld -o ../bin/cube3d.app crt0.o cube3d.o libBareMetal.o - gcc $CFLAGS -o color-plasma.o color-plasma.c - ld -T c.ld -o ../bin/color-plasma.app crt0.o color-plasma.o libBareMetal.o - gcc $CFLAGS -o ./3d-model-loader/3d-model-loader.o ./3d-model-loader/3d-model-loader.c - ld -T c.ld -o ../bin/3d-model-loader.app crt0.o ./3d-model-loader/3d-model-loader.o libBareMetal.o -fi + +# Assembler programs +$NASM hello.asm -o ../bin/hello.app -l ../bin/hello-debug.txt +$NASM sysinfo.asm -o ../bin/sysinfo.app -l ../bin/sysinfo-debug.txt +$NASM euler1.asm -o ../bin/euler1.app +$NASM ethtest.asm -o ../bin/ethtest.app +$NASM smptest.asm -o ../bin/smptest.app +$NASM systest.asm -o ../bin/systest.app +$NASM uitest.asm -o ../bin/uitest.app +$NASM mouse.asm -o ../bin/mouse.app + +# C programs +$CC $CFLAGS -o crt0.o crt0.c +$CC $CFLAGS -o libBareMetal.o libBareMetal.c +$CC $CFLAGS -o helloc.o helloc.c +$LD $LDFLAGS -T c.ld -o ../bin/helloc.app crt0.o helloc.o libBareMetal.o +$CC $CFLAGS -o uitestc.o uitestc.c +$LD $LDFLAGS -T c.ld -o ../bin/uitestc.app crt0.o uitestc.o libBareMetal.o +$CC $CFLAGS -o raytrace.o raytrace.c +$LD $LDFLAGS -T c.ld -o ../bin/raytrace.app crt0.o raytrace.o libBareMetal.o +$CC $CFLAGS -o gavare.o gavare.c +$LD $LDFLAGS -T c.ld -o ../bin/gavare.app crt0.o gavare.o libBareMetal.o +$CC $CFLAGS -o minIP.o minIP.c +$LD $LDFLAGS -T c.ld -o ../bin/minIP.app crt0.o minIP.o libBareMetal.o +$CC $CFLAGS -o cube3d.o cube3d.c +$LD $LDFLAGS -T c.ld -o ../bin/cube3d.app crt0.o cube3d.o libBareMetal.o +$CC $CFLAGS -o color-plasma.o color-plasma.c +$LD $LDFLAGS -T c.ld -o ../bin/color-plasma.app crt0.o color-plasma.o libBareMetal.o +$CC $CFLAGS -o ./3d-model-loader/3d-model-loader.o ./3d-model-loader/3d-model-loader.c +$LD $LDFLAGS -T c.ld -o ../bin/3d-model-loader.app crt0.o ./3d-model-loader/3d-model-loader.o libBareMetal.o + cd .. diff --git a/cross.sh b/cross.sh new file mode 100644 index 0000000..3e1e933 --- /dev/null +++ b/cross.sh @@ -0,0 +1,18 @@ + +#!/usr/bin/env bash + +if [ "$(uname)" != "Darwin" ]; then +# linux +CC=gcc +LD=ld +CFLAGS="-c -m64 -nostdlib -nostartfiles -nodefaultlibs -ffreestanding -falign-functions=16 -fomit-frame-pointer -mno-red-zone -fno-builtin" +LDFLAGS= +NASM=nasm +else +# darwin +CC=x86_64-elf-gcc +LD=x86_64-elf-ld +CFLAGS="-c -m64 -nostdlib -nodefaultlibs -ffreestanding -falign-functions=16 -fomit-frame-pointer -mno-red-zone -fno-builtin" +LDFLAGS= +NASM=nasm +fi diff --git a/src/3d-model-loader/3d-model-loader.o b/src/3d-model-loader/3d-model-loader.o deleted file mode 100644 index d308e43..0000000 Binary files a/src/3d-model-loader/3d-model-loader.o and /dev/null differ