Makefile 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. SYS ?= $(shell gcc -dumpmachine)
  2. export SYS
  3. export DEBUG
  4. GLIBC_SRC = glibc-2.19
  5. SHIM_DIR = shim
  6. BUILD_DIR = glibc-build
  7. GLIBC_TARGET = $(addprefix $(BUILD_DIR)/,libc.so.6 ld-linux-x86-64.so.2 libpthread.so.0 libm.so.6 libdl.so.2 libutil.so.1 crt1.o crti.o crtn.o liblibos.so.1 libnss_dns.so.2 libresolv.so.2)
  8. .PHONY: all
  9. all: $(GLIBC_TARGET)
  10. $(MAKE) -C $(SHIM_DIR) all
  11. .PHONY: format
  12. format:
  13. $(MAKE) -C $(SHIM_DIR) format
  14. ifeq ($(findstring x86_64,$(SYS))$(findstring linux,$(SYS)),x86_64linux)
  15. .INTERMEDIATE: $(BUILD_DIR)/Build.success
  16. $(BUILD_DIR)/Build.success: $(BUILD_DIR)/Makefile
  17. @echo "Building glibc, may take a while to finish. Warning messages may show up. If this process terminates with failures, see \"$(BUILD_DIR)/build.log\" for more information."
  18. cd $(BUILD_DIR) && ($(MAKE) 2>&1 >> build.log)
  19. # 2>&1 | tee -a build.log)
  20. $(GLIBC_TARGET): $(BUILD_DIR)/Build.success
  21. $(BUILD_DIR)/Makefile: $(addprefix $(GLIBC_SRC)/,configure elf/Versions nptl/Versions dlfcn/Versions)
  22. ifeq ($(DEBUG),1)
  23. ./buildglibc.py --quiet --debug
  24. else
  25. ./buildglibc.py --quiet
  26. endif
  27. ifeq ($(shell git ls-files $(GLIBC_SRC)/configure),)
  28. $(GLIBC_SRC)/configure: $(GLIBC_SRC).patch
  29. [ -f $(GLIBC_SRC).tar.gz ] || \
  30. wget http://ftp.gnu.org/gnu/glibc/$(GLIBC_SRC).tar.gz
  31. tar -xzf $(GLIBC_SRC).tar.gz
  32. cd $(GLIBC_SRC) && patch -p1 < ../$(GLIBC_SRC).patch
  33. cd $(GLIBC_SRC) && patch -p1 < ../glibc-fix-warning.patch
  34. cd $(GLIBC_SRC) && patch -p1 < ../glibc-no-pie.patch
  35. endif
  36. .PHONY: clean
  37. clean:
  38. $(MAKE) -C $(SHIM_DIR) clean
  39. rm -rf $(BUILD_DIR)
  40. else
  41. .IGNORE: $(GLIBC_TARGET)
  42. $(GLIBC_TARGET):
  43. .PHONY: clean
  44. clean:
  45. rm -rf $(BUILD_DIR)
  46. endif