Makefile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. all: $(GLIBC_TARGET)
  9. $(MAKE) -C $(SHIM_DIR) all
  10. ifeq ($(SYS),x86_64-linux-gnu)
  11. .INTERMEDIATE: $(BUILD_DIR)/Build.success
  12. $(BUILD_DIR)/Build.success: $(BUILD_DIR)/Makefile
  13. @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."
  14. cd $(BUILD_DIR) && (($(MAKE) >> build.log) 2>&1 | tee -a build.log)
  15. $(GLIBC_TARGET): $(BUILD_DIR)/Build.success
  16. $(BUILD_DIR)/Makefile: $(addprefix $(GLIBC_SRC)/,configure elf/Versions nptl/Versions dlfcn/Versions)
  17. ifeq ($(DEBUG),1)
  18. ./buildglibc.py --quiet --debug
  19. else
  20. ./buildglibc.py --quiet
  21. endif
  22. ifeq ($(shell git ls-files $(GLIBC_SRC)/configure),)
  23. $(GLIBC_SRC)/configure: $(GLIBC_SRC).patch
  24. [ -f $(GLIBC_SRC).tar.gz ] || \
  25. wget http://ftp.gnu.org/gnu/glibc/$(GLIBC_SRC).tar.gz
  26. tar -xzf $(GLIBC_SRC).tar.gz
  27. cd $(GLIBC_SRC) && patch -p1 < ../$(GLIBC_SRC).patch
  28. endif
  29. .PHONY: pack
  30. pack: $(GLIBC_TARGET)
  31. @../Scripts/pack_binaries.sh glibc $^
  32. $(MAKE) -C $(SHIM_DIR) pack
  33. clean:
  34. $(MAKE) -C $(SHIM_DIR) clean
  35. rm -rf $(BUILD_DIR)
  36. else
  37. $(GLIBC_TARGET): .packed/glibc.tar.gz
  38. tar -xmozf $< $@
  39. clean:
  40. rm -rf $(BUILD_DIR)
  41. endif