-
Notifications
You must be signed in to change notification settings - Fork 83
/
Copy pathMakefile
37 lines (27 loc) · 925 Bytes
/
Makefile
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
TOOLCHAIN_PREFIX ?=
CC = $(TOOLCHAIN_PREFIX)gcc
AR = $(TOOLCHAIN_PREFIX)ar
OBJCOPY = $(TOOLCHAIN_PREFIX)objcopy
CFLAGS=$(CFLAG)
CFLAGS += -march=btver2 -masm=intel -std=gnu11 -ffreestanding -fno-common \
-fPIE -pie -fomit-frame-pointer -nostdlib -nostdinc \
-fno-asynchronous-unwind-tables \
-Os -Wall -Werror -Wl,--build-id=none,-T,kexec.ld,--nmagic \
-mcmodel=small -mno-red-zone
SOURCES := kernel.c kexec.c linux_boot.c linux_thunk.S uart.c firmware.c \
acpi.c crc32.c
OBJS := $(patsubst %.S,%.o,$(patsubst %.c,%.o,$(SOURCES)))
DEPS := $(OBJS) $(SOURCES) $(INCLUDES:%=$(INC_DIR)/%) Makefile kexec.ld
all: libkexec.a kexec.bin
%.o: %.c *.h
$(CC) -c $(CFLAGS) -o $@ $<
%.o: %.S
$(CC) -c $(CFLAGS) -o $@ $<
libkexec.a: $(OBJS)
$(AR) -rc $@ $(OBJS)
kexec.elf: libkexec.a kexec.ld
$(CC) $(CFLAGS) -o $@ libkexec.a
%.bin: %.elf
$(OBJCOPY) -O binary $< $@
clean:
rm -f libkexec.a kexec.elf kexec.bin $(OBJS)