Makefile 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. export CROSS = arm-none-linux-gnueabi-
  2. # settings
  3. #mz80 = 1
  4. #cz80 = 1
  5. #debug_cyclone = 1
  6. asm_memory = 1
  7. asm_render = 1
  8. asm_ym2612 = 1
  9. asm_misc = 1
  10. asm_cdpico = 1
  11. asm_cdmemory = 1
  12. amalgamate = 0
  13. #profile = 1
  14. #use_musashi = 1
  15. #use_famec = 1
  16. ifeq "$(debug_cyclone)" "1"
  17. use_cyclone = 1
  18. use_musashi = 1
  19. endif
  20. ifeq "$(use_musashi)" "1"
  21. asm_cdpico = 0
  22. asm_memory = 0
  23. asm_cdmemory = 0
  24. else
  25. use_cyclone = 1
  26. endif
  27. DEFINC = -I../.. -I. -DARM -DPANDORA
  28. COPT_COMMON = -Wall -Winline -mcpu=cortex-a8 -mtune=cortex-a8 -march=armv7-a
  29. ifeq ($(DEBUG),)
  30. COPT_COMMON += -O2 # -ftracer -fstrength-reduce -fomit-frame-pointer -fstrict-aliasing -ffast-math
  31. else
  32. COPT_COMMON += -ggdb
  33. endif
  34. ifeq "$(profile)" "1"
  35. COPT_COMMON += -fprofile-generate
  36. endif
  37. ifeq "$(profile)" "2"
  38. COPT_COMMON += -fprofile-use
  39. endif
  40. COPT = $(COPT_COMMON)
  41. ASOPT =
  42. GCC = $(CROSS)gcc
  43. STRIP = $(CROSS)strip
  44. AS = $(CROSS)as
  45. LD = $(CROSS)ld
  46. OBJCOPY = $(CROSS)objcopy
  47. # frontend
  48. OBJS += pandora.o main.o emu.o asm_utils.o platform/gp2x/menu.o platform/gp2x/usbjoy.o
  49. # common
  50. OBJS += platform/common/emu.o platform/common/menu.o platform/common/fonts.o platform/common/config.o \
  51. platform/common/arm_utils.o platform/common/mp3_helix.o # platform/common/readpng.o
  52. # Pico
  53. ifeq "$(amalgamate)" "1"
  54. OBJS += ../../PicoAll.o
  55. else
  56. OBJS += Pico/Area.o Pico/Cart.o Pico/Memory.o Pico/Misc.o Pico/Pico.o Pico/Sek.o \
  57. Pico/VideoPort.o Pico/Draw2.o Pico/Draw.o Pico/Patch.o Pico/Debug.o
  58. # Pico - CD
  59. OBJS += Pico/cd/Pico.o Pico/cd/Memory.o Pico/cd/Sek.o Pico/cd/LC89510.o \
  60. Pico/cd/cd_sys.o Pico/cd/cd_file.o Pico/cd/cue.o Pico/cd/gfx_cd.o \
  61. Pico/cd/Area.o Pico/cd/Misc.o Pico/cd/pcm.o Pico/cd/buffering.o
  62. endif
  63. # Pico - Pico
  64. OBJS += Pico/Pico/Pico.o Pico/Pico/Memory.o Pico/Pico/xpcm.o
  65. # Pico - carthw
  66. OBJS += Pico/carthw/carthw.o Pico/carthw/svp/svp.o Pico/carthw/svp/Memory.o \
  67. Pico/carthw/svp/ssp16.o Pico/carthw/svp/compiler.o Pico/carthw/svp/stub_arm.o
  68. # asm stuff
  69. ifeq "$(asm_render)" "1"
  70. DEFINC += -D_ASM_DRAW_C
  71. OBJS += Pico/draw_asm.o Pico/draw2_asm.o
  72. endif
  73. ifeq "$(asm_memory)" "1"
  74. DEFINC += -D_ASM_MEMORY_C
  75. OBJS += Pico/memory_asm.o
  76. endif
  77. ifeq "$(asm_ym2612)" "1"
  78. DEFINC += -D_ASM_YM2612_C
  79. OBJS += Pico/sound/ym2612_asm.o
  80. endif
  81. ifeq "$(asm_misc)" "1"
  82. DEFINC += -D_ASM_MISC_C
  83. OBJS += Pico/misc_asm.o
  84. OBJS += Pico/cd/misc_asm.o
  85. endif
  86. ifeq "$(asm_cdpico)" "1"
  87. DEFINC += -D_ASM_CD_PICO_C
  88. OBJS += Pico/cd/pico_asm.o
  89. endif
  90. ifeq "$(asm_cdmemory)" "1"
  91. DEFINC += -D_ASM_CD_MEMORY_C
  92. OBJS += Pico/cd/memory_asm.o
  93. endif
  94. # Pico - sound
  95. ifneq "$(amalgamate)" "1"
  96. OBJS += Pico/sound/sound.o
  97. endif
  98. OBJS += Pico/sound/mix_asm.o
  99. OBJS += Pico/sound/sn76496.o Pico/sound/ym2612.o
  100. # zlib
  101. OBJS += zlib/gzio.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o \
  102. zlib/deflate.o zlib/crc32.o zlib/adler32.o zlib/zutil.o zlib/compress.o
  103. # unzip
  104. OBJS += unzip/unzip.o unzip/unzip_stream.o
  105. # debug
  106. ifeq "$(debug_cyclone)" "1"
  107. OBJS += Pico/DebugCPU.o cpu/musashi/m68kdasm.o
  108. endif
  109. # CPU cores
  110. ifeq "$(use_musashi)" "1"
  111. DEFINC += -DEMU_M68K
  112. OBJS += cpu/musashi/m68kops.o cpu/musashi/m68kcpu.o
  113. endif
  114. ifeq "$(use_cyclone)" "1"
  115. DEFINC += -DEMU_C68K
  116. OBJS += cpu/Cyclone/proj/Cyclone.o cpu/Cyclone/tools/idle.o
  117. endif
  118. ifeq "$(use_famec)" "1"
  119. DEFINC += -DEMU_F68K
  120. OBJS += cpu/fame/famec.o
  121. endif
  122. # drz80/mz80
  123. ifeq "$(mz80)" "1"
  124. DEFINC += -D_USE_MZ80
  125. OBJS += cpu/mz80/mz80.o
  126. else
  127. ifeq "$(cz80)" "1"
  128. DEFINC += -D_USE_CZ80
  129. OBJS += cpu/cz80/cz80.o
  130. else
  131. DEFINC += -D_USE_DRZ80
  132. OBJS += cpu/DrZ80/drz80.o
  133. endif
  134. endif
  135. vpath %.c = ../..
  136. vpath %.s = ../..
  137. vpath %.S = ../..
  138. DIRS = platform platform/gp2x platform/common Pico Pico/cd Pico/Pico Pico/sound Pico/carthw/svp \
  139. zlib unzip cpu cpu/musashi cpu/Cyclone/proj cpu/Cyclone/tools cpu/mz80 cpu/DrZ80
  140. all: mkdirs PicoDrive
  141. PicoDrive : $(OBJS) ../common/helix/$(CROSS)helix-mp3.a
  142. @echo ">>>" $@
  143. $(GCC) -o $@ $(COPT) $^ -lm -Wl,-Map=PicoDrive.map # -lpng
  144. ifeq ($(DEBUG),)
  145. $(STRIP) $@
  146. endif
  147. # cleanup
  148. clean: tidy
  149. $(RM) PicoDrive
  150. tidy:
  151. $(RM) $(OBJS)
  152. # rm -rf $(DIRS) # don't clean, gcda may be there
  153. # @make -C ../../cpu/Cyclone/proj -f Makefile.linux clean
  154. clean_prof:
  155. find ../.. -name '*.gcno' -delete
  156. find ../.. -name '*.gcda' -delete
  157. mkdirs:
  158. mkdir -p $(DIRS)
  159. .c.o:
  160. @echo ">>>" $<
  161. $(GCC) $(COPT) $(DEFINC) -c $< -o $@
  162. .s.o:
  163. @echo ">>>" $<
  164. $(GCC) $(COPT) $(DEFINC) -c $< -o $@
  165. .S.o:
  166. @echo ">>>" $<
  167. $(GCC) $(COPT) $(DEFINC) -c $< -o $@
  168. Pico/carthw/svp/compiler.o : ../../Pico/carthw/svp/ssp16.o ../../Pico/carthw/svp/gen_arm.c
  169. Pico/draw_asm.o : ../../Pico/Draw.s
  170. @echo ">>>" $<
  171. $(AS) $(ASOPT) $< -o $@
  172. Pico/draw2_asm.o : ../../Pico/Draw2.s
  173. @echo ">>>" $<
  174. $(AS) $(ASOPT) $< -o $@
  175. Pico/memory_asm.o : ../../Pico/Memory.s
  176. @echo ">>>" $<
  177. $(AS) $(ASOPT) $< -o $@
  178. Pico/sound/ym2612_asm.o : ../../Pico/sound/ym2612.s
  179. @echo ">>>" $<
  180. $(AS) $(ASOPT) $< -o $@
  181. Pico/sound/mix_asm.o : ../../Pico/sound/mix.s
  182. @echo ">>>" $<
  183. $(AS) $(ASOPT) $< -o $@
  184. Pico/misc_asm.o : ../../Pico/Misc.s
  185. @echo ">>>" $<
  186. $(AS) $(ASOPT) $< -o $@
  187. Pico/cd/pico_asm.o : ../../Pico/cd/Pico.s
  188. @echo ">>>" $<
  189. $(AS) $(ASOPT) $< -o $@
  190. Pico/cd/memory_asm.o : ../../Pico/cd/Memory.s
  191. @echo ">>>" $<
  192. $(AS) $(ASOPT) $< -o $@
  193. Pico/cd/misc_asm.o : ../../Pico/cd/Misc.s
  194. @echo ">>>" $<
  195. $(AS) $(ASOPT) $< -o $@
  196. # build Cyclone
  197. ../../cpu/Cyclone/proj/Cyclone.s :
  198. @echo building Cyclone...
  199. @make -C ../../cpu/Cyclone/proj CONFIG_FILE=config_pico.h
  200. ../../cpu/musashi/m68kops.c :
  201. @make -C ../../cpu/musashi
  202. Pico/Pico.o Pico/cd/Pico.o: ../../Pico/PicoFrameHints.c ../../Pico/PicoInt.h
  203. Pico/Memory.o Pico/cd/Memory.o : ../../Pico/MemoryCmn.c ../../Pico/PicoInt.h
  204. # build helix libs
  205. ../common/helix/$(CROSS)helix-mp3.a:
  206. make -C ../common/helix clean all
  207. readme.txt: ../../tools/textfilter ../base_readme.txt
  208. ../../tools/textfilter ../base_readme.txt $@ GP2X
  209. ../../tools/textfilter: ../../tools/textfilter.c
  210. make -C ../../tools/ textfilter
  211. # ----------- release -----------
  212. ifneq ($(findstring rel,$(MAKECMDGOALS)),)
  213. $(error TODO)
  214. ifeq ($(VER),)
  215. $(error need VER)
  216. endif
  217. endif