aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 1e83dfcbf8c3a7c4aa71ba5113d70379550ef34b (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
BITS := 32

# TOOLCHAIN := riscv$(BITS)-linux-gnu-
# TOOLCHAIN := riscv$(BITS)-unknown-elf-
TOOLCHAIN := riscv$(BITS)-unknown-linux-gnu-

CC := $(TOOLCHAIN)gcc

SRC := src
OBJ := obj
BIN := bin

FILES = $(shell find $(SRC) -type f)
SRCS =  $(filter %.s, $(FILES))
OBJS =  $(SRCS:$(SRC)/%.s=$(OBJ)/%.o)

FLAGS := -nostdlib -static -s 

# KERNEL := linux-6.1.38.img$(BITS)
KERNEL := linux-5.4.294.img$(BITS)
INITFS := initfs.img
NAME := test

export

all: vm
clean:
	rm -rf $(BIN)
	rm -rf $(OBJ)

$(NAME): $(BIN)/$(NAME)

$(OBJ)/%.o: $(SRC)/%.s
	mkdir -p $(dir $@)
	$(CC) $(FLAGS) -c $< -o $@

$(BIN)/$(NAME): $(OBJS)
	mkdir -p $(dir $@)
	$(CC) $(FLAGS) $^ -o $@

vm: $(BIN)/$(INITFS) $(BIN)/$(KERNEL)
	./vm.sh run
$(BIN)/$(INITFS): $(NAME)
	./vm.sh initramfs $(BIN)/$(NAME)
$(BIN)/$(KERNEL):
	./vm.sh kernel