Advertisement
Guest User

Untitled

a guest
Oct 27th, 2024
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. DEFAULT_HOST!=../default-host.sh
  2. HOST?=DEFAULT_HOST
  3. HOSTARCH!=../target-triplet-to-arch.sh $(HOST)
  4.  
  5. CFLAGS?=-O2 -g
  6. CPPFLAGS?=
  7. LDFLAGS?=
  8. LIBS?=
  9.  
  10. DESTDIR?=
  11. PREFIX?=/usr/local
  12. EXEC_PREFIX?=$(PREFIX)
  13. BOOTDIR?=$(EXEC_PREFIX)/boot
  14. INCLUDEDIR?=$(PREFIX)/include
  15.  
  16. CFLAGS:=$(CFLAGS) -ffreestanding -Wall -Wextra
  17. CPPFLAGS:=$(CPPFLAGS) -D__is_kernel -Iinclude
  18. LDFLAGS:=$(LDFLAGS)
  19. LIBS:=$(LIBS) -nostdlib -lk -lgcc
  20.  
  21. ARCHDIR=arch/$(HOSTARCH)
  22.  
  23. include $(ARCHDIR)/make.config
  24.  
  25. CFLAGS:=$(CFLAGS) $(KERNEL_ARCH_CFLAGS)
  26. CPPFLAGS:=$(CPPFLAGS) $(KERNEL_ARCH_CPPFLAGS)
  27. LDFLAGS:=$(LDFLAGS) $(KERNEL_ARCH_LDFLAGS)
  28. LIBS:=$(LIBS) $(KERNEL_ARCH_LIBS)
  29.  
  30. KERNEL_OBJS=\
  31. $(KERNEL_ARCH_OBJS) \
  32. kernel/kernel.o \
  33.  
  34. OBJS=\
  35. $(ARCHDIR)/crti.o \
  36. $(ARCHDIR)/crtbegin.o \
  37. $(KERNEL_OBJS) \
  38. $(ARCHDIR)/crtend.o \
  39. $(ARCHDIR)/crtn.o \
  40.  
  41. LINK_LIST=\
  42. $(LDFLAGS) \
  43. $(ARCHDIR)/crti.o \
  44. $(ARCHDIR)/crtbegin.o \
  45. $(KERNEL_OBJS) \
  46. $(LIBS) \
  47. $(ARCHDIR)/crtend.o \
  48. $(ARCHDIR)/crtn.o \
  49.  
  50. .PHONY: all clean install install-headers install-kernel
  51. .SUFFIXES: .o .c .S
  52.  
  53. all: myos.kernel
  54.  
  55. myos.kernel: $(OBJS) $(ARCHDIR)/linker.ld
  56. $(CC) -T $(ARCHDIR)/linker.ld -o $@ $(CFLAGS) $(LINK_LIST) -Wl,--verbose
  57. grub-file --is-x86-multiboot myos.kernel
  58.  
  59. $(ARCHDIR)/crtbegin.o $(ARCHDIR)/crtend.o:
  60. OBJ=`$(CC) $(CFLAGS) $(LDFLAGS) -print-file-name=$(@F)` && cp "$$OBJ" $@
  61.  
  62. .c.o:
  63. $(CC) -MD -c $< -o $@ -std=gnu11 $(CFLAGS) $(CPPFLAGS)
  64.  
  65. .S.o:
  66. $(CC) -MD -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
  67.  
  68. clean:
  69. rm -f myos.kernel
  70. rm -f $(OBJS) *.o */*.o */*/*.o
  71. rm -f $(OBJS:.o=.d) *.d */*.d */*/*.d
  72.  
  73. install: install-headers install-kernel
  74.  
  75. install-headers:
  76. mkdir -p $(DESTDIR)$(INCLUDEDIR)
  77. cp -R --preserve=timestamps include/. $(DESTDIR)$(INCLUDEDIR)/.
  78.  
  79. install-kernel: myos.kernel
  80. mkdir -p $(DESTDIR)$(BOOTDIR)
  81. cp myos.kernel $(DESTDIR)$(BOOTDIR)
  82.  
  83. -include $(OBJS:.o=.d)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement