Makefile 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. OUTPUT = $(PWD)/output
  2. TARGET = sh2eb-linux-musl
  3. BINUTILS_VER = 2.25.1
  4. GCC_VER = 5.2.0
  5. COMMON_CONFIG = --disable-werror \
  6. --target=$(TARGET) --prefix=$(OUTPUT) \
  7. --with-sysroot=$(OUTPUT)/$(TARGET)
  8. BINUTILS_CONFIG = $(COMMON_CONFIG)
  9. GCC_CONFIG = $(COMMON_CONFIG) \
  10. --disable-libmudflap --disable-libsanitizer \
  11. --disable-libquadmath --disable-decimal-float
  12. GCC0_CONFIG = $(GCC_CONFIG) \
  13. --with-newlib --disable-libssp --disable-threads \
  14. --disable-shared --disable-libgomp --disable-libatomic \
  15. --disable-libquadmath --disable-decimal-float --disable-nls \
  16. --enable-languages=c \
  17. CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0"
  18. MUSL_CONFIG = CC=$(OUTPUT)/bin/$(TARGET)-gcc --prefix=
  19. -include config.mak
  20. all: steps/install_binutils steps/install_musl steps/install_gcc
  21. clean:
  22. rm -rf gcc-$(GCC_VER) binutils-$(BINUTILS_VER) musl
  23. rm -rf steps/extract_* steps/clone_*
  24. rm -rf steps/configure_* steps/build_* steps/install_*
  25. distclean: clean
  26. rm -rf sources/config.sub sources/*.tar.bz2
  27. steps/configure_gcc0: steps/install_binutils
  28. steps/configure_gcc: steps/install_musl
  29. sources/config.sub:
  30. wget -O $@ 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
  31. sources/binutils-%:
  32. wget -c -O $@.part http://ftp.gnu.org/pub/gnu/binutils/$(notdir $@)
  33. mv $@.part $@
  34. sources/gcc-%:
  35. wget -c -O $@.part http://ftp.gnu.org/pub/gnu/gcc/$(basename $(basename $(notdir $@)))/$(notdir $@)
  36. mv $@.part $@
  37. steps/extract_binutils: sources/binutils-$(BINUTILS_VER).tar.bz2 sources/config.sub
  38. tar jxvf $<
  39. cat patches/binutils-$(BINUTILS_VER)/* | ( cd binutils-$(BINUTILS_VER) && patch -p1 )
  40. cp sources/config.sub binutils-$(BINUTILS_VER)
  41. touch $@
  42. steps/configure_binutils: steps/extract_binutils
  43. test -e binutils-$(BINUTILS_VER)/config.status || ( cd binutils-$(BINUTILS_VER) && ./configure $(BINUTILS_CONFIG) )
  44. touch $@
  45. steps/build_binutils: steps/configure_binutils
  46. cd binutils-$(BINUTILS_VER) && $(MAKE)
  47. touch $@
  48. steps/install_binutils: steps/build_binutils
  49. cd binutils-$(BINUTILS_VER) && $(MAKE) install
  50. touch $@
  51. steps/extract_gcc: sources/gcc-$(GCC_VER).tar.bz2 sources/config.sub
  52. tar jxvf $<
  53. cat patches/gcc-$(GCC_VER)/* | ( cd gcc-$(GCC_VER) && patch -p1 )
  54. cp sources/config.sub gcc-$(GCC_VER)
  55. touch $@
  56. steps/configure_gcc0: steps/extract_gcc
  57. mkdir -p gcc-$(GCC_VER)/build0
  58. test -e gcc-$(GCC_VER)/build0/config.status || ( cd gcc-$(GCC_VER)/build0 && ../configure $(GCC0_CONFIG) )
  59. touch $@
  60. steps/build_gcc0: steps/configure_gcc0
  61. cd gcc-$(GCC_VER)/build0 && $(MAKE)
  62. touch $@
  63. steps/install_gcc0: steps/build_gcc0
  64. cd gcc-$(GCC_VER)/build0 && $(MAKE) install
  65. touch $@
  66. steps/configure_gcc: steps/extract_gcc
  67. mkdir -p gcc-$(GCC_VER)/build
  68. test -e gcc-$(GCC_VER)/build/config.status || ( cd gcc-$(GCC_VER)/build && ../configure $(GCC_CONFIG) )
  69. touch $@
  70. steps/build_gcc: steps/configure_gcc
  71. cd gcc-$(GCC_VER)/build && $(MAKE)
  72. touch $@
  73. steps/install_gcc: steps/build_gcc
  74. cd gcc-$(GCC_VER)/build && $(MAKE) install
  75. touch $@
  76. steps/clone_musl:
  77. test -d musl || git clone git://git.musl-libc.org/musl musl
  78. touch $@
  79. steps/configure_musl: steps/clone_musl steps/install_gcc0
  80. cd musl && ./configure $(MUSL_CONFIG)
  81. cat patches/musl-complex-hack >> musl/config.mak
  82. touch $@
  83. steps/build_musl: steps/configure_musl
  84. cd musl && $(MAKE)
  85. touch $@
  86. steps/install_musl: steps/build_musl
  87. cd musl && $(MAKE) install DESTDIR=$(OUTPUT)/$(TARGET)
  88. ln -sfn . $(OUTPUT)/$(TARGET)/usr
  89. touch $@