Advertisement
Guest User

makefile-jag-m68k-gcc

a guest
Jan 24th, 2022
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. # Atari Jaguar 68K toolchain makefile by Chilly Willy
  2. # adapted from Jim Ursetto' makefile for the DC
  3. # adapted from Stalin's build script version 0.3
  4. #
  5. # Interesting parameters:
  6. # erase=0|1 Erase build directories on the fly to save space
  7. # thread_model=posix|single Set gcc threading model
  8. # verbose=0|1 Display
  9. #
  10. # Interesting targets (you can 'make' any of these):
  11. # all: build
  12. # build: build-m68k
  13. # build-m68k: build-m68k-binutils build-m68k-gcc
  14. # build-m68k-gcc: build-m68k-gcc-pass1 build-m68k-newlib build-m68k-gcc-pass2
  15. # build-m68k-newlib: build-m68k-newlib-only
  16.  
  17. # User configuration
  18. m68k_target=m68k-elf
  19. m68k_prefix := /opt/toolchains/jaguar/$(m68k_target)
  20. binutils_ver=2.37
  21. gcc_ver=11.2.0
  22. newlib_ver=4.1.0
  23. thread_model=single
  24. erase=0
  25. verbose=1
  26. # Set the languages to build for pass 2 of building gcc. The default
  27. # here is to build C, C++, Objective C, and Objective C++. You may want to take
  28. # out the latter two if you're not worried about them and/or you're short on
  29. # hard drive space.
  30. #pass2_languages=c,c++,objc,obj-c++
  31. pass2_languages=c,c++
  32.  
  33. # build variables
  34. install=$(prefix)/bin
  35. pwd := $(shell pwd)
  36. logdir := $(pwd)/logs
  37. PATH := $(m68k_prefix)/bin:$(PATH)
  38. binutils_dir=binutils-$(binutils_ver)
  39. gcc_dir=gcc-$(gcc_ver)
  40. newlib_dir=newlib-$(newlib_ver)
  41.  
  42. all: build
  43.  
  44. # ---- build {{{
  45.  
  46. build: build-m68k
  47. build-m68k: build-m68k-binutils build-m68k-gcc
  48. build-m68k-gcc: build-m68k-gcc-pass1 build-m68k-newlib build-m68k-gcc-pass2
  49. build-m68k-newlib: build-m68k-newlib-only
  50.  
  51. # Ensure that, no matter where we enter, prefix and target are set correctly.
  52. build_m68k_targets=build-m68k-binutils build-m68k-gcc build-m68k-gcc-pass1 build-m68k-newlib build-m68k-newlib-only build-m68k-gcc-pass2
  53. $(build_m68k_targets): prefix = $(m68k_prefix)
  54. $(build_m68k_targets): target = $(m68k_target)
  55. $(build_m68k_targets): extra_configure_args = --with-cpu=m68000 --disable-werror
  56.  
  57. build_binutils = build-m68k-binutils
  58. build_gcc_pass1 = build-m68k-gcc-pass1
  59. build_newlib = build-m68k-newlib-only
  60. build_gcc_pass2 = build-m68k-gcc-pass2
  61.  
  62. # Here we use the essentially same code for multiple targets,
  63. # differing only by the current state of the variables below.
  64. $(build_binutils): build = build-binutils-$(target)-$(binutils_ver)
  65. $(build_binutils): src_dir = binutils-$(binutils_ver)
  66. $(build_binutils): log = $(logdir)/$(build).log
  67. $(build_binutils): logdir
  68. @echo "+++ Building $(src_dir) to $(build)..."
  69. -mkdir -p $(build)
  70. > $(log)
  71. cd $(build); ../$(src_dir)/configure --target=$(target) --prefix=$(prefix) --disable-werror --enable-install-libbfd $(to_log)
  72. make -C $(build) all install DESTDIR=$(DESTDIR) $(to_log)
  73. $(clean_up)
  74.  
  75. $(build_gcc_pass1) $(build_gcc_pass2): build = build-gcc-$(target)-$(gcc_ver)
  76. $(build_gcc_pass1) $(build_gcc_pass2): src_dir = gcc-$(gcc_ver)
  77. $(build_gcc_pass1): log = $(logdir)/$(build)-pass1.log
  78. $(build_gcc_pass1): logdir
  79. @echo "+++ Building $(src_dir) to $(build) (pass 1)..."
  80. -mkdir -p $(build)
  81. > $(log)
  82. cd $(build); ../$(src_dir)/configure --target=$(target) --prefix=$(prefix) --without-headers --with-newlib --enable-languages=c --disable-libssp --disable-tls $(extra_configure_args) $(to_log)
  83. make -C $(build) all-gcc install-gcc DESTDIR=$(DESTDIR) $(to_log)
  84.  
  85. $(build_newlib): build = build-newlib-$(target)-$(newlib_ver)
  86. $(build_newlib): src_dir = newlib-$(newlib_ver)
  87. $(build_newlib): log = $(logdir)/$(build).log
  88. $(build_newlib): logdir
  89. @echo "+++ Building $(src_dir) to $(build)..."
  90. -mkdir -p $(build)
  91. > $(log)
  92. cd $(build); ../$(src_dir)/configure --target=$(target) --prefix=$(prefix) $(extra_configure_args) $(to_log)
  93. make -C $(build) all install DESTDIR=$(DESTDIR) $(to_log)
  94. $(clean_up)
  95.  
  96. $(build_gcc_pass2): log = $(logdir)/$(build)-pass2.log
  97. $(build_gcc_pass2): logdir
  98. @echo "+++ Building $(src_dir) to $(build) (pass 2)..."
  99. -mkdir -p $(build)
  100. > $(log)
  101. cd $(build); ../$(src_dir)/configure --target=$(target) --prefix=$(prefix) --with-newlib --disable-libssp --disable-tls \
  102. --enable-threads=$(thread_model) --enable-languages=$(pass2_languages) $(extra_configure_args) $(to_log)
  103. make -C $(build) all install DESTDIR=$(DESTDIR) $(to_log)
  104. $(clean_up)
  105.  
  106. # ---- }}}}
  107.  
  108.  
  109. # ---- support {{{
  110.  
  111. clean:
  112. -rm -rf build-newlib-$(m68k_target)-$(newlib_ver)
  113. -rm -rf build-gcc-$(m68k_target)-$(gcc_ver)
  114. -rm -rf build-binutils-$(m68k_target)-$(binutils_ver)
  115.  
  116. logdir:
  117. @mkdir -p $(logdir)
  118.  
  119. # If erase=1, erase build directories on the fly.
  120. ifeq (1,$(erase))
  121. define clean_up
  122. @echo "+++ Cleaning up $(build)..."
  123. -rm -rf $(build)
  124. endef
  125. endif
  126.  
  127. # If verbose=1, display output to screen as well as log files
  128. ifeq (1,$(verbose))
  129. to_log = 2>&1 | tee -a $(log)
  130. else
  131. to_log = >> $(log) 2>&1
  132. endif
  133.  
  134. # ---- }}}
  135.  
  136. # ---- phony targets {{{
  137.  
  138. .PHONY: all build build-m68k $(build_m68k_targets) clean
  139. .PHONY: build-binutils build-newlib build-gcc-pass1 build-gcc-pass2
  140.  
  141. # ---- }}}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement