| 1 | TARGET ?= PicoDrive |
| 2 | CFLAGS += -Wall -ggdb -falign-functions=2 |
| 3 | CFLAGS += -I. |
| 4 | ifndef DEBUG |
| 5 | CFLAGS += -O3 -DNDEBUG -ffunction-sections |
| 6 | ifeq ($(findstring clang,$(CC)),) |
| 7 | LDFLAGS += -Wl,--gc-sections |
| 8 | endif |
| 9 | endif |
| 10 | #CFLAGS += -DEVT_LOG |
| 11 | #CFLAGS += -DDRC_CMP |
| 12 | #cpu_cmp = 1 |
| 13 | #drc_debug = 7 |
| 14 | #profile = 1 |
| 15 | |
| 16 | |
| 17 | all: config.mak target_ |
| 18 | |
| 19 | ifndef NO_CONFIG_MAK |
| 20 | ifneq ($(wildcard config.mak),) |
| 21 | config.mak: ./configure |
| 22 | @echo $@ is out-of-date, running configure |
| 23 | @sed -n "/.*Configured with/s/[^:]*: //p" $@ | sh |
| 24 | include config.mak |
| 25 | else |
| 26 | config.mak: |
| 27 | @echo "Please run ./configure before running make!" |
| 28 | @exit 1 |
| 29 | endif |
| 30 | else # NO_CONFIG_MAK |
| 31 | config.mak: |
| 32 | endif |
| 33 | |
| 34 | # default settings |
| 35 | ifeq "$(ARCH)" "arm" |
| 36 | use_cyclone ?= 1 |
| 37 | use_drz80 ?= 1 |
| 38 | use_sh2drc ?= 1 |
| 39 | use_svpdrc ?= 1 |
| 40 | |
| 41 | asm_memory ?= 1 |
| 42 | asm_render ?= 1 |
| 43 | asm_ym2612 ?= 1 |
| 44 | asm_misc ?= 1 |
| 45 | asm_cdmemory ?= 1 |
| 46 | asm_mix ?= 1 |
| 47 | else # if not arm |
| 48 | use_fame ?= 1 |
| 49 | use_cz80 ?= 1 |
| 50 | endif |
| 51 | |
| 52 | -include Makefile.local |
| 53 | |
| 54 | ifneq "$(use_cyclone)" "1" |
| 55 | # due to CPU stop flag access |
| 56 | asm_cdmemory = 0 |
| 57 | endif |
| 58 | |
| 59 | ifeq "$(PLATFORM)" "opendingux" |
| 60 | opk: $(TARGET).opk |
| 61 | |
| 62 | $(TARGET).opk: $(TARGET) |
| 63 | $(RM) -rf .opk_data |
| 64 | cp -r platform/opendingux/data .opk_data |
| 65 | cp $< .opk_data/PicoDrive |
| 66 | $(STRIP) .opk_data/PicoDrive |
| 67 | mksquashfs .opk_data $@ -all-root -noappend -no-exports -no-xattrs |
| 68 | |
| 69 | OBJS += platform/opendingux/inputmap.o |
| 70 | |
| 71 | # OpenDingux is a generic platform, really. |
| 72 | PLATFORM := generic |
| 73 | endif |
| 74 | ifeq ("$(PLATFORM)",$(filter "$(PLATFORM)","rpi1" "rpi2")) |
| 75 | CFLAGS += -DHAVE_GLES -DRASPBERRY |
| 76 | CFLAGS += -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads/ -I/opt/vc/include/interface/vmcs_host/linux/ |
| 77 | LDFLAGS += -ldl -lbcm_host -L/opt/vc/lib -lEGL -lGLESv2 |
| 78 | OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME |
| 79 | OBJS += platform/common/plat_sdl.o |
| 80 | OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o |
| 81 | OBJS += platform/libpicofe/plat_dummy.o |
| 82 | OBJS += platform/libpicofe/gl.o |
| 83 | OBJS += platform/libpicofe/gl_platform.o |
| 84 | USE_FRONTEND = 1 |
| 85 | endif |
| 86 | ifeq "$(PLATFORM)" "generic" |
| 87 | OBJS += platform/linux/emu.o platform/linux/blit.o # FIXME |
| 88 | OBJS += platform/common/plat_sdl.o |
| 89 | OBJS += platform/libpicofe/plat_sdl.o platform/libpicofe/in_sdl.o |
| 90 | OBJS += platform/libpicofe/plat_dummy.o |
| 91 | USE_FRONTEND = 1 |
| 92 | endif |
| 93 | ifeq "$(PLATFORM)" "pandora" |
| 94 | platform/common/menu_pico.o: CFLAGS += -DPANDORA |
| 95 | platform/libpicofe/linux/plat.o: CFLAGS += -DPANDORA |
| 96 | OBJS += platform/pandora/plat.o |
| 97 | OBJS += platform/pandora/asm_utils.o |
| 98 | OBJS += platform/common/arm_utils.o |
| 99 | OBJS += platform/libpicofe/linux/fbdev.o |
| 100 | OBJS += platform/libpicofe/linux/xenv.o |
| 101 | OBJS += platform/libpicofe/pandora/plat.o |
| 102 | USE_FRONTEND = 1 |
| 103 | endif |
| 104 | ifeq "$(PLATFORM)" "gp2x" |
| 105 | OBJS += platform/common/arm_utils.o |
| 106 | OBJS += platform/libpicofe/gp2x/in_gp2x.o |
| 107 | OBJS += platform/libpicofe/gp2x/soc.o |
| 108 | OBJS += platform/libpicofe/gp2x/soc_mmsp2.o |
| 109 | OBJS += platform/libpicofe/gp2x/soc_pollux.o |
| 110 | OBJS += platform/libpicofe/gp2x/plat.o |
| 111 | OBJS += platform/libpicofe/gp2x/pollux_set.o |
| 112 | OBJS += platform/gp2x/940ctl.o |
| 113 | OBJS += platform/gp2x/plat.o |
| 114 | OBJS += platform/gp2x/emu.o |
| 115 | OBJS += platform/gp2x/vid_mmsp2.o |
| 116 | OBJS += platform/gp2x/vid_pollux.o |
| 117 | OBJS += platform/gp2x/warm.o |
| 118 | USE_FRONTEND = 1 |
| 119 | PLATFORM_MP3 = 1 |
| 120 | endif |
| 121 | ifeq "$(PLATFORM)" "libretro" |
| 122 | OBJS += platform/libretro.o |
| 123 | endif |
| 124 | |
| 125 | ifeq "$(USE_FRONTEND)" "1" |
| 126 | |
| 127 | # common |
| 128 | OBJS += platform/common/main.o platform/common/emu.o \ |
| 129 | platform/common/menu_pico.o platform/common/config_file.o |
| 130 | |
| 131 | # libpicofe |
| 132 | OBJS += platform/libpicofe/input.o platform/libpicofe/readpng.o \ |
| 133 | platform/libpicofe/fonts.o platform/libpicofe/linux/in_evdev.o \ |
| 134 | platform/libpicofe/linux/plat.o |
| 135 | |
| 136 | # libpicofe - sound |
| 137 | OBJS += platform/libpicofe/sndout.o |
| 138 | ifneq ($(findstring oss,$(SOUND_DRIVERS)),) |
| 139 | platform/libpicofe/sndout.o: CFLAGS += -DHAVE_OSS |
| 140 | OBJS += platform/libpicofe/linux/sndout_oss.o |
| 141 | endif |
| 142 | ifneq ($(findstring alsa,$(SOUND_DRIVERS)),) |
| 143 | platform/libpicofe/sndout.o: CFLAGS += -DHAVE_ALSA |
| 144 | OBJS += platform/libpicofe/linux/sndout_alsa.o |
| 145 | endif |
| 146 | ifneq ($(findstring sdl,$(SOUND_DRIVERS)),) |
| 147 | platform/libpicofe/sndout.o: CFLAGS += -DHAVE_SDL |
| 148 | OBJS += platform/libpicofe/sndout_sdl.o |
| 149 | endif |
| 150 | |
| 151 | ifeq "$(ARCH)" "arm" |
| 152 | OBJS += platform/libpicofe/arm_linux.o |
| 153 | endif |
| 154 | |
| 155 | endif # USE_FRONTEND |
| 156 | |
| 157 | OBJS += platform/common/mp3.o |
| 158 | ifeq "$(PLATFORM_MP3)" "1" |
| 159 | else ifeq "$(HAVE_LIBAVCODEC)" "1" |
| 160 | OBJS += platform/common/mp3_libavcodec.o |
| 161 | else |
| 162 | OBJS += platform/common/mp3_dummy.o |
| 163 | endif |
| 164 | |
| 165 | ifeq "$(PLATFORM)" "libretro" |
| 166 | # zlib |
| 167 | OBJS += zlib/gzio.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o \ |
| 168 | zlib/deflate.o zlib/crc32.o zlib/adler32.o zlib/zutil.o zlib/compress.o zlib/uncompr.o |
| 169 | CFLAGS += -Izlib |
| 170 | endif |
| 171 | # unzip |
| 172 | OBJS += unzip/unzip.o |
| 173 | |
| 174 | |
| 175 | include platform/common/common.mak |
| 176 | |
| 177 | OBJS += $(OBJS_COMMON) |
| 178 | CFLAGS += $(addprefix -D,$(DEFINES)) |
| 179 | |
| 180 | ifneq ($(findstring gcc,$(CC)),) |
| 181 | LDFLAGS += -Wl,-Map=$(TARGET).map |
| 182 | endif |
| 183 | |
| 184 | |
| 185 | target_: $(TARGET) |
| 186 | |
| 187 | clean: |
| 188 | $(RM) $(TARGET) $(OBJS) |
| 189 | $(RM) -r .opk_data |
| 190 | |
| 191 | $(TARGET): $(OBJS) |
| 192 | $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) $(LDLIBS) |
| 193 | |
| 194 | pprof: platform/linux/pprof.c |
| 195 | $(CC) -O2 -ggdb -DPPROF -DPPROF_TOOL -I../../ -I. $^ -o $@ |
| 196 | |
| 197 | tools/textfilter: tools/textfilter.c |
| 198 | make -C tools/ textfilter |
| 199 | |
| 200 | .s.o: |
| 201 | $(CC) $(CFLAGS) -c $< -o $@ |
| 202 | |
| 203 | .S.o: |
| 204 | $(CC) $(CFLAGS) -c $< -o $@ |
| 205 | |
| 206 | # special flags - perhaps fix this someday instead? |
| 207 | pico/draw.o: CFLAGS += -fno-strict-aliasing |
| 208 | pico/draw2.o: CFLAGS += -fno-strict-aliasing |
| 209 | pico/mode4.o: CFLAGS += -fno-strict-aliasing |
| 210 | pico/cd/memory.o: CFLAGS += -fno-strict-aliasing |
| 211 | pico/cd/cd_file.o: CFLAGS += -fno-strict-aliasing |
| 212 | pico/cd/pcm.o: CFLAGS += -fno-strict-aliasing |
| 213 | pico/cd/LC89510.o: CFLAGS += -fno-strict-aliasing |
| 214 | pico/cd/gfx_cd.o: CFLAGS += -fno-strict-aliasing |
| 215 | |
| 216 | # fame needs ~2GB of RAM to compile on gcc 4.8 |
| 217 | # on x86, this is reduced by ~300MB when debug info is off (but not on ARM) |
| 218 | # not using O3 and -fno-expensive-optimizations seems to also help, but you may |
| 219 | # want to remove this stuff for better performance if your compiler can handle it |
| 220 | cpu/fame/famec.o: CFLAGS += -g0 -O2 -fno-expensive-optimizations |
| 221 | |
| 222 | # random deps |
| 223 | pico/carthw/svp/compiler.o : cpu/drc/emit_$(ARCH).c |
| 224 | cpu/sh2/compiler.o : cpu/drc/emit_$(ARCH).c |
| 225 | cpu/sh2/mame/sh2pico.o : cpu/sh2/mame/sh2.c |
| 226 | pico/pico.o pico/cd/mcd.o pico/32x/32x.o : pico/pico_cmn.c pico/pico_int.h |
| 227 | pico/memory.o pico/cd/memory.o pico/32x/memory.o : pico/pico_int.h pico/memory.h |
| 228 | cpu/fame/famec.o: cpu/fame/famec.c cpu/fame/famec_opcodes.h |