summaryrefslogtreecommitdiffhomepage
path: root/src/rv64/makefile
blob: c9936dd3c89aee75bb0aae0c26502632d694caed (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, all rights reserved.
 #
 # 	========================================================
 #

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)