Makefile.old 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. # makefile for GCCE
  2. # settings
  3. #dprint = 1
  4. asm_memory = 1
  5. asm_render = 1
  6. asm_blit = 1
  7. #use_musashi = 1
  8. #up = 1
  9. #sis = 1
  10. # targets
  11. all: $(EPOCROOT2)epoc32 MAKEDIRS RESOURCES PicoDrive.exe
  12. clean :
  13. @perl -S ermdir.pl _build
  14. @erase 2>>nul rsc\*.rsc
  15. @erase 2>>nul rsc\*.rsg
  16. @erase 2>>nul rsc\PicoDrive.mb?
  17. # paths
  18. $(EPOCROOT2)epoc32 :
  19. @echo Please set EPOCROOT2 environmental variable to full path to your SDK
  20. @echo with ending slash (something like C:\Uiq_21\)
  21. @cd : 2> NUL # do something stupid to make it silently fail
  22. # resource compiler hates drive lettered paths
  23. EPOCROOT2_NODRV = $(filter \\%,$(subst :, ,$(EPOCROOT2)))
  24. EPOCLIB = $(EPOCROOT2)EPOC32\RELEASE\ARMV5
  25. # C/C++ Compiler
  26. CC=arm-none-symbianelf-gcc
  27. # Linker
  28. LD=arm-none-symbianelf-ld
  29. # Assembler
  30. ASM=arm-none-symbianelf-as
  31. # Archiver
  32. AR=arm-none-symbianelf-ar
  33. # Strip
  34. STRIP=arm-none-symbianelf-strip
  35. # gcc config
  36. GCCDEFINES = -DNDEBUG -D_UNICODE -D__GCCE__ -D__SYMBIAN32__ -D__EPOC32__ -D__MARM__ \
  37. -D__EABI__ -D__MARM_ARMV5__ -D__EXE__ -D__SUPPORT_CPP_EXCEPTIONS__ \
  38. -D__MARM_ARMV5__ -D__PRODUCT_INCLUDE__=\"$(EPOCROOT2)epoc32/include/variant/UIQ_3.0.hrh\"
  39. GCCDEFINES += -D_UNZIP_SUPPORT -D__BROKEN_FWRITE
  40. # 'CSL Arm Toolchain' stuff must be specified after Symbian includes
  41. GCCINCLUDES = -I "$(EPOCROOT2)epoc32\include\variant" -I "$(EPOCROOT2)EPOC32\INCLUDE" -I "$(EPOCROOT2)EPOC32\INCLUDE\LIBC" \
  42. -I "$(EPOCROOT2)\CSL Arm Toolchain\lib\gcc\arm-none-symbianelf\3.4.3\include" -I.
  43. # -funit-at-a-time is not compatible with SDK, it either has linker problems or does not start on device
  44. GCCCOMMFLAGS = -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -nostdinc -msoft-float \
  45. $(GCCINCLUDES) -include "$(EPOCROOT2)EPOC32/INCLUDE/GCCE/GCCE.h" -marm
  46. GCCCPPFLAGS = -x c++ -Wno-ctor-dtor-privacy -O3 -fno-unit-at-a-time
  47. GCCCFLAGS = -x c -O3 -fno-unit-at-a-time
  48. GCCLDFLAGS = -L"$(EPOCROOT2)CSL Arm Toolchain\arm-none-symbianelf\lib" \
  49. -L"$(EPOCROOT2)CSL Arm Toolchain\lib\gcc\arm-none-symbianelf\3.4.3" \
  50. --target1-abs --no-undefined -nostdlib -shared -Ttext 0x8000 -Tdata 0x400000 --default-symver
  51. # libs
  52. LIBS = \
  53. $(EPOCLIB)\LIB\ESTLIB.dso \
  54. $(EPOCLIB)\urel\qikalloc.lib \
  55. $(EPOCLIB)\LIB\euser.dso \
  56. $(EPOCLIB)\LIB\apparc.dso \
  57. $(EPOCLIB)\LIB\cone.dso \
  58. $(EPOCLIB)\LIB\eikcore.dso \
  59. $(EPOCLIB)\LIB\eikcoctl.dso \
  60. $(EPOCLIB)\LIB\qikcore.dso \
  61. $(EPOCLIB)\LIB\qikdlg.dso \
  62. $(EPOCLIB)\LIB\etext.dso \
  63. $(EPOCLIB)\LIB\bafl.dso \
  64. $(EPOCLIB)\LIB\efsrv.dso \
  65. $(EPOCLIB)\LIB\eikctl.dso \
  66. $(EPOCLIB)\LIB\WS32.dso \
  67. $(EPOCLIB)\LIB\EIKDLG.dso \
  68. $(EPOCLIB)\LIB\GDI.dso \
  69. $(EPOCLIB)\LIB\estor.dso \
  70. $(EPOCLIB)\LIB\EZLIB.dso \
  71. $(EPOCLIB)\LIB\HAL.dso \
  72. $(EPOCLIB)\LIB\mediaclient.dso \
  73. $(EPOCLIB)\LIB\mediaclientaudiostream.dso
  74. LIBS += \
  75. $(EPOCLIB)\LIB\qikallocdll.dso \
  76. $(EPOCLIB)\UREL\usrt2_2.lib \
  77. $(EPOCLIB)\LIB\dfpaeabi.dso \
  78. $(EPOCLIB)\LIB\dfprvct2_2.dso \
  79. $(EPOCLIB)\LIB\drtaeabi.dso \
  80. $(EPOCLIB)\LIB\scppnwdl.dso \
  81. $(EPOCLIB)\LIB\drtrvct2_2.dso
  82. # objects
  83. # launcher
  84. OBJECTS += _build\App.o _build\Engine.o _build\Dialogs.o _build\CSimpleTextParser.o
  85. # engine
  86. OBJECTS += _build\main.o _build\vid.o _build\polledas.o _build\audio_mediaserver.o _build\debug.o
  87. # Pico
  88. OBJECTS += _build\Area.o _build\Cart.o _build\Utils.o _build\Memory.o _build\Misc.o \
  89. _build\Pico.o _build\Sek.o _build\VideoPort.o _build\Draw2.o _build\Draw.o
  90. # asm stuff
  91. ifeq "$(asm_render)" "1"
  92. GCCDEFINES += -D_ASM_DRAW_C
  93. OBJECTS += _build\draw_asm.o _build\draw2_asm.o
  94. endif
  95. ifeq "$(asm_memory)" "1"
  96. GCCDEFINES += -D_ASM_MEMORY_C
  97. OBJECTS += _build\memory_asm.o
  98. endif
  99. # Pico - sound
  100. OBJECTS += _build\sound.o _build\sn76496.o _build\ym2612.o
  101. # misc
  102. OBJECTS += _build\unzip.o _build\gzio_symb.o
  103. # CPU cores
  104. ifeq "$(use_musashi)" "1"
  105. GCCDEFINES += -DEMU_M68K
  106. OBJECTS += _build\m68kcpu.o _build\m68kopac.o _build\m68kopdm.o _build\m68kopnz.o _build\m68kops.o
  107. else
  108. GCCDEFINES += -DEMU_C68K
  109. OBJECTS += _build\Cyclone.o
  110. endif
  111. ifeq "$(asm_blit)" "1"
  112. OBJECTS += _build\blit_asm.o
  113. else
  114. OBJECTS += _build\blit.o
  115. endif
  116. GCCDEFINES += -D_USE_DRZ80
  117. OBJECTS += _build\DrZ80.o
  118. GCCDEFINES += -D_ASM_YM2612_C
  119. OBJECTS += _build\ym2612_asm.o
  120. # dprint
  121. ifeq "$(dprint)" "1"
  122. GCCDEFINES += -D__DEBUG_PRINT
  123. endif
  124. define crule
  125. @echo * $<
  126. @$(CC) -c $(GCCCOMMFLAGS) $(GCCDEFINES) $(GCCCFLAGS) $< -o $@
  127. endef
  128. define cpprule
  129. @echo * $<
  130. @$(CC) -c $(GCCCOMMFLAGS) $(GCCDEFINES) $(GCCCPPFLAGS) $< -o $@
  131. endef
  132. define asmrule
  133. @echo * $<
  134. @$(ASM) -marmv4t -mthumb-interwork -o $@ $^
  135. endef
  136. # object making rules
  137. _build\App.o : App.cpp
  138. $(cpprule)
  139. _build\Engine.o : Engine.cpp
  140. $(cpprule)
  141. _build\Dialogs.o : Dialogs.cpp
  142. $(cpprule)
  143. _build\CSimpleTextParser.o : CSimpleTextParser.cpp
  144. $(cpprule)
  145. _build\main.o : engine\main.cpp
  146. $(cpprule)
  147. _build\vid.o : engine\vid.cpp
  148. $(cpprule)
  149. _build\polledas.o: engine\polledas.cpp
  150. $(cpprule)
  151. _build\audio_mediaserver.o : engine\audio_mediaserver.cpp
  152. $(cpprule)
  153. _build\debug.o : engine\debug.cpp
  154. $(cpprule)
  155. _build\blit.o : engine\blit.c
  156. $(crule)
  157. _build\Area.o : ..\..\Pico\Area.c
  158. $(crule)
  159. _build\Cart.o : ..\..\Pico\Cart.c
  160. $(crule)
  161. _build\Draw.o : ..\..\Pico\Draw.c
  162. $(crule)
  163. _build\Draw2.o : ..\..\Pico\Draw2.c
  164. $(crule)
  165. _build\Memory.o : ..\..\Pico\Memory.c
  166. $(crule)
  167. _build\Misc.o : ..\..\Pico\Misc.c
  168. $(crule)
  169. _build\Pico.o : ..\..\Pico\Pico.c
  170. $(crule)
  171. _build\Sek.o : ..\..\Pico\Sek.c
  172. $(crule)
  173. _build\Utils.o : ..\..\Pico\Utils.c
  174. $(crule)
  175. _build\VideoPort.o : ..\..\Pico\VideoPort.c
  176. $(crule)
  177. _build\sound.o : ..\..\Pico\sound\sound.c
  178. $(crule)
  179. _build\sn76496.o : ..\..\Pico\sound\sn76496.c
  180. $(crule)
  181. _build\ym2612.o : ..\..\Pico\sound\ym2612.c
  182. $(crule)
  183. _build\unzip.o : ..\..\unzip\unzip.c
  184. $(crule)
  185. _build\gzio_symb.o : ..\..\zlib\gzio_symb.c
  186. $(crule)
  187. _build\m68kcpu.o : ..\..\musashi\m68kcpu.c
  188. $(crule)
  189. _build\m68kopac.o : ..\..\musashi\m68kopac.c
  190. $(crule)
  191. _build\m68kopdm.o : ..\..\musashi\m68kopdm.c
  192. $(crule)
  193. _build\m68kopnz.o : ..\..\musashi\m68kopnz.c
  194. $(crule)
  195. _build\m68kops.o : ..\..\musashi\m68kops.c
  196. $(crule)
  197. _build\Cyclone.o : ..\..\cpu\Cyclone\proj\Cyclone.s
  198. $(asmrule)
  199. _build\DrZ80.o : ..\..\cpu\DrZ80\drz80.s
  200. $(asmrule)
  201. _build\draw_asm.o : ..\..\Pico\draw.s
  202. $(asmrule)
  203. _build\draw2_asm.o : ..\..\Pico\draw2.s
  204. $(asmrule)
  205. _build\memory_asm.o : ..\..\Pico\memory.s
  206. $(asmrule)
  207. _build\ym2612_asm.o : ..\..\Pico\sound\ym2612.s
  208. $(asmrule)
  209. _build\blit_asm.o : engine\blit.s
  210. $(asmrule)
  211. PicoDrive.exe : $(OBJECTS)
  212. @echo * ld
  213. @$(LD) $(GCCLDFLAGS) -soname PicoDrive{000a0000}[a00010f3].exe --entry _E32Startup -u _E32Startup \
  214. $(EPOCROOT2)EPOC32\RELEASE\ARMV5\UREL\EEXE.LIB -o "_build\PicoDrive_elf.exe" -Map "_build\PicoDrive.exe.map" $(OBJECTS) $(LIBS) -lsupc++ -lgcc
  215. # @echo * strip
  216. # @$(STRIP) _build\PicoDrive_elf.exe
  217. @echo * elf2e32
  218. @elf2e32 --sid=0xa00010f3 --heap=0x00000100,0x00800000 --stack=0x00003000 \
  219. --uid1=0x1000007a --uid2=0x100039ce --uid3=0xa00010f3 \
  220. --capability=none --fpu=softvfp --targettype=EXE --output="$@" \
  221. --elfinput="_build\PicoDrive_elf.exe" --linkas=PicoDrive{000a0000}[a00010f3].exe --libpath="$(EPOCLIB)\LIB"
  222. ifeq "$(sis)" "1"
  223. @make -C _out
  224. ifeq "$(up)" "1"
  225. @qup.cmd
  226. endif
  227. endif
  228. MAKEDIRS : _build
  229. _build :
  230. # @echo * making build dir
  231. @perl -S emkdir.pl $@
  232. # BitMap PicoDrive.mbm
  233. RESOURCES : rsc\PicoDrive.mbm rsc\PicoDrive.RSC rsc\PicoDrive_reg.RSC rsc\PicoDrive_loc.RSC rsc\PicoDrive.mbg
  234. rsc\PicoDrive.mbg : rsc\PicoDrive.mbm
  235. rsc\PicoDrive.mbm : rsc\pico18x18.bmp rsc\pico18x18m.bmp rsc\pico40x40.bmp rsc\pico40x40m.bmp rsc\pico64x64.bmp rsc\pico64x64m.bmp
  236. @echo * $@
  237. @perl -S epocmbm.pl -h"rsc\PicoDrive.mbg" -o"rsc\PicoDrive.mbm" -l"\Z\Resource\Apps\:rsc" \
  238. -b"/c24rsc\pico18x18.bmp /8rsc\pico18x18m.bmp /c24rsc\pico40x40.bmp /8rsc\pico40x40m.bmp /c24rsc\pico64x64.bmp /8rsc\pico64x64m.bmp" -l"\Z\Resource\Apps\:rsc"
  239. @perl -S ecopyfile.pl "rsc\PicoDrive.mbg" "$(EPOCROOT2)EPOC32\INCLUDE\PicoDrive.mbg"
  240. # Resource Z\Resource\Apps\PicoDrive.RSC
  241. rsc\PicoDrive.RSC : rsc\PicoDrive.rss picodrive.hrh
  242. @echo * $@
  243. @perl -S epocrc.pl -m045,046,047 -I "." -I- -I "$(EPOCROOT2_NODRV)EPOC32\include" -DLANGUAGE_SC -u "rsc\PicoDrive.rss" -o$@ \
  244. -h"rsc\PicoDrive.rsg" -t"rsc" -l"Z\Resource\Apps:rsc"
  245. @perl -S ecopyfile.pl "rsc\PicoDrive.rsg" "$(EPOCROOT2)EPOC32\INCLUDE\PicoDrive.RSG"
  246. # Resource Z\private\10003a3f\apps\PicoDrive_reg.RSC
  247. rsc\PicoDrive_reg.RSC : rsc\PicoDrive_reg.rss
  248. @echo * $@
  249. @perl -S epocrc.pl -m045,046,047 -I "." -I- -I "$(EPOCROOT2)EPOC32\include" -DLANGUAGE_SC -u "rsc\PicoDrive_reg.rss" -o$@ \
  250. -t"rsc" -l"Z\private\10003a3f\apps:rsc"
  251. # Resource Z\Resource\Apps\PicoDrive_loc.RSC
  252. rsc\PicoDrive_loc.RSC : rsc\PicoDrive_loc.rss
  253. @echo * $@
  254. @perl -S epocrc.pl -m045,046,047 -I "." -I- -I "$(EPOCROOT2)EPOC32\include" -DLANGUAGE_SC -u "rsc\PicoDrive_loc.rss" -o$@ \
  255. -t"rsc" -l"Z\Resource\Apps:rsc"