79c4d434 |
1 | LOCAL_PATH := $(call my-dir) |
f1d7e114 |
2 | include $(CLEAR_VARS) |
79c4d434 |
3 | |
f906311d |
4 | $(shell cd "$(LOCAL_PATH)" && ((git describe --always || echo) | sed -e 's/.*/#define REV "\0"/' > ../include/revision.h_)) |
5 | $(shell cd "$(LOCAL_PATH)" && (diff -q ../include/revision.h_ ../include/revision.h > /dev/null 2>&1 || cp ../include/revision.h_ ../include/revision.h)) |
6 | $(shell cd "$(LOCAL_PATH)" && (rm ../include/revision.h_)) |
79c4d434 |
7 | |
8 | USE_LIBRETRO_VFS ?= 0 |
9 | USE_ASYNC_CDROM ?= 1 |
10 | USE_RTHREADS ?= 0 |
11 | NDRC_THREAD ?= 1 |
12 | |
13 | ROOT_DIR := $(LOCAL_PATH)/.. |
14 | CORE_DIR := $(ROOT_DIR)/libpcsxcore |
15 | SPU_DIR := $(ROOT_DIR)/plugins/dfsound |
16 | GPU_DIR := $(ROOT_DIR)/plugins/gpulib |
17 | CDR_DIR := $(ROOT_DIR)/plugins/cdrcimg |
18 | FRONTEND_DIR := $(ROOT_DIR)/frontend |
19 | NEON_DIR := $(ROOT_DIR)/plugins/gpu_neon |
20 | UNAI_DIR := $(ROOT_DIR)/plugins/gpu_unai |
21 | PEOPS_DIR := $(ROOT_DIR)/plugins/dfxvideo |
22 | DYNAREC_DIR := $(ROOT_DIR)/libpcsxcore/new_dynarec |
23 | DEPS_DIR := $(ROOT_DIR)/deps |
24 | LIBRETRO_COMMON := $(DEPS_DIR)/libretro-common |
25 | EXTRA_INCLUDES := |
f1d7e114 |
26 | COREFLAGS := |
27 | SOURCES_ASM := |
79c4d434 |
28 | |
29 | # core |
30 | SOURCES_C := $(CORE_DIR)/cdriso.c \ |
31 | $(CORE_DIR)/cdrom.c \ |
32 | $(CORE_DIR)/cdrom-async.c \ |
33 | $(CORE_DIR)/cheat.c \ |
34 | $(CORE_DIR)/database.c \ |
35 | $(CORE_DIR)/decode_xa.c \ |
36 | $(CORE_DIR)/mdec.c \ |
37 | $(CORE_DIR)/misc.c \ |
38 | $(CORE_DIR)/plugins.c \ |
39 | $(CORE_DIR)/ppf.c \ |
40 | $(CORE_DIR)/psxbios.c \ |
41 | $(CORE_DIR)/psxcommon.c \ |
42 | $(CORE_DIR)/psxcounters.c \ |
43 | $(CORE_DIR)/psxdma.c \ |
44 | $(CORE_DIR)/psxevents.c \ |
45 | $(CORE_DIR)/psxhw.c \ |
46 | $(CORE_DIR)/psxinterpreter.c \ |
47 | $(CORE_DIR)/psxmem.c \ |
48 | $(CORE_DIR)/r3000a.c \ |
49 | $(CORE_DIR)/sio.c \ |
50 | $(CORE_DIR)/spu.c \ |
51 | $(CORE_DIR)/gpu.c \ |
52 | $(CORE_DIR)/gte.c \ |
53 | $(CORE_DIR)/gte_nf.c \ |
54 | $(CORE_DIR)/gte_divider.c |
55 | |
56 | # spu |
57 | SOURCES_C += $(SPU_DIR)/dma.c \ |
58 | $(SPU_DIR)/freeze.c \ |
59 | $(SPU_DIR)/registers.c \ |
60 | $(SPU_DIR)/spu.c \ |
61 | $(SPU_DIR)/out.c \ |
62 | $(SPU_DIR)/nullsnd.c |
63 | |
64 | # gpu |
65 | SOURCES_C += $(GPU_DIR)/gpu.c \ |
964cc156 |
66 | $(GPU_DIR)/prim.c \ |
79c4d434 |
67 | $(GPU_DIR)/vout_pl.c |
68 | |
69 | # cdrcimg |
70 | SOURCES_C += $(CDR_DIR)/cdrcimg.c |
71 | |
72 | # frontend |
73 | SOURCES_C += $(FRONTEND_DIR)/main.c \ |
74 | $(FRONTEND_DIR)/plugin.c \ |
75 | $(FRONTEND_DIR)/cspace.c \ |
76 | $(FRONTEND_DIR)/libretro.c |
77 | |
78 | # libchdr |
79 | LCHDR = $(DEPS_DIR)/libchdr |
80 | LCHDR_LZMA = $(LCHDR)/deps/lzma-24.05 |
81 | LCHDR_ZSTD = $(LCHDR)/deps/zstd-1.5.6/lib |
82 | SOURCES_C += \ |
83 | $(LCHDR)/src/libchdr_bitstream.c \ |
84 | $(LCHDR)/src/libchdr_cdrom.c \ |
85 | $(LCHDR)/src/libchdr_chd.c \ |
86 | $(LCHDR)/src/libchdr_flac.c \ |
87 | $(LCHDR)/src/libchdr_huffman.c \ |
88 | $(LCHDR_LZMA)/src/Alloc.c \ |
89 | $(LCHDR_LZMA)/src/CpuArch.c \ |
90 | $(LCHDR_LZMA)/src/Delta.c \ |
91 | $(LCHDR_LZMA)/src/LzFind.c \ |
92 | $(LCHDR_LZMA)/src/LzmaDec.c \ |
93 | $(LCHDR_LZMA)/src/LzmaEnc.c \ |
94 | $(LCHDR_LZMA)/src/Sort.c \ |
95 | $(LCHDR_ZSTD)/common/entropy_common.c \ |
96 | $(LCHDR_ZSTD)/common/error_private.c \ |
97 | $(LCHDR_ZSTD)/common/fse_decompress.c \ |
98 | $(LCHDR_ZSTD)/common/xxhash.c \ |
99 | $(LCHDR_ZSTD)/common/zstd_common.c \ |
100 | $(LCHDR_ZSTD)/decompress/huf_decompress.c \ |
101 | $(LCHDR_ZSTD)/decompress/zstd_ddict.c \ |
102 | $(LCHDR_ZSTD)/decompress/zstd_decompress_block.c \ |
103 | $(LCHDR_ZSTD)/decompress/zstd_decompress.c |
79c4d434 |
104 | EXTRA_INCLUDES += $(LCHDR)/include $(LCHDR_LZMA)/include $(LCHDR_ZSTD) |
105 | COREFLAGS += -DHAVE_CHD -DZ7_ST -DZSTD_DISABLE_ASM |
106 | ifeq (,$(call gte,$(APP_PLATFORM_LEVEL),18)) |
107 | ifneq ($(TARGET_ARCH_ABI),arm64-v8a) |
108 | # HACK |
109 | COREFLAGS += -Dgetauxval=0* |
110 | endif |
111 | endif |
112 | |
8909f60d |
113 | COREFLAGS += -ffast-math -DHAVE_LIBRETRO -DNO_FRONTEND -DANDROID -DREARMED |
79c4d434 |
114 | COREFLAGS += -DP_HAVE_MMAP=1 -DP_HAVE_PTHREAD=1 -DP_HAVE_POSIX_MEMALIGN=1 |
115 | |
116 | ifeq ($(USE_LIBRETRO_VFS),1) |
117 | SOURCES_C += \ |
118 | $(LIBRETRO_COMMON)/compat/compat_posix_string.c \ |
119 | $(LIBRETRO_COMMON)/compat/fopen_utf8.c \ |
120 | $(LIBRETRO_COMMON)/encodings/compat_strl.c \ |
121 | $(LIBRETRO_COMMON)/encodings/encoding_utf.c \ |
122 | $(LIBRETRO_COMMON)/file/file_path.c \ |
123 | $(LIBRETRO_COMMON)/streams/file_stream.c \ |
124 | $(LIBRETRO_COMMON)/streams/file_stream_transforms.c \ |
125 | $(LIBRETRO_COMMON)/string/stdstring.c \ |
126 | $(LIBRETRO_COMMON)/time/rtime.c \ |
127 | $(LIBRETRO_COMMON)/vfs/vfs_implementation.c |
128 | COREFLAGS += -DUSE_LIBRETRO_VFS |
129 | endif |
130 | EXTRA_INCLUDES += $(LIBRETRO_COMMON)/include |
131 | |
132 | USE_RTHREADS=0 |
133 | HAVE_ARI64=0 |
134 | HAVE_LIGHTREC=0 |
135 | LIGHTREC_CUSTOM_MAP=0 |
136 | LIGHTREC_THREADED_COMPILER=0 |
137 | HAVE_GPU_NEON=0 |
138 | ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) |
139 | HAVE_ARI64=1 |
140 | HAVE_GPU_NEON=1 |
141 | else ifeq ($(TARGET_ARCH_ABI),armeabi) |
142 | HAVE_ARI64=1 |
143 | else ifeq ($(TARGET_ARCH_ABI),arm64-v8a) |
144 | HAVE_ARI64=1 |
145 | HAVE_GPU_NEON=1 |
146 | else ifeq ($(TARGET_ARCH_ABI),x86_64) |
147 | HAVE_LIGHTREC=1 |
148 | HAVE_GPU_NEON=1 |
149 | else ifeq ($(TARGET_ARCH_ABI),x86) |
150 | HAVE_LIGHTREC=1 |
151 | HAVE_GPU_NEON=1 |
152 | else |
153 | COREFLAGS += -DDRC_DISABLE |
154 | endif |
155 | COREFLAGS += -DLIGHTREC_CUSTOM_MAP=$(LIGHTREC_CUSTOM_MAP) |
156 | COREFLAGS += -DLIGHTREC_ENABLE_THREADED_COMPILER=$(LIGHTREC_THREADED_COMPILER) |
97fa754e |
157 | COREFLAGS += -DLIGHTREC_ENABLE_DISASSEMBLER=$(or $(LIGHTREC_DEBUG),0) |
746146ba |
158 | COREFLAGS += -DLIGHTREC_NO_DEBUG=$(if $(LIGHTREC_DEBUG),0,1) |
79c4d434 |
159 | |
160 | ifeq ($(HAVE_ARI64),1) |
161 | SOURCES_C += $(DYNAREC_DIR)/new_dynarec.c \ |
162 | $(DYNAREC_DIR)/pcsxmem.c |
163 | ifeq ($(TARGET_ARCH_ABI),arm64-v8a) |
164 | SOURCES_ASM += $(DYNAREC_DIR)/linkage_arm64.S |
165 | else |
166 | SOURCES_ASM += $(CORE_DIR)/gte_arm.S \ |
167 | $(SPU_DIR)/arm_utils.S \ |
168 | $(DYNAREC_DIR)/linkage_arm.S |
169 | endif |
170 | ifeq ($(NDRC_THREAD),1) |
171 | COREFLAGS += -DNDRC_THREAD |
172 | USE_RTHREADS := 1 |
173 | endif |
174 | endif |
175 | SOURCES_C += $(DYNAREC_DIR)/emu_if.c |
176 | |
177 | ifeq ($(HAVE_LIGHTREC),1) |
178 | COREFLAGS += -DLIGHTREC -DLIGHTREC_STATIC -DLIGHTREC_CODE_INV=0 |
179 | EXTRA_INCLUDES += $(DEPS_DIR)/lightning/include \ |
180 | $(DEPS_DIR)/lightrec \ |
181 | $(DEPS_DIR)/lightrec/tlsf \ |
182 | $(ROOT_DIR)/include/lightning \ |
183 | $(ROOT_DIR)/include/lightrec |
184 | SOURCES_C += $(DEPS_DIR)/lightrec/blockcache.c \ |
185 | $(DEPS_DIR)/lightrec/constprop.c \ |
186 | $(DEPS_DIR)/lightrec/disassembler.c \ |
187 | $(DEPS_DIR)/lightrec/emitter.c \ |
188 | $(DEPS_DIR)/lightrec/interpreter.c \ |
189 | $(DEPS_DIR)/lightrec/lightrec.c \ |
190 | $(DEPS_DIR)/lightrec/memmanager.c \ |
191 | $(DEPS_DIR)/lightrec/optimizer.c \ |
192 | $(DEPS_DIR)/lightrec/regcache.c \ |
193 | $(DEPS_DIR)/lightrec/recompiler.c \ |
194 | $(DEPS_DIR)/lightrec/reaper.c \ |
195 | $(DEPS_DIR)/lightrec/tlsf/tlsf.c |
196 | SOURCES_C += $(DEPS_DIR)/lightning/lib/jit_disasm.c \ |
197 | $(DEPS_DIR)/lightning/lib/jit_memory.c \ |
198 | $(DEPS_DIR)/lightning/lib/jit_names.c \ |
199 | $(DEPS_DIR)/lightning/lib/jit_note.c \ |
200 | $(DEPS_DIR)/lightning/lib/jit_print.c \ |
201 | $(DEPS_DIR)/lightning/lib/jit_size.c \ |
202 | $(DEPS_DIR)/lightning/lib/lightning.c |
203 | SOURCES_C += $(CORE_DIR)/lightrec/plugin.c |
204 | ifeq ($(LIGHTREC_CUSTOM_MAP),1) |
205 | SOURCES_C += $(CORE_DIR)/lightrec/mem.c |
206 | endif |
207 | endif |
208 | |
209 | |
210 | ifeq ($(HAVE_GPU_NEON),1) |
211 | COREFLAGS += -DNEON_BUILD -DTEXTURE_CACHE_4BPP -DTEXTURE_CACHE_8BPP -DGPU_NEON |
212 | ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) |
213 | SOURCES_ASM += $(NEON_DIR)/psx_gpu/psx_gpu_arm_neon.S |
214 | else |
215 | COREFLAGS += -DSIMD_BUILD |
216 | SOURCES_C += $(NEON_DIR)/psx_gpu/psx_gpu_simd.c |
217 | endif |
218 | SOURCES_C += $(NEON_DIR)/psx_gpu_if.c |
219 | else ifeq ($(TARGET_ARCH_ABI),armeabi) |
220 | COREFLAGS += -DUSE_GPULIB=1 -DGPU_UNAI |
221 | COREFLAGS += -DHAVE_bgr555_to_rgb565 |
222 | SOURCES_ASM += $(UNAI_DIR)/gpu_arm.S \ |
223 | $(FRONTEND_DIR)/cspace_arm.S |
224 | SOURCES_C += $(UNAI_DIR)/gpulib_if.cpp |
225 | else |
226 | COREFLAGS += -fno-strict-aliasing -DGPU_PEOPS |
227 | SOURCES_C += $(PEOPS_DIR)/gpulib_if.c |
228 | endif |
229 | |
230 | ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) |
231 | COREFLAGS += -DHAVE_bgr555_to_rgb565 -DHAVE_bgr888_to_x |
232 | SOURCES_ASM += $(CORE_DIR)/gte_neon.S \ |
233 | $(FRONTEND_DIR)/cspace_neon.S |
234 | endif |
235 | |
236 | ifeq ($(USE_ASYNC_CDROM),1) |
237 | COREFLAGS += -DUSE_ASYNC_CDROM |
238 | USE_RTHREADS := 1 |
239 | endif |
240 | ifeq ($(USE_RTHREADS),1) |
241 | SOURCES_C += \ |
242 | $(FRONTEND_DIR)/libretro-rthreads.c \ |
243 | $(LIBRETRO_COMMON)/features/features_cpu.c |
244 | COREFLAGS += -DHAVE_RTHREADS |
245 | endif |
246 | |
247 | GIT_VERSION := " $(shell git rev-parse --short HEAD || echo unknown)" |
248 | ifneq ($(GIT_VERSION)," unknown") |
249 | COREFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" |
250 | endif |
251 | |
79c4d434 |
252 | LOCAL_MODULE := retro |
253 | LOCAL_SRC_FILES := $(SOURCES_C) $(SOURCES_ASM) |
254 | LOCAL_CFLAGS := $(COREFLAGS) |
255 | LOCAL_C_INCLUDES := $(ROOT_DIR)/include |
256 | LOCAL_C_INCLUDES += $(DEPS_DIR)/crypto |
257 | LOCAL_C_INCLUDES += $(EXTRA_INCLUDES) |
f1d7e114 |
258 | LOCAL_LDFLAGS := -Wl,-version-script=$(FRONTEND_DIR)/libretro-version-script |
79c4d434 |
259 | LOCAL_LDFLAGS += -Wl,--script=$(FRONTEND_DIR)/libretro-extern.T |
260 | LOCAL_LDFLAGS += -Wl,--gc-sections |
261 | LOCAL_LDLIBS := -lz -llog |
262 | LOCAL_ARM_MODE := arm |
263 | |
264 | ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) |
265 | LOCAL_ARM_NEON := true |
266 | endif |
267 | |
268 | include $(BUILD_SHARED_LIBRARY) |