initial import
[picodrive.git] / platform / uiq3 / Makefile
diff --git a/platform/uiq3/Makefile b/platform/uiq3/Makefile
new file mode 100644 (file)
index 0000000..fa14569
--- /dev/null
@@ -0,0 +1,307 @@
+# makefile for GCCE\r
+\r
+# settings\r
+#dprint = 1\r
+asm_memory = 1\r
+asm_render = 1\r
+asm_blit = 1\r
+#use_musashi = 1\r
+#up = 1\r
+#sis = 1\r
+\r
+# targets\r
+all: $(EPOCROOT2)epoc32 MAKEDIRS RESOURCES PicoDrive.exe\r
+\r
+clean :\r
+       @perl -S ermdir.pl _build\r
+       @erase 2>>nul rsc\*.rsc\r
+       @erase 2>>nul rsc\*.rsg\r
+       @erase 2>>nul rsc\PicoDrive.mb?\r
+\r
+\r
+# paths\r
+$(EPOCROOT2)epoc32 :\r
+       @echo Please set EPOCROOT2 environmental variable to full path to your SDK\r
+       @echo with ending slash (something like C:\Uiq_21\)\r
+       @cd : 2> NUL # do something stupid to make it silently fail\r
+\r
+# resource compiler hates drive lettered paths\r
+EPOCROOT2_NODRV = $(filter \\%,$(subst :, ,$(EPOCROOT2)))\r
+EPOCLIB = $(EPOCROOT2)EPOC32\RELEASE\ARMV5\r
+\r
+# C/C++ Compiler\r
+CC=arm-none-symbianelf-gcc\r
+\r
+# Linker\r
+LD=arm-none-symbianelf-ld\r
+\r
+# Assembler\r
+ASM=arm-none-symbianelf-as\r
+\r
+# Archiver\r
+AR=arm-none-symbianelf-ar\r
+\r
+# Strip\r
+STRIP=arm-none-symbianelf-strip\r
+\r
+# gcc config\r
+GCCDEFINES = -DNDEBUG -D_UNICODE -D__GCCE__ -D__SYMBIAN32__ -D__EPOC32__ -D__MARM__ \\r
+               -D__EABI__ -D__MARM_ARMV5__ -D__EXE__ -D__SUPPORT_CPP_EXCEPTIONS__ \\r
+               -D__MARM_ARMV5__ -D__PRODUCT_INCLUDE__=\"$(EPOCROOT2)epoc32/include/variant/UIQ_3.0.hrh\"\r
+\r
+GCCDEFINES += -D_UNZIP_SUPPORT -D__BROKEN_FWRITE\r
+\r
+# 'CSL Arm Toolchain' stuff must be specified after Symbian includes\r
+GCCINCLUDES = -I "$(EPOCROOT2)epoc32\include\variant" -I "$(EPOCROOT2)EPOC32\INCLUDE" -I "$(EPOCROOT2)EPOC32\INCLUDE\LIBC" \\r
+               -I "$(EPOCROOT2)\CSL Arm Toolchain\lib\gcc\arm-none-symbianelf\3.4.3\include" -I.\r
+\r
+# -funit-at-a-time is not compatible with SDK, it either has linker problems or does not start on device\r
+GCCCOMMFLAGS = -Wall -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -nostdinc -msoft-float \\r
+               $(GCCINCLUDES) -include "$(EPOCROOT2)EPOC32/INCLUDE/GCCE/GCCE.h" -marm\r
+\r
+GCCCPPFLAGS = -x c++ -Wno-ctor-dtor-privacy -O3 -fno-unit-at-a-time\r
+GCCCFLAGS = -x c -O3 -fno-unit-at-a-time\r
+\r
+GCCLDFLAGS = -L"$(EPOCROOT2)CSL Arm Toolchain\arm-none-symbianelf\lib" \\r
+               -L"$(EPOCROOT2)CSL Arm Toolchain\lib\gcc\arm-none-symbianelf\3.4.3" \\r
+               --target1-abs --no-undefined -nostdlib -shared -Ttext 0x8000 -Tdata 0x400000 --default-symver\r
+\r
+# libs\r
+LIBS = \\r
+       $(EPOCLIB)\LIB\ESTLIB.dso \\r
+       $(EPOCLIB)\urel\qikalloc.lib \\r
+       $(EPOCLIB)\LIB\euser.dso \\r
+       $(EPOCLIB)\LIB\apparc.dso \\r
+       $(EPOCLIB)\LIB\cone.dso \\r
+       $(EPOCLIB)\LIB\eikcore.dso \\r
+       $(EPOCLIB)\LIB\eikcoctl.dso \\r
+       $(EPOCLIB)\LIB\qikcore.dso \\r
+       $(EPOCLIB)\LIB\qikdlg.dso \\r
+       $(EPOCLIB)\LIB\etext.dso \\r
+       $(EPOCLIB)\LIB\bafl.dso \\r
+       $(EPOCLIB)\LIB\efsrv.dso \\r
+       $(EPOCLIB)\LIB\eikctl.dso \\r
+       $(EPOCLIB)\LIB\WS32.dso \\r
+       $(EPOCLIB)\LIB\EIKDLG.dso \\r
+       $(EPOCLIB)\LIB\GDI.dso \\r
+       $(EPOCLIB)\LIB\estor.dso \\r
+       $(EPOCLIB)\LIB\EZLIB.dso \\r
+       $(EPOCLIB)\LIB\HAL.dso \\r
+       $(EPOCLIB)\LIB\mediaclient.dso \\r
+       $(EPOCLIB)\LIB\mediaclientaudiostream.dso\r
+\r
+LIBS += \\r
+       $(EPOCLIB)\LIB\qikallocdll.dso \\r
+       $(EPOCLIB)\UREL\usrt2_2.lib \\r
+       $(EPOCLIB)\LIB\dfpaeabi.dso \\r
+       $(EPOCLIB)\LIB\dfprvct2_2.dso \\r
+       $(EPOCLIB)\LIB\drtaeabi.dso \\r
+       $(EPOCLIB)\LIB\scppnwdl.dso \\r
+       $(EPOCLIB)\LIB\drtrvct2_2.dso\r
+\r
+\r
+# objects\r
+\r
+# launcher\r
+OBJECTS += _build\App.o _build\Engine.o _build\Dialogs.o _build\CSimpleTextParser.o\r
+# engine\r
+OBJECTS += _build\main.o _build\vid.o _build\polledas.o _build\audio_mediaserver.o _build\debug.o\r
+\r
+# Pico\r
+OBJECTS += _build\Area.o _build\Cart.o _build\Utils.o _build\Memory.o _build\Misc.o \\r
+               _build\Pico.o _build\Sek.o _build\VideoPort.o _build\Draw2.o _build\Draw.o\r
+# asm stuff\r
+ifeq "$(asm_render)" "1"\r
+GCCDEFINES += -D_ASM_DRAW_C\r
+OBJECTS += _build\draw_asm.o _build\draw2_asm.o\r
+endif\r
+ifeq "$(asm_memory)" "1"\r
+GCCDEFINES += -D_ASM_MEMORY_C\r
+OBJECTS += _build\memory_asm.o\r
+endif\r
+# Pico - sound\r
+OBJECTS += _build\sound.o _build\sn76496.o _build\ym2612.o\r
+# misc\r
+OBJECTS += _build\unzip.o _build\gzio_symb.o\r
+# CPU cores\r
+ifeq "$(use_musashi)" "1"\r
+GCCDEFINES += -DEMU_M68K\r
+OBJECTS += _build\m68kcpu.o _build\m68kopac.o _build\m68kopdm.o _build\m68kopnz.o _build\m68kops.o\r
+else\r
+GCCDEFINES += -DEMU_C68K\r
+OBJECTS += _build\Cyclone.o\r
+endif\r
+ifeq "$(asm_blit)" "1"\r
+OBJECTS += _build\blit_asm.o\r
+else\r
+OBJECTS += _build\blit.o\r
+endif\r
+GCCDEFINES += -D_USE_DRZ80\r
+OBJECTS += _build\DrZ80.o\r
+GCCDEFINES += -D_ASM_YM2612_C\r
+OBJECTS += _build\ym2612_asm.o\r
+\r
+\r
+\r
+# dprint\r
+ifeq "$(dprint)" "1"\r
+GCCDEFINES += -D__DEBUG_PRINT\r
+endif\r
+\r
+\r
+define crule\r
+       @echo * $<\r
+       @$(CC) -c $(GCCCOMMFLAGS) $(GCCDEFINES) $(GCCCFLAGS) $< -o $@\r
+endef\r
+\r
+define cpprule\r
+       @echo * $<\r
+       @$(CC) -c $(GCCCOMMFLAGS) $(GCCDEFINES) $(GCCCPPFLAGS) $< -o $@\r
+endef\r
+\r
+define asmrule\r
+       @echo * $<\r
+       @$(ASM) -marmv4t -mthumb-interwork -o $@ $^\r
+endef\r
+\r
+# object making rules\r
+_build\App.o     : App.cpp\r
+       $(cpprule)\r
+_build\Engine.o  : Engine.cpp\r
+       $(cpprule)\r
+_build\Dialogs.o : Dialogs.cpp\r
+       $(cpprule)\r
+_build\CSimpleTextParser.o : CSimpleTextParser.cpp\r
+       $(cpprule)\r
+\r
+_build\main.o    : engine\main.cpp\r
+       $(cpprule)\r
+_build\vid.o     : engine\vid.cpp\r
+       $(cpprule)\r
+_build\polledas.o: engine\polledas.cpp\r
+       $(cpprule)\r
+_build\audio_mediaserver.o : engine\audio_mediaserver.cpp\r
+       $(cpprule)\r
+_build\debug.o   : engine\debug.cpp\r
+       $(cpprule)\r
+_build\blit.o    : engine\blit.c\r
+       $(crule)\r
+\r
+_build\Area.o    : ..\..\Pico\Area.c\r
+       $(crule)\r
+_build\Cart.o    : ..\..\Pico\Cart.c\r
+       $(crule)\r
+_build\Draw.o    : ..\..\Pico\Draw.c\r
+       $(crule)\r
+_build\Draw2.o   : ..\..\Pico\Draw2.c\r
+       $(crule)\r
+_build\Memory.o  : ..\..\Pico\Memory.c\r
+       $(crule)\r
+_build\Misc.o    : ..\..\Pico\Misc.c\r
+       $(crule)\r
+_build\Pico.o    : ..\..\Pico\Pico.c\r
+       $(crule)\r
+_build\Sek.o     : ..\..\Pico\Sek.c\r
+       $(crule)\r
+_build\Utils.o   : ..\..\Pico\Utils.c\r
+       $(crule)\r
+_build\VideoPort.o : ..\..\Pico\VideoPort.c\r
+       $(crule)\r
+_build\sound.o   : ..\..\Pico\sound\sound.c\r
+       $(crule)\r
+_build\sn76496.o : ..\..\Pico\sound\sn76496.c\r
+       $(crule)\r
+_build\ym2612.o  : ..\..\Pico\sound\ym2612.c\r
+       $(crule)\r
+\r
+_build\unzip.o     : ..\..\unzip\unzip.c\r
+       $(crule)\r
+_build\gzio_symb.o : ..\..\zlib\gzio_symb.c\r
+       $(crule)\r
+\r
+_build\m68kcpu.o  : ..\..\musashi\m68kcpu.c\r
+       $(crule)\r
+_build\m68kopac.o : ..\..\musashi\m68kopac.c\r
+       $(crule)\r
+_build\m68kopdm.o : ..\..\musashi\m68kopdm.c\r
+       $(crule)\r
+_build\m68kopnz.o : ..\..\musashi\m68kopnz.c\r
+       $(crule)\r
+_build\m68kops.o  : ..\..\musashi\m68kops.c\r
+       $(crule)\r
+\r
+_build\Cyclone.o : ..\..\cpu\Cyclone\proj\Cyclone.s\r
+       $(asmrule)\r
+_build\DrZ80.o : ..\..\cpu\DrZ80\drz80.s\r
+       $(asmrule)\r
+_build\draw_asm.o : ..\..\Pico\draw.s\r
+       $(asmrule)\r
+_build\draw2_asm.o : ..\..\Pico\draw2.s\r
+       $(asmrule)\r
+_build\memory_asm.o : ..\..\Pico\memory.s\r
+       $(asmrule)\r
+_build\ym2612_asm.o : ..\..\Pico\sound\ym2612.s\r
+       $(asmrule)\r
+_build\blit_asm.o : engine\blit.s\r
+       $(asmrule)\r
+\r
+\r
+PicoDrive.exe : $(OBJECTS)\r
+       @echo * ld\r
+       @$(LD) $(GCCLDFLAGS) -soname PicoDrive{000a0000}[a00010f3].exe --entry _E32Startup -u _E32Startup \\r
+               $(EPOCROOT2)EPOC32\RELEASE\ARMV5\UREL\EEXE.LIB -o "_build\PicoDrive_elf.exe" -Map "_build\PicoDrive.exe.map" $(OBJECTS) $(LIBS) -lsupc++ -lgcc\r
+#      @echo * strip\r
+#      @$(STRIP) _build\PicoDrive_elf.exe\r
+       @echo * elf2e32\r
+       @elf2e32 --sid=0xa00010f3  --heap=0x00000100,0x00800000 --stack=0x00003000 \\r
+               --uid1=0x1000007a --uid2=0x100039ce --uid3=0xa00010f3 \\r
+               --capability=none --fpu=softvfp --targettype=EXE --output="$@" \\r
+               --elfinput="_build\PicoDrive_elf.exe" --linkas=PicoDrive{000a0000}[a00010f3].exe --libpath="$(EPOCLIB)\LIB"\r
+ifeq "$(sis)" "1"\r
+       @make -C _out\r
+ifeq "$(up)" "1"\r
+       @qup.cmd\r
+endif\r
+endif\r
+\r
+\r
+MAKEDIRS : _build\r
+\r
+_build :\r
+#      @echo * making build dir\r
+       @perl -S emkdir.pl $@\r
+\r
+\r
+# BitMap PicoDrive.mbm\r
+\r
+RESOURCES : rsc\PicoDrive.mbm rsc\PicoDrive.RSC rsc\PicoDrive_reg.RSC rsc\PicoDrive_loc.RSC rsc\PicoDrive.mbg\r
+\r
+rsc\PicoDrive.mbg : rsc\PicoDrive.mbm\r
+\r
+rsc\PicoDrive.mbm : rsc\pico18x18.bmp rsc\pico18x18m.bmp rsc\pico40x40.bmp rsc\pico40x40m.bmp rsc\pico64x64.bmp rsc\pico64x64m.bmp\r
+       @echo * $@\r
+       @perl -S epocmbm.pl -h"rsc\PicoDrive.mbg" -o"rsc\PicoDrive.mbm" -l"\Z\Resource\Apps\:rsc" \\r
+               -b"/c24rsc\pico18x18.bmp /8rsc\pico18x18m.bmp /c24rsc\pico40x40.bmp /8rsc\pico40x40m.bmp /c24rsc\pico64x64.bmp /8rsc\pico64x64m.bmp" -l"\Z\Resource\Apps\:rsc"\r
+       @perl -S ecopyfile.pl "rsc\PicoDrive.mbg" "$(EPOCROOT2)EPOC32\INCLUDE\PicoDrive.mbg"\r
+\r
+# Resource Z\Resource\Apps\PicoDrive.RSC\r
+\r
+rsc\PicoDrive.RSC : rsc\PicoDrive.rss picodrive.hrh\r
+       @echo * $@\r
+       @perl -S epocrc.pl -m045,046,047 -I "." -I- -I "$(EPOCROOT2_NODRV)EPOC32\include" -DLANGUAGE_SC -u "rsc\PicoDrive.rss" -o$@ \\r
+               -h"rsc\PicoDrive.rsg" -t"rsc" -l"Z\Resource\Apps:rsc"\r
+       @perl -S ecopyfile.pl "rsc\PicoDrive.rsg" "$(EPOCROOT2)EPOC32\INCLUDE\PicoDrive.RSG"\r
+\r
+# Resource Z\private\10003a3f\apps\PicoDrive_reg.RSC\r
+\r
+rsc\PicoDrive_reg.RSC : rsc\PicoDrive_reg.rss\r
+       @echo * $@\r
+       @perl -S epocrc.pl -m045,046,047 -I "." -I- -I "$(EPOCROOT2)EPOC32\include" -DLANGUAGE_SC -u "rsc\PicoDrive_reg.rss" -o$@ \\r
+       -t"rsc" -l"Z\private\10003a3f\apps:rsc"\r
+\r
+# Resource Z\Resource\Apps\PicoDrive_loc.RSC\r
+\r
+rsc\PicoDrive_loc.RSC : rsc\PicoDrive_loc.rss\r
+       @echo * $@\r
+       @perl -S epocrc.pl -m045,046,047 -I "." -I- -I "$(EPOCROOT2)EPOC32\include" -DLANGUAGE_SC -u "rsc\PicoDrive_loc.rss" -o$@ \\r
+               -t"rsc"  -l"Z\Resource\Apps:rsc"\r