Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DEFAULT_HOST!=../default-host.sh
- HOST?=DEFAULT_HOST
- HOSTARCH!=../target-triplet-to-arch.sh $(HOST)
- CFLAGS?=-O2 -g
- CPPFLAGS?=
- LDFLAGS?=
- LIBS?=
- DESTDIR?=
- PREFIX?=/usr/local
- EXEC_PREFIX?=$(PREFIX)
- BOOTDIR?=$(EXEC_PREFIX)/boot
- INCLUDEDIR?=$(PREFIX)/include
- CFLAGS:=$(CFLAGS) -ffreestanding -Wall -Wextra
- CPPFLAGS:=$(CPPFLAGS) -D__is_kernel -Iinclude
- LDFLAGS:=$(LDFLAGS)
- LIBS:=$(LIBS) -nostdlib -lk -lgcc
- ARCHDIR=arch/$(HOSTARCH)
- include $(ARCHDIR)/make.config
- CFLAGS:=$(CFLAGS) $(KERNEL_ARCH_CFLAGS)
- CPPFLAGS:=$(CPPFLAGS) $(KERNEL_ARCH_CPPFLAGS)
- LDFLAGS:=$(LDFLAGS) $(KERNEL_ARCH_LDFLAGS)
- LIBS:=$(LIBS) $(KERNEL_ARCH_LIBS)
- KERNEL_OBJS=\
- $(KERNEL_ARCH_OBJS) \
- kernel/kernel.o \
- OBJS=\
- $(ARCHDIR)/crti.o \
- $(ARCHDIR)/crtbegin.o \
- $(KERNEL_OBJS) \
- $(ARCHDIR)/crtend.o \
- $(ARCHDIR)/crtn.o \
- LINK_LIST=\
- $(LDFLAGS) \
- $(ARCHDIR)/crti.o \
- $(ARCHDIR)/crtbegin.o \
- $(KERNEL_OBJS) \
- $(LIBS) \
- $(ARCHDIR)/crtend.o \
- $(ARCHDIR)/crtn.o \
- .PHONY: all clean install install-headers install-kernel
- .SUFFIXES: .o .c .S
- all: myos.kernel
- myos.kernel: $(OBJS) $(ARCHDIR)/linker.ld
- $(CC) -T $(ARCHDIR)/linker.ld -o $@ $(CFLAGS) $(LINK_LIST) -Wl,--verbose
- grub-file --is-x86-multiboot myos.kernel
- $(ARCHDIR)/crtbegin.o $(ARCHDIR)/crtend.o:
- OBJ=`$(CC) $(CFLAGS) $(LDFLAGS) -print-file-name=$(@F)` && cp "$$OBJ" $@
- .c.o:
- $(CC) -MD -c $< -o $@ -std=gnu11 $(CFLAGS) $(CPPFLAGS)
- .S.o:
- $(CC) -MD -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
- clean:
- rm -f myos.kernel
- rm -f $(OBJS) *.o */*.o */*/*.o
- rm -f $(OBJS:.o=.d) *.d */*.d */*/*.d
- install: install-headers install-kernel
- install-headers:
- mkdir -p $(DESTDIR)$(INCLUDEDIR)
- cp -R --preserve=timestamps include/. $(DESTDIR)$(INCLUDEDIR)/.
- install-kernel: myos.kernel
- mkdir -p $(DESTDIR)$(BOOTDIR)
- cp myos.kernel $(DESTDIR)$(BOOTDIR)
- -include $(OBJS:.o=.d)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement