Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -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


2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ bin/*
src/libBareMetal.asm
src/libBareMetal.c
src/libBareMetal.h
src/*.o
**/*.o
.vscode/
61 changes: 32 additions & 29 deletions build.sh
Original file line number Diff line number Diff line change
@@ -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 ..
18 changes: 18 additions & 0 deletions cross.sh
Original file line number Diff line number Diff line change
@@ -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
Binary file removed src/3d-model-loader/3d-model-loader.o
Binary file not shown.