blob: d524fee35c2c20549300ef90568c32a249fd0487 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#
# ========================================================
#
# NeBoot
# Date Added: 08/11/2023
# Copyright 2024, Amlal El Mahrouss, licensed under Apache 2.0.
#
# ========================================================
#
CC=riscv64-unknown-elf-gcc
FIRMWARE=core-boot.elf
FLAGS=-D__COMPILE_RISCV__ -I../../ -Wall -c -nostdlib -ffreestanding -fno-builtin -D__BSTRICT__ -D__BDEBUG__ -O0 -mcmodel=medany
C_SRC= $(wildcard *.s) $(wildcard *.c) $(wildcard ../*.c) -c
CXX=riscv64-unknown-elf-g++
CXX_SRC= $(wildcard *.cc) $(wildcard ../*.cc) -c
LD=riscv64-unknown-elf-ld
OBJ=*.o
FLAGS_LD= --script=script.lds -o core-boot.elf
EMU=qemu-system-riscv64 -m 4G -smp 2 -machine virt -bios $(FIRMWARE) -d int -device VGA
.PHONY: all
all: firmware-link
@echo "[NeBoot] Done."
# link (make firmware)
.PHONY: firmware-link
firmware-link: firmware-compile
$(LD) $(OBJ) $(FLAGS_LD)
# compile firmware
.PHONY: firmware-compile
firmware-compile:
$(CC) $(FLAGS) $(C_SRC)
$(CXX) -ffreestanding -fno-rtti -fno-exceptions $(FLAGS) $(CXX_SRC)
# launch qemu rule
.PHONY: run
run:
$(EMU)
# launch qemu with attached debugger
.PHONY: run-dbg
run-dbg:
$(EMU) -S
# remove object files
.PHONY: clean
clean:
rm -f $(wildcard *.o) $(wildcard *.elf) $(wildcard *.rom) $(wildcard *.epm)
|