1ifdef drc_debug
2use_fame = 1
3use_cz80 = 1
4use_cyclone = 0
5use_drz80 = 0
6
7asm_memory = 0
8asm_render = 0
9asm_ym2612 = 0
10asm_misc = 0
11asm_cdmemory = 0
12asm_32xdraw = 0
13asm_32xmemory = 0
14asm_mix = 0
15endif
16
17ifeq "$(profile)" "1"
18CFLAGS += -fprofile-generate
19endif
20ifeq "$(profile)" "2"
21CFLAGS += -fprofile-use
22endif
23ifeq "$(pdb)" "1"
24DEFINES += PDB
25SRCS_COMMON += $(R)cpu/debug.c
26 ifeq "$(pdb_net)" "1"
27 DEFINES += PDB_NET
28 endif
29 ifeq "$(readline)" "1"
30 DEFINES += HAVE_READLINE
31 LDFLAGS += -lreadline
32 endif
33endif
34ifeq "$(cpu_cmp)" "1"
35ifdef cpu_cmp_w
36DEFINES += CPU_CMP_W
37else
38DEFINES += CPU_CMP_R
39endif # cpu_cmp_w
40endif
41ifeq "$(pprof)" "1"
42DEFINES += PPROF
43SRCS_COMMON += $(R)platform/linux/pprof.c
44endif
45ifeq "$(gperf)" "1"
46DEFINES += GPERF
47LDFLAGS += -lprofiler -lstdc++
48endif
49
50# ARM asm stuff
51ifeq "$(ARCH)" "arm"
52ifeq "$(asm_render)" "1"
53DEFINES += _ASM_DRAW_C
54SRCS_COMMON += $(R)pico/draw_arm.S $(R)pico/draw2_arm.S
55endif
56ifeq "$(asm_memory)" "1"
57DEFINES += _ASM_MEMORY_C
58SRCS_COMMON += $(R)pico/memory_arm.S
59endif
60ifeq "$(asm_ym2612)" "1"
61DEFINES += _ASM_YM2612_C
62SRCS_COMMON += $(R)pico/sound/ym2612_arm.S
63endif
64ifeq "$(asm_misc)" "1"
65DEFINES += _ASM_MISC_C
66SRCS_COMMON += $(R)pico/misc_arm.s
67SRCS_COMMON += $(R)pico/cd/misc_arm.s
68endif
69ifeq "$(asm_cdmemory)" "1"
70DEFINES += _ASM_CD_MEMORY_C
71SRCS_COMMON += $(R)pico/cd/memory_arm.S
72endif
73ifeq "$(asm_32xdraw)" "1"
74DEFINES += _ASM_32X_DRAW
75SRCS_COMMON += $(R)pico/32x/draw_arm.S
76endif
77ifeq "$(asm_32xmemory)" "1"
78DEFINES += _ASM_32X_MEMORY_C
79SRCS_COMMON += $(R)pico/32x/memory_arm.S
80endif
81ifeq "$(asm_mix)" "1"
82SRCS_COMMON += $(R)pico/sound/mix_arm.S
83endif
84endif # ARCH=arm
85
86# === Pico core ===
87# Pico
88SRCS_COMMON += $(R)pico/pico.c $(R)pico/cart.c $(R)pico/memory.c \
89	$(R)pico/state.c $(R)pico/sek.c $(R)pico/z80if.c \
90	$(R)pico/videoport.c $(R)pico/draw2.c $(R)pico/draw.c \
91	$(R)pico/mode4.c $(R)pico/misc.c $(R)pico/eeprom.c \
92	$(R)pico/patch.c $(R)pico/debug.c $(R)pico/media.c
93# SMS
94ifneq "$(no_sms)" "1"
95SRCS_COMMON += $(R)pico/sms.c
96else
97DEFINES += NO_SMS
98endif
99# CD
100SRCS_COMMON += $(R)pico/cd/mcd.c $(R)pico/cd/memory.c $(R)pico/cd/sek.c \
101	$(R)pico/cd/cdc.c $(R)pico/cd/cdd.c $(R)pico/cd/cd_image.c \
102	$(R)pico/cd/cue.c $(R)pico/cd/gfx.c $(R)pico/cd/gfx_dma.c \
103	$(R)pico/cd/misc.c $(R)pico/cd/pcm.c
104# 32X
105ifneq "$(no_32x)" "1"
106SRCS_COMMON += $(R)pico/32x/32x.c $(R)pico/32x/memory.c $(R)pico/32x/draw.c \
107	$(R)pico/32x/sh2soc.c $(R)pico/32x/pwm.c
108else
109DEFINES += NO_32X
110endif
111# Pico
112SRCS_COMMON += $(R)pico/pico/pico.c $(R)pico/pico/memory.c $(R)pico/pico/xpcm.c
113# carthw
114SRCS_COMMON += $(R)pico/carthw/carthw.c
115SRCS_COMMON += $(R)pico/carthw/eeprom_spi.c
116# SVP
117SRCS_COMMON += $(R)pico/carthw/svp/svp.c $(R)pico/carthw/svp/memory.c \
118	$(R)pico/carthw/svp/ssp16.c
119ifeq "$(use_svpdrc)" "1"
120DEFINES += _SVP_DRC
121SRCS_COMMON += $(R)pico/carthw/svp/stub_arm.S
122SRCS_COMMON += $(R)pico/carthw/svp/compiler.c
123endif
124# sound
125SRCS_COMMON += $(R)pico/sound/sound.c
126SRCS_COMMON += $(R)pico/sound/sn76496.c $(R)pico/sound/ym2612.c
127SRCS_COMMON += $(R)pico/sound/emu2413/emu2413.c
128ifneq "$(ARCH)$(asm_mix)" "arm1"
129SRCS_COMMON += $(R)pico/sound/mix.c
130endif
131
132# === CPU cores ===
133# --- M68k ---
134ifeq "$(use_musashi)" "1"
135DEFINES += EMU_M68K
136SRCS_COMMON += $(R)cpu/musashi/m68kops.c $(R)cpu/musashi/m68kcpu.c
137#SRCS_COMMON += $(R)cpu/musashi/m68kdasm.c
138endif
139ifeq "$(use_cyclone)" "1"
140DEFINES += EMU_C68K
141SRCS_COMMON += $(R)pico/m68kif_cyclone.s $(R)cpu/cyclone/Cyclone.s \
142	$(R)cpu/cyclone/tools/idle.s
143endif
144ifeq "$(use_fame)" "1"
145DEFINES += EMU_F68K
146SRCS_COMMON += $(R)cpu/fame/famec.c
147endif
148
149# --- Z80 ---
150ifeq "$(use_drz80)" "1"
151DEFINES += _USE_DRZ80
152SRCS_COMMON += $(R)cpu/DrZ80/drz80.S
153endif
154#
155ifeq "$(use_cz80)" "1"
156DEFINES += _USE_CZ80
157SRCS_COMMON += $(R)cpu/cz80/cz80.c
158endif
159
160# --- SH2 ---
161SRCS_COMMON += $(R)cpu/drc/cmn.c
162ifneq "$(no_32x)" "1"
163SRCS_COMMON += $(R)cpu/sh2/sh2.c
164#
165ifeq "$(use_sh2drc)" "1"
166DEFINES += DRC_SH2
167SRCS_COMMON += $(R)cpu/sh2/compiler.c
168ifdef drc_debug
169DEFINES += DRC_DEBUG=$(drc_debug)
170SRCS_COMMON += $(R)cpu/sh2/mame/sh2dasm.c
171DASM = $(R)platform/libpicofe/linux/host_dasm.c
172DASMLIBS = -lbfd -lopcodes -liberty
173ifeq ("$(ARCH)",$(filter "$(ARCH)","arm" "mipsel"))
174ifeq ($(filter_out $(shell $(CC) --print-file-name=libbfd.so),"/"),)
175DASM = $(R)platform/common/host_dasm.c
176DASMLIBS =
177endif
178endif
179SRCS_COMMON += $(DASM)
180LDFLAGS += $(DASMLIBS)
181endif
182endif # use_sh2drc
183SRCS_COMMON += $(R)cpu/sh2/mame/sh2pico.c
184endif # !no_32x
185
186OBJS_COMMON := $(SRCS_COMMON:.c=.o)
187OBJS_COMMON := $(OBJS_COMMON:.s=.o)
188OBJS_COMMON := $(OBJS_COMMON:.S=.o)
189
190ifneq ($(deps_set),yes)
191ifeq "$(use_cyclone)" "1"
192$(FR)pico/pico.c: $(FR)cpu/cyclone/Cyclone.h
193endif
194
195CYCLONE_CONFIG ?= cyclone_config.h
196
197$(FR)cpu/cyclone/Cyclone.h:
198	@echo "Cyclone submodule is missing, please run 'git submodule update --init'"
199	@false
200
201$(FR)cpu/cyclone/Cyclone.s: $(FR)cpu/$(CYCLONE_CONFIG)
202	@echo building Cyclone...
203	@make CC=$(CYCLONE_CC) CXX=$(CYCLONE_CXX) -C $(R)cpu/cyclone/ CONFIG_FILE=../$(CYCLONE_CONFIG) HAVE_ARMv6=$(HAVE_ARMv6)
204
205$(FR)cpu/cyclone/Cyclone.s: $(FR)cpu/cyclone/*.cpp $(FR)cpu/cyclone/*.h
206
207$(FR)cpu/musashi/m68kops.c:
208	@make -C $(R)cpu/musashi
209
210deps_set = yes
211endif # deps_set
212