Fix reversed interrupt vector name
[viridis.git] / Makefile
1 CC = gcc
2 LD = ld
3 CPP = cpp
4 AS = as
5
6 MAJOR=0
7 MINOR=1
8
9 INCLUDE_DIRS = include/
10
11 GIT_REV=$(shell git describe --always)
12
13 CPPFLAGS = -I ${INCLUDE_DIRS} -D__GIT_VERSION__='"$(GIT_REV)"' -D__MAJOR_VERSION__=$(MAJOR) -D__MINOR_VERSION__=$(MINOR)
14 CFLAGS = ${CPPFLAGS} -c -std=gnu99 -pedantic -Wall -nostdlib -ffreestanding -mcmodel=kernel -g
15 LDFLAGS = -T linker.ld -nostdlib -n
16 ASFLAGS =
17
18 SRC_C = $(wildcard kernel/*.c kernel/platforms/*.c kernel/platforms/*/*.c mm/*.c vua/*.c)
19 OBJ_C = ${SRC_C:.c=.o}
20
21 SRC_ASM = $(wildcard asm/*.asm vua/*.asm kernel/platforms/efi/*.asm)
22 OBJ_ASM = ${SRC_ASM:.asm=.o}
23
24 SRC = ${SRC_C} ${SRC_ASM}
25 OBJ = ${OBJ_C} ${OBJ_ASM}
26
27 all: viridis-efi
28
29 %.o : %.c
30         @echo CC $<
31         @${CC} ${CFLAGS} $< -o $@
32
33 asm/realmode.bin : asm/realmode.asm-bin
34         @echo AS bin $<
35         @${CPP} ${CPPFLAGS} -D__ASSEMBLY__ $< > $@.tmp
36         @${AS} ${ASFLAGS} $@.tmp -o $@.o
37         @${LD} -Ttext 0x2000 --oformat binary -o $@ $@.o
38         @rm $@.tmp $@.o
39
40 asm/efi.bin : asm/efi.asm-bin
41         @echo AS bin $<
42         @${CPP} ${CPPFLAGS} -D__ASSEMBLY__ $< > $@.tmp
43         @${AS} ${ASFLAGS} $@.tmp -o $@.o
44         @${LD} -Ttext 0x0 --oformat binary -o $@ $@.o -R viridis
45         @rm $@.tmp $@.o
46
47 %.o : %.asm
48         @echo AS $<
49         @${CPP} ${CPPFLAGS} -D__ASSEMBLY__ $< > $@.tmp
50         @${AS} ${ASFLAGS} $@.tmp -o $@
51         @rm $@.tmp
52
53 viridis: asm/realmode.bin ${OBJ} linker.ld
54         @echo CC -o $@
55         @${LD} ${LDFLAGS} -o viridis ${OBJ}
56
57 viridis-efi: viridis asm/efi.bin
58         @echo EFI STUB $<
59         @objcopy -O binary viridis viridis.bin
60         @cat asm/efi.bin viridis.bin > viridis.efi
61
62 clean-most:
63         @echo cleaning
64         @rm -f ${BIN_OBJ} ${OBJ} asm/*.bin viridis.bin
65
66 clean: clean-most
67         @rm -f viridis viridis.efi
68
69 .PHONY: all