UIQ3 update, some makefile unification, rm old configs, stuff
[picodrive.git] / platform / uiq3 / Makefile
index fa14569..9e91127 100644 (file)
-# makefile for GCCE\r
+# makefile for uiq3_patcher_0_2.tar.gz\r
+export CROSS = arm-none-symbianelf-\r
+APPNAME = PicoDrive\r
+VER_MAJ = 1\r
+VER_MIN = 51\r
+VENDOR = notaz\r
+UID3 = A00010F3\r
+EPOCROOT = /opt/uiq3/\r
+EPOCLIBS = qikdlg.lib etext.lib bafl.lib efsrv.lib eikctl.lib ws32.lib \\r
+       eikdlg.lib gdi.lib estor.lib hal.lib mediaclient.lib mediaclientaudiostream.lib\r
+STACK = 0x3000\r
+HEAP = 0x10,0x1000000\r
+\r
 \r
 # settings\r
-#dprint = 1\r
 asm_memory = 1\r
 asm_render = 1\r
+asm_ym2612 = 1\r
+asm_misc = 1\r
+asm_cdpico = 1\r
+asm_cdmemory = 1\r
 asm_blit = 1\r
+use_cyclone = 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
+OBJ += App.o Engine.o Dialogs.o CSimpleTextParser.o emu.o\r
 # engine\r
-OBJECTS += _build\main.o _build\vid.o _build\polledas.o _build\audio_mediaserver.o _build\debug.o\r
-\r
+OBJ += engine/main.o engine/vid.o engine/polledas.o engine/audio_mediaserver.o engine/debug.o\r
+ifeq "$(asm_blit)" "1"\r
+OBJ += engine/blit_asm.o\r
+else\r
+OBJ += engine/blit.o\r
+endif\r
+# common\r
+OBJ += ../common/emu.o ../common/config.o ../common/menu.o ../common/mp3_helix.o\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
+OBJ += Pico/Area.o Pico/Cart.o Pico/Memory.o Pico/Misc.o Pico/Pico.o Pico/Sek.o \\r
+               Pico/VideoPort.o Pico/Draw2.o Pico/Draw.o Pico/Patch.o Pico/Debug.o\r
+# Pico - CD\r
+OBJ += Pico/cd/Pico.o Pico/cd/Memory.o Pico/cd/Sek.o Pico/cd/LC89510.o \\r
+               Pico/cd/cd_sys.o Pico/cd/cd_file.o Pico/cd/cue.o Pico/cd/gfx_cd.o \\r
+               Pico/cd/Area.o Pico/cd/Misc.o Pico/cd/pcm.o Pico/cd/buffering.o\r
+# Pico - Pico\r
+OBJ += Pico/Pico/Pico.o Pico/Pico/Memory.o Pico/Pico/xpcm.o\r
+# Pico - carthw\r
+OBJ += Pico/carthw/carthw.o Pico/carthw/svp/svp.o Pico/carthw/svp/Memory.o \\r
+               Pico/carthw/svp/ssp16.o Pico/carthw/svp/compiler.o Pico/carthw/svp/stub_arm.o\r
+\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
+CFLAGS += -D_ASM_DRAW_C\r
+OBJ += Pico/draw_asm.o Pico/draw2_asm.o\r
 endif\r
 ifeq "$(asm_memory)" "1"\r
-GCCDEFINES += -D_ASM_MEMORY_C\r
-OBJECTS += _build\memory_asm.o\r
+CFLAGS += -D_ASM_MEMORY_C\r
+OBJ += Pico/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
+ifeq "$(asm_ym2612)" "1"\r
+CFLAGS += -D_ASM_YM2612_C\r
+OBJ += Pico/sound/ym2612_asm.o\r
 endif\r
-ifeq "$(asm_blit)" "1"\r
-OBJECTS += _build\blit_asm.o\r
-else\r
-OBJECTS += _build\blit.o\r
+ifeq "$(asm_misc)" "1"\r
+CFLAGS += -D_ASM_MISC_C\r
+OBJ += Pico/misc_asm.o\r
+OBJ += Pico/cd/misc_asm.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
+ifeq "$(asm_cdpico)" "1"\r
+CFLAGS += -D_ASM_CD_PICO_C\r
+OBJ += Pico/cd/pico_asm.o\r
+endif\r
+ifeq "$(asm_cdmemory)" "1"\r
+CFLAGS += -D_ASM_CD_MEMORY_C\r
+OBJ += Pico/cd/memory_asm.o\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
+# Pico - sound\r
+OBJ += Pico/sound/sound.o\r
+OBJ += Pico/sound/mix_asm.o\r
+OBJ += Pico/sound/sn76496.o Pico/sound/ym2612.o\r
+# zlib\r
+OBJ += zlib/gzio.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o \\r
+       zlib/deflate.o zlib/crc32.o zlib/adler32.o zlib/zutil.o zlib/compress.o\r
+# unzip\r
+OBJ += unzip/unzip.o unzip/unzip_stream.o\r
+# CPU cores\r
+ifeq "$(use_musashi)" "1"\r
+CFLAGS += -DEMU_M68K\r
+OBJ += cpu/musashi/m68kops.o cpu/musashi/m68kcpu.o\r
 endif\r
+ifeq "$(use_cyclone)" "1"\r
+CFLAGS += -DEMU_C68K\r
+OBJ += cpu/Cyclone/proj/Cyclone.o cpu/Cyclone/tools/idle.o\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
+# drz80\r
+CFLAGS += -D_USE_DRZ80\r
+OBJ += cpu/DrZ80/drz80.o\r
+# helix\r
+OBJ += ../common/helix/$(CROSS)helix-mp3.a\r
+\r
+\r
+vpath %.c = ../..\r
+vpath %.s = ../..\r
+vpath %.S = ../..\r
+DIRS = platform platform/common Pico Pico/cd Pico/Pico Pico/sound Pico/carthw/svp \\r
+       zlib unzip cpu cpu/musashi cpu/Cyclone/proj cpu/Cyclone/tools cpu/mz80 cpu/DrZ80\r
+\r
+ICONS := $(shell echo rsc/*.bmp)\r
+APPICON = $(NAME).mbm\r
+RSCDIR = rsc\r
+REGDIR = rsc\r
+CFLAGS += -I./ -I../../\r
+CFLAGS += -DUIQ3 -DARM -DNO_SYNC\r
+CFLAGS += -D__DEBUG_PRINT\r
+CFLAGS += -mcpu=arm926ej-s -mtune=arm926ej-s -O3 -ftracer \\r
+               -fstrength-reduce -fomit-frame-pointer -fstrict-aliasing -ffast-math\r
+SFLAGS =  -march=armv5t -msoft-float -nostdinc\r
+ASFLAGS = -mcpu=arm926ej-s -mfloat-abi=soft\r
+export CFLAGS\r
+SRCRES := $(shell echo rsc/*.rss)\r
+EPOCRCFLAGS += -I./\r
+\r
+all: mkdirs sis\r
+\r
+include uiq3.mak\r
+include ../common/common_arm.mak\r
+\r
+\r
+$(NAME).mbg $(NAME).mbm : $(ICONS)\r
+       @echo "Creating multibitmap file..."\r
+       $(BMCONV) /h$(NAME).mbg $(NAME).mbm \\r
+               /c24rsc/pico18x18.bmp /8rsc/pico18x18m.bmp \\r
+               /c24rsc/pico40x40.bmp /8rsc/pico40x40m.bmp \\r
+               /c24rsc/pico64x64.bmp /8rsc/pico64x64m.bmp\r
+\r
+\r
+engine/blit_asm.o : engine/blit.s\r
+       @echo ">>>" $@\r
+       $(AS) $(ASFLAGS) $< -o $@\r
+\r
+# App.o can't be optimized\r
+#App.o : App.cpp\r
+#      $(CC) $(CXXFLAGS) -O0 -c $< -o $@\r