Guest User

Untitled

a guest
Nov 12th, 2014
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 1.79 KB | None | 0 0
  1. HOST?=$(shell ../default-host.sh)
  2. HOSTARCH:=$(shell ../target-triplet-to-arch.sh $(HOST))
  3.  
  4. CFLAGS?=-O2 -g
  5. CPPFLAGS?=
  6. LDFLAGS?=
  7. LIBS?=
  8.  
  9. DESTDIR?=
  10. PREFIX?=/usr/local
  11. EXEC_PREFIX?=$(PREFIX)
  12. INCLUDEDIR?=$(PREFIX)/include
  13. LIBDIR?=$(EXEC_PREFIX)/lib
  14.  
  15. CFLAGS:=$(CFLAGS) -Wall -Wextra
  16. CPPFLAGS:=$(CPPFLAGS) -D__is_myos_libc -Iinclude
  17. LIBK_CFLAGS:=$(CFLAGS) -ffreestanding -fbuiltin
  18. LIBK_CPPFLAGS:=$(CPPFLAGS) -D__is_myos_kernel
  19.  
  20. ARCHDIR:=arch/$(HOSTARCH)
  21.  
  22. include $(ARCHDIR)/make.config
  23.  
  24. CFLAGS:=$(CFLAGS) $(ARCH_CFLAGS)
  25. CPFLAGS:=$(CPPFLAGS) $(ARCH_CPPFLAGS)
  26. LIBK_CFLAGS:=$(LIBK_CFLAGS) $(KERNEL_ARCH_CFLAGS)
  27. LIBK_CPFLAGS:=$(LIBK_CPPFLAGS) $(KERNEL_ARCH_CPPFLAGS)
  28.  
  29. FREEOBJS:=\
  30. $(ARCH_FREEOBJS) \
  31. stdio/printf.o \
  32. stdio/putchar.o \
  33. stdio/puts.o \
  34. stdlib/abort.o \
  35. string/memcmp.o \
  36. string/memcpy.o \
  37. string/memmove.o \
  38. string/memset.o \
  39. string/strlen.o \
  40.  
  41. HOSTEDOBJS:=\
  42. $(ARCH_HOSTEDOBJS) \
  43.  
  44. OBJS:=\
  45. $(FREEOBJS) \
  46. $(HOSTEDOBJS) \
  47.  
  48. LIBK_OBJS:=$(FREEOBJS:.o=.libk.o)
  49.  
  50. BINARIES=libc.a libg.a libk.a
  51.  
  52. all: $(BINARIES)
  53.  
  54. .PHONY: all clean install install-headers install-libs
  55.  
  56. libc.a: $(OBJS)
  57.     $(AR) rcs $@ $(OBJS)
  58.  
  59. libg.a:
  60.     $(AR) rcs $@
  61.  
  62. libk.a: $(LIBK_OBJS)
  63.     $(AR) rcs $@ $(LIBK_OBJS)
  64.  
  65. %.o: %.c
  66.     $(CC) -c $< -o $@ -std=gnu11 $(CFLAGS) $(CPPFLAGS)
  67.  
  68. %.o: %.S
  69.     $(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS)
  70.  
  71. %.libk.o: %.c
  72.     $(CC) -c $< -o $@ -std=gnu11 $(LIBK_CFLAGS) $(LIBK_CPPFLAGS)
  73.  
  74. %.libk.o: %.S
  75.     $(CC) -c $< -o $@ $(LIBK_CFLAGS) $(LIBK_CPPFLAGS)
  76.  
  77. clean:
  78.     rm -f $(BINARIES) $(OBJS) $(LIBK_OBJS) *.o */*.o */*/*.o
  79.  
  80. install: install-headers install-libs
  81.  
  82. install-headers:
  83.     mkdir -p $(DESTDIR)$(INCLUDEDIR)
  84.     cp -RTv include $(DESTDIR)$(INCLUDEDIR)
  85.  
  86. install-libs: $(BINARIES)
  87.     mkdir -p $(DESTDIR)$(LIBDIR)
  88.     cp $(BINARIES) $(DESTDIR)$(LIBDIR)
Advertisement
Add Comment
Please, Sign In to add comment