Files
parallel-dc/Makefile.common
T
libretroadmin b60d97627a Direct3D 12: draw the frame from where it is parsed
Where the adapter's memory is the processor's, kept coherent with its
cache (CacheCoherentUMA), the frame's vertices, indices and modifier
volumes' triangles are parsed straight into a buffer of a custom heap
with write-back pages, mapped for good, in four slices
(dx12/parse_arena_d3d12.h, C89): no copy into the upload ring. The
sorted passes' indices go after the frame's there. A slice is taken when
the context's fence has passed the value of the submission that last
drew from it, polled; with none free, or another adapter, the frame is
copied as ever. Render() is the base's, final, around RenderFrame().

d3d_hdr.c's D3DH_NOT_UMA has the adapter say otherwise and D3DH_EVERY
prints every frame's sum; d3d_parse_arena.sh checks every render drawn
from where it was parsed and every frame the one of the lists copied,
under wine.
2026-11-02 17:04:49 +01:00

500 lines
19 KiB
Makefile

DEPS_DIR = $(CORE_DIR)/core/deps
LIBRETRO_COMM_DIR = $(CORE_DIR)/core/libretro-common
INCFLAGS += -I$(CORE_DIR)/core/libretro \
-I$(CORE_DIR)/core/ \
-I$(DEPS_DIR) \
-I$(LIBRETRO_COMM_DIR)/include \
-I$(DEPS_DIR)/vixl \
-I$(DEPS_DIR)/stb
SOURCES_C ?=
SOURCES_CXX := \
$(CORE_DIR)/core/hw/arm7/arm_mem.cpp \
$(CORE_DIR)/core/hw/arm7/arm7.cpp \
$(CORE_DIR)/core/hw/arm7/arm7_rec.cpp \
$(CORE_DIR)/core/hw/arm7/arm7_rec_x64.cpp \
$(CORE_DIR)/core/hw/arm7/arm7_rec_x86.cpp \
$(CORE_DIR)/core/hw/arm7/arm7_rec_arm64.cpp \
$(CORE_DIR)/core/hw/arm7/vbaARM.cpp \
\
$(CORE_DIR)/core/hw/aica/dsp.cpp \
$(CORE_DIR)/core/hw/aica/dsp_arm64.cpp \
$(CORE_DIR)/core/hw/aica/dsp_interp.cpp \
$(CORE_DIR)/core/hw/aica/dsp_x64.cpp \
$(CORE_DIR)/core/hw/aica/dsp_x86.cpp \
$(CORE_DIR)/core/hw/aica/aica.cpp \
$(CORE_DIR)/core/hw/aica/aica_if.cpp \
$(CORE_DIR)/core/hw/aica/aica_mem.cpp \
$(CORE_DIR)/core/hw/aica/sgc_if.cpp \
\
$(CORE_DIR)/core/hw/holly/holly_intc.cpp \
$(CORE_DIR)/core/hw/holly/sb.cpp \
$(CORE_DIR)/core/hw/holly/sb_mem.cpp \
\
$(CORE_DIR)/core/hw/gdrom/gdrom_response.cpp \
$(CORE_DIR)/core/hw/gdrom/gdromv3.cpp \
\
$(CORE_DIR)/core/hw/maple/maple_helper.cpp \
$(CORE_DIR)/core/hw/maple/maple_devs.cpp \
$(CORE_DIR)/core/hw/maple/maple_if.cpp \
$(CORE_DIR)/core/hw/maple/maple_cfg.cpp \
$(CORE_DIR)/core/hw/maple/vmu_beep.cpp \
\
$(CORE_DIR)/core/hw/mem/_vmem.cpp \
\
$(CORE_DIR)/core/hw/pvr/drkPvr.cpp \
$(CORE_DIR)/core/hw/pvr/elan_host.cpp \
$(CORE_DIR)/core/hw/pvr/Renderer_if.cpp \
$(CORE_DIR)/core/hw/pvr/pvr_mem.cpp \
$(CORE_DIR)/core/hw/pvr/pvr_regs.cpp \
$(CORE_DIR)/core/hw/pvr/pvr_sb_regs.cpp \
$(CORE_DIR)/core/hw/pvr/spg.cpp \
$(CORE_DIR)/core/hw/pvr/ta.cpp \
$(CORE_DIR)/core/hw/pvr/ta_ctx.cpp \
$(CORE_DIR)/core/hw/pvr/ta_vtx.cpp \
$(CORE_DIR)/core/rend/CustomTexture.cpp \
$(CORE_DIR)/core/rend/sorter.cpp \
$(CORE_DIR)/core/rend/upscaler.cpp \
$(CORE_DIR)/core/rend/TexCache.cpp \
$(CORE_DIR)/core/rend/rtt_watch.cpp \
$(CORE_DIR)/core/rend/last_picture.cpp \
$(CORE_DIR)/core/rend/tile/compute_frame.cpp \
\
$(CORE_DIR)/core/hw/sh4/sh4_mmr.cpp \
$(CORE_DIR)/core/hw/sh4/sh4_mem.cpp \
$(CORE_DIR)/core/hw/sh4/sh4_interrupts.cpp \
$(CORE_DIR)/core/hw/sh4/sh4_rom.cpp \
$(CORE_DIR)/core/hw/sh4/sh4_core_regs.cpp \
$(CORE_DIR)/core/hw/sh4/sh4_sched.cpp \
$(CORE_DIR)/core/hw/sh4/sh4_opcode_list.cpp \
$(CORE_DIR)/core/hw/sh4/interpr/sh4_interpreter.cpp \
$(CORE_DIR)/core/hw/sh4/interpr/sh4_fpu.cpp \
$(CORE_DIR)/core/hw/sh4/interpr/sh4_opcodes.cpp \
$(CORE_DIR)/core/hw/sh4/modules/serial.cpp \
$(CORE_DIR)/core/hw/sh4/modules/rtc.cpp \
$(CORE_DIR)/core/hw/sh4/modules/bsc.cpp \
$(CORE_DIR)/core/hw/sh4/modules/tmu.cpp \
$(CORE_DIR)/core/hw/sh4/modules/ccn.cpp \
$(CORE_DIR)/core/hw/sh4/modules/intc.cpp \
$(CORE_DIR)/core/hw/sh4/modules/ubc.cpp \
$(CORE_DIR)/core/hw/sh4/modules/cpg.cpp \
$(CORE_DIR)/core/hw/sh4/modules/dmac.cpp \
$(CORE_DIR)/core/hw/sh4/modules/mmu.cpp \
$(CORE_DIR)/core/hw/sh4/modules/fastmmu.cpp \
$(CORE_DIR)/core/imgread/ImgReader.cpp \
$(CORE_DIR)/core/imgread/cdi.cpp \
$(CORE_DIR)/core/imgread/chd.cpp \
$(CORE_DIR)/core/imgread/common.cpp \
$(CORE_DIR)/core/imgread/cue.cpp \
$(CORE_DIR)/core/imgread/gdi.cpp \
$(CORE_DIR)/core/log/LogManagerLibretro.cpp \
\
$(CORE_DIR)/core/cheats.cpp \
$(CORE_DIR)/core/nullDC.cpp \
$(CORE_DIR)/core/serialize.cpp \
$(CORE_DIR)/core/stdclass.cpp \
\
$(DEPS_DIR)/crypto/sha256.cpp \
$(DEPS_DIR)/crypto/md5.cpp \
$(DEPS_DIR)/libelf/elf.cpp \
$(DEPS_DIR)/libelf/elf32.cpp \
$(DEPS_DIR)/libelf/elf64.cpp \
$(DEPS_DIR)/chdpsr/cdipsr.cpp \
\
$(CORE_DIR)/core/reios/reios_elf.cpp \
$(CORE_DIR)/core/reios/reios.cpp \
$(CORE_DIR)/core/reios/gdrom_hle.cpp \
$(CORE_DIR)/core/reios/descrambl.cpp \
\
# CHD images are read by libretro-common's clean-room rchd reader. Its
# FLAC and zstd hunk codecs come from the same tree; deflate and LZMA
# are the archive codecs below, and the version 5 map needs
# encoding_huffman.c to open at all.
CHD_SOURCES_C = \
$(CORE_DIR)/core/imgread/chd_image.c \
$(LIBRETRO_COMM_DIR)/formats/chd/rchd.c \
$(LIBRETRO_COMM_DIR)/encodings/encoding_huffman.c \
$(LIBRETRO_COMM_DIR)/encodings/encoding_rzstd.c \
$(LIBRETRO_COMM_DIR)/formats/flac/rflac.c
# zip and 7z archives: rzip_archive over encoding_deflate.c, r7z_archive
# over the LZMA/LZMA2/BCJ units.
ARCHIVE_SOURCES_C = \
$(CORE_DIR)/core/archive/archive.c \
$(LIBRETRO_COMM_DIR)/encodings/encoding_deflate.c \
$(LIBRETRO_COMM_DIR)/encodings/encoding_crc32.c \
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_archive.c \
$(LIBRETRO_COMM_DIR)/encodings/encoding_rbzip2.c \
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_lzma.c \
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_lzma2.c \
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_lzma_stream.c \
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_bcj2.c \
$(LIBRETRO_COMM_DIR)/formats/7z/r7z_filters.c \
$(LIBRETRO_COMM_DIR)/formats/zip/rzip_archive.c \
$(LIBRETRO_COMM_DIR)/formats/rar/rrar_archive.c \
$(LIBRETRO_COMM_DIR)/formats/rar/rrar_ppmd7.c \
$(LIBRETRO_COMM_DIR)/features/features_cpu.c
PICOTCP_INCFLAGS = \
-I$(DEPS_DIR)/picotcp/include \
-I$(DEPS_DIR)/picotcp/modules
PICOTCP_CFLAGS = -DPICO_SUPPORT_UDP -DPICO_SUPPORT_DHCPD
PICOTCP_SOURCES_C = \
$(DEPS_DIR)/picotcp/modules/pico_arp.c \
$(DEPS_DIR)/picotcp/modules/pico_dev_ppp.c \
$(DEPS_DIR)/picotcp/modules/pico_dhcp_common.c \
$(DEPS_DIR)/picotcp/modules/pico_dhcp_server.c \
$(DEPS_DIR)/picotcp/modules/pico_dns_client.c \
$(DEPS_DIR)/picotcp/modules/pico_dns_common.c \
$(DEPS_DIR)/picotcp/modules/pico_ethernet.c \
$(DEPS_DIR)/picotcp/modules/pico_fragments.c \
$(DEPS_DIR)/picotcp/modules/pico_ipv4.c \
$(DEPS_DIR)/picotcp/modules/pico_socket_tcp.c \
$(DEPS_DIR)/picotcp/modules/pico_socket_udp.c \
$(DEPS_DIR)/picotcp/modules/pico_tcp.c \
$(DEPS_DIR)/picotcp/modules/pico_udp.c \
$(DEPS_DIR)/picotcp/stack/pico_device.c \
$(DEPS_DIR)/picotcp/stack/pico_frame.c \
$(DEPS_DIR)/picotcp/stack/pico_md5.c \
$(DEPS_DIR)/picotcp/stack/pico_protocol.c \
$(DEPS_DIR)/picotcp/stack/pico_socket_multicast.c \
$(DEPS_DIR)/picotcp/stack/pico_socket.c \
$(DEPS_DIR)/picotcp/stack/pico_stack.c \
$(DEPS_DIR)/picotcp/stack/pico_tree.c
XXHASH_SOURCES_C = $(DEPS_DIR)/xxhash/xxhash.c
# The NAOMI 2's geometry processor
SOURCES_C += $(CORE_DIR)/core/hw/pvr/elan.c
# The ROMs of a NAOMI cartridge that share a range a word each in turn
SOURCES_C += $(CORE_DIR)/core/hw/naomi/naomi_interleave.c
# What a GD-ROM game's DIMM board leaves in the NAOMI's memory
SOURCES_C += $(CORE_DIR)/core/hw/naomi/naomi_dimm.c
# The lists a frame's parse appends to (List<T>'s, typed: helper_classes.h)
SOURCES_C += $(CORE_DIR)/core/hw/pvr/ta_list.c
# ...and a strip's indices (make_index()'s)
SOURCES_C += $(CORE_DIR)/core/hw/pvr/ta_index.c
# ...and where a renderer has them parsed to (core/rend/parse_arena.h)
SOURCES_C += $(CORE_DIR)/core/rend/parse_arena.c
SOURCES_ASM :=
ifeq ($(SYSTEM_PICOTCP), 1)
CFLAGS += $(shell pkg-config --cflags picotcp)
LIBS += $(shell pkg-config --libs picotcp)
else
INCFLAGS += $(PICOTCP_INCFLAGS)
CFLAGS += $(PICOTCP_CFLAGS)
SOURCES_C += $(PICOTCP_SOURCES_C)
endif
ifeq ($(SYSTEM_XXHASH), 1)
CFLAGS += $(shell pkg-config --cflags libxxhash)
LIBS += $(shell pkg-config --libs libxxhash)
else
SOURCES_C += $(XXHASH_SOURCES_C)
endif
ifeq ($(ENABLE_MODEM), 1)
INCFLAGS += -I$(CORE_DIR)/core/deps/miniupnpc
SOURCES_CXX += $(CORE_DIR)/core/hw/modem/dns.cpp \
$(CORE_DIR)/core/hw/modem/modem.cpp \
$(CORE_DIR)/core/hw/bba/bba.cpp \
$(CORE_DIR)/core/hw/bba/rtl8139c.cpp \
$(CORE_DIR)/core/network/picoppp.cpp \
$(CORE_DIR)/core/network/miniupnp.cpp
SOURCES_CXX += $(CORE_DIR)/core/hw/modem/v42.cpp \
$(CORE_DIR)/core/hw/modem/v42bis.cpp \
$(CORE_DIR)/core/network/dcnet.cpp
SOURCES_C += \
$(CORE_DIR)/core/deps/miniupnpc/addr_is_reserved.c \
$(CORE_DIR)/core/deps/miniupnpc/igd_desc_parse.c \
$(CORE_DIR)/core/deps/miniupnpc/upnpreplyparse.c \
$(CORE_DIR)/core/deps/miniupnpc/upnpcommands.c \
$(CORE_DIR)/core/deps/miniupnpc/upnperrors.c \
$(CORE_DIR)/core/deps/miniupnpc/connecthostport.c \
$(CORE_DIR)/core/deps/miniupnpc/portlistingparse.c \
$(CORE_DIR)/core/deps/miniupnpc/receivedata.c \
$(CORE_DIR)/core/deps/miniupnpc/upnpdev.c \
$(CORE_DIR)/core/deps/miniupnpc/minissdpc.c \
$(CORE_DIR)/core/deps/miniupnpc/miniwget.c \
$(CORE_DIR)/core/deps/miniupnpc/miniupnpc.c \
$(CORE_DIR)/core/deps/miniupnpc/minixml.c \
$(CORE_DIR)/core/deps/miniupnpc/minisoap.c
CORE_DEFINES += -DENABLE_MODEM -DMINIUPNP_STATICLIB
endif
ifeq ($(HAVE_GL), 1)
SOURCES_CXX += $(CORE_DIR)/core/rend/gles/gles.cpp \
$(CORE_DIR)/core/rend/gles/gldraw.cpp \
$(CORE_DIR)/core/rend/gles/gltex.cpp \
$(CORE_DIR)/core/rend/gles/gl_texdecoder.cpp \
$(CORE_DIR)/core/rend/gles/gl_writeout.cpp \
$(CORE_DIR)/core/rend/gles/glprogram_cache.cpp
ifeq ($(HAVE_GL4), 1)
SOURCES_CXX += $(CORE_DIR)/core/rend/gl4/gles.cpp \
$(CORE_DIR)/core/rend/gl4/gldraw.cpp \
$(CORE_DIR)/core/rend/gl4/gltex.cpp \
$(CORE_DIR)/core/rend/gl4/abuffer.cpp \
$(CORE_DIR)/core/rend/gles/ta_decoder_gl.cpp
# (where a frame is parsed when the card draws it from there: gles/parse_arena_gl.h)
SOURCES_C += $(CORE_DIR)/core/rend/gles/parse_arena_gl.c
endif
SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/rglgen.c \
$(LIBRETRO_COMM_DIR)/glsm/glsm.c
ifeq ($(GLES), 1)
SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/glsym_es2.c
else
SOURCES_C += $(LIBRETRO_COMM_DIR)/glsym/glsym_gl.c
endif
endif
ifeq ($(HAVE_VULKAN), 1)
# (the shaders are SPIR-V made when the source is: tools/rend/kernels_spv.sh; no GLSL compiler is built in)
INCFLAGS += -I$(DEPS_DIR)/khronos
SOURCES_C += $(LIBRETRO_COMM_DIR)/vulkan/vulkan_symbol_wrapper.c \
$(CORE_DIR)/core/rend/vulkan/vk_heap.c \
$(CORE_DIR)/core/rend/vulkan/parse_arena_vk.c \
$(CORE_DIR)/core/rend/vulkan/hdr_encode_vk.c
SOURCES_CXX += \
$(CORE_DIR)/core/rend/vulkan/vulkan_context.cpp \
$(CORE_DIR)/core/rend/vulkan/heap.cpp \
$(CORE_DIR)/core/rend/vulkan/buffer.cpp \
$(CORE_DIR)/core/rend/vulkan/drawer.cpp \
$(CORE_DIR)/core/rend/vulkan/motion_pass.cpp \
$(CORE_DIR)/core/rend/vulkan/writeout.cpp \
$(CORE_DIR)/core/rend/vulkan/rtt_read.cpp \
$(CORE_DIR)/core/rend/vulkan/pipeline.cpp \
$(CORE_DIR)/core/rend/vulkan/pso.cpp \
$(CORE_DIR)/core/rend/vulkan/quad.cpp \
$(CORE_DIR)/core/rend/vulkan/shaders.cpp \
$(CORE_DIR)/core/rend/vulkan/texture.cpp \
$(CORE_DIR)/core/rend/vulkan/tex_decoder.cpp \
$(CORE_DIR)/core/rend/vulkan/ta_decoder.cpp \
$(CORE_DIR)/core/rend/vulkan/vmu.cpp \
$(CORE_DIR)/core/rend/vulkan/vulkan_renderer.cpp \
$(CORE_DIR)/core/rend/vulkan/oit/oit_drawer.cpp \
$(CORE_DIR)/core/rend/vulkan/oit/oit_pipeline.cpp \
$(CORE_DIR)/core/rend/vulkan/oit/oit_renderer.cpp \
$(CORE_DIR)/core/rend/vulkan/oit/oit_renderpass.cpp \
$(CORE_DIR)/core/rend/vulkan/compute_drawer.cpp
endif
# Direct3D 11, on Windows: the frontend's device, the shaders compiled when
# they are first needed
ifeq ($(HAVE_D3D11), 1)
SOURCES_CXX += \
$(CORE_DIR)/core/rend/dx11/dx11context_lr.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_overlay.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_nvapi.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_renderer.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_writeout.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_renderstate.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_shaders.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_ta_decoder.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_texdecoder.cpp \
$(CORE_DIR)/core/rend/dx11/dx11_texture.cpp \
$(CORE_DIR)/core/rend/dx11/oit/dx11_oitrenderer.cpp \
$(CORE_DIR)/core/rend/dx11/oit/dx11_oitshaders.cpp
SOURCES_C += $(CORE_DIR)/core/rend/hdr/hdr_encode_d3d11.c
endif
# Direct3D 12, on Windows: the frontend's device and queue, the shaders DXBC
# made when the core is built (rend/dx12/dx12_dxbc.inc)
ifeq ($(HAVE_D3D12), 1)
SOURCES_CXX += \
$(CORE_DIR)/core/rend/dx12/dx12context_lr.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_overlay.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_pso.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_nvapi.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_renderer.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_shaders.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_ta_decoder.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_compute.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_writeout.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_texdecoder.cpp \
$(CORE_DIR)/core/rend/dx12/dx12_texture.cpp \
$(CORE_DIR)/core/rend/dx12/oit/dx12_oitrenderer.cpp
SOURCES_C += $(CORE_DIR)/core/rend/hdr/hdr_encode_d3d12.c \
$(CORE_DIR)/core/rend/dx12/parse_arena_d3d12.c
endif
# The HDR output's Display Transform (rend/hdr/, Color Format), for the
# renderers that have the HDR output
ifneq (,$(filter 1,$(HAVE_VULKAN) $(HAVE_D3D11) $(HAVE_D3D12)))
SOURCES_C += $(CORE_DIR)/core/rend/hdr/hdr_output.c \
$(CORE_DIR)/core/rend/hdr/hdr_transform.c \
$(CORE_DIR)/core/rend/hdr/hdr_aces2.c \
$(CORE_DIR)/core/rend/hdr/hdr_display.c \
$(CORE_DIR)/core/rend/hdr/hdr_libretro.c
endif
# NVIDIA's NVAPI, loaded when it is run, for either Direct3D renderer
# (libretro-common's loader, gfx/nvidia/nvapi_loader.h)
ifneq (,$(filter 1,$(HAVE_D3D11) $(HAVE_D3D12)))
SOURCES_C += $(LIBRETRO_COMM_DIR)/gfx/nvidia/nvapi_loader.c
endif
# Shaders and pipelines made ahead on a thread of their own, for either
# Direct3D renderer (rend/d3d_warm.h)
ifneq (,$(filter 1,$(HAVE_D3D11) $(HAVE_D3D12)))
SOURCES_C += $(CORE_DIR)/core/rend/d3d_warm.c
endif
ifeq ($(HAVE_D3D11), 1)
SOURCES_C += $(CORE_DIR)/core/rend/d3d_shader_cache.c
endif
# Direct3D 9, on Windows: the frontend's device, every shader compiled when
# the renderer is first set up
ifeq ($(HAVE_D3D9), 1)
SOURCES_CXX += \
$(CORE_DIR)/core/rend/dx9/dx9context_lr.cpp \
$(CORE_DIR)/core/rend/dx9/dx9_overlay.cpp \
$(CORE_DIR)/core/rend/dx9/dx9_renderer.cpp \
$(CORE_DIR)/core/rend/dx9/dx9_shaders.cpp \
$(CORE_DIR)/core/rend/dx9/dx9_texture.cpp \
$(CORE_DIR)/core/rend/dx9/dx9_texdecoder.cpp
endif
SOURCES_CXX += $(CORE_DIR)/core/hw/naomi/naomi.cpp \
$(CORE_DIR)/core/hw/naomi/naomi_cart.cpp \
$(CORE_DIR)/core/hw/naomi/decrypt.cpp \
$(CORE_DIR)/core/hw/naomi/m1cartridge.cpp \
$(CORE_DIR)/core/hw/naomi/m4cartridge.cpp \
$(CORE_DIR)/core/hw/naomi/awcartridge.cpp \
$(CORE_DIR)/core/hw/naomi/gdcartridge.cpp \
$(CORE_DIR)/core/hw/flashrom/x76f100.cpp \
$(CORE_DIR)/core/hw/naomi/naomi_m3comm.cpp \
$(CORE_DIR)/core/hw/naomi/card_reader.cpp \
$(CORE_DIR)/core/hw/naomi/touchscreen.cpp \
$(CORE_DIR)/core/hw/naomi/hopper.cpp \
$(CORE_DIR)/core/hw/naomi/printer.cpp \
$(CORE_DIR)/core/hw/naomi/midiffb.cpp \
$(CORE_DIR)/core/hw/naomi/systemsp.cpp \
$(CORE_DIR)/core/hw/naomi/dinokich.cpp \
$(CORE_DIR)/core/hw/naomi/dinokich_card.cpp \
$(CORE_DIR)/core/network/naomi_network.cpp
# The device in the Dreamcast's expansion port, in every build
SOURCES_CXX += $(CORE_DIR)/core/network/netstate.cpp
ifeq ($(HAVE_GENERIC_JIT), 1)
DYNAREC_USED = 1
SOURCES_CXX += $(CORE_DIR)/core/rec-cpp/rec_cpp.cpp
endif
# Recompiler (x64)
ifneq ($(filter $(WITH_DYNAREC), x86_64 x64),)
DYNAREC_USED = 1
SOURCES_CXX += $(CORE_DIR)/core/rec-x64/rec_x64.cpp
# Recompiler (x86 32bit)
else ifneq ($(filter $(WITH_DYNAREC), i386 i686 x86),)
DYNAREC_USED = 1
SOURCES_CXX += $(CORE_DIR)/core/rec-x86/rec_x86.cpp
endif
# Recompiler (ARM)
ifeq ($(WITH_DYNAREC), arm)
DYNAREC_USED = 1
SOURCES_CXX += $(CORE_DIR)/core/rec-ARM/rec_arm.cpp
SOURCES_ASM += $(CORE_DIR)/core/rec-ARM/ngen_arm.S
endif
# Recompiler (ARM64)
ifneq ($(filter $(WITH_DYNAREC), arm64 aarch64),)
DYNAREC_USED = 1
# (for macOS, what it has is in rec_arm64.cpp, in Apple's syntax)
ifeq (,$(findstring osx,$(platform)))
SOURCES_ASM += $(CORE_DIR)/core/rec-ARM64/ngen_arm64.S
endif
SOURCES_CXX += $(CORE_DIR)/core/rec-ARM64/rec_arm64.cpp \
$(DEPS_DIR)/vixl/code-buffer-vixl.cc \
$(DEPS_DIR)/vixl/compiler-intrinsics-vixl.cc \
$(DEPS_DIR)/vixl/cpu-features.cc \
$(DEPS_DIR)/vixl/utils-vixl.cc \
$(DEPS_DIR)/vixl/aarch64/assembler-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/cpu-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/cpu-features-auditor-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/decoder-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/disasm-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/instructions-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/instrument-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/logic-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/macro-assembler-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/operands-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/pointer-auth-aarch64.cc \
$(DEPS_DIR)/vixl/aarch64/simulator-aarch64.cc
endif
# Dynarec
ifeq ($(DYNAREC_USED), 1)
SOURCES_CXX += $(CORE_DIR)/core/hw/sh4/dyna/decoder.cpp \
$(CORE_DIR)/core/hw/sh4/dyna/driver.cpp \
$(CORE_DIR)/core/hw/sh4/dyna/blockmanager.cpp \
$(CORE_DIR)/core/hw/sh4/dyna/wait_site.cpp \
$(CORE_DIR)/core/hw/sh4/dyna/shil.cpp \
$(CORE_DIR)/core/hw/sh4/dyna/ssa.cpp
endif
SOURCES_CXX += $(CORE_DIR)/core/libretro/libretro.cpp \
$(CORE_DIR)/core/libretro/audiostream.cpp \
$(CORE_DIR)/core/libretro/common.cpp \
$(CORE_DIR)/core/libretro/vmem_utils.cpp
SOURCES_C += $(DEPS_DIR)/coreio/coreio.c
SOURCES_C += $(CORE_DIR)/core/savewriter.c
# When statically linked into RetroArch (e.g. libnx), the frontend already
# compiles these libretro-common sources; building them again would duplicate
# symbols at link time. The headers stay -- they now match current upstream, so
# the declarations agree with the objects RetroArch provides.
ifneq ($(STATIC_LINKING), 1)
SOURCES_C += $(LIBRETRO_COMM_DIR)/memmap/memalign.c \
$(LIBRETRO_COMM_DIR)/file/file_path.c \
$(LIBRETRO_COMM_DIR)/file/file_path_io.c \
$(LIBRETRO_COMM_DIR)/vfs/vfs_implementation.c \
$(LIBRETRO_COMM_DIR)/vfs/vfs_prefetch.c \
$(LIBRETRO_COMM_DIR)/streams/file_stream.c \
$(LIBRETRO_COMM_DIR)/streams/file_stream_transforms.c \
$(LIBRETRO_COMM_DIR)/encodings/encoding_utf.c \
$(LIBRETRO_COMM_DIR)/compat/compat_strl.c \
$(LIBRETRO_COMM_DIR)/compat/fopen_utf8.c \
$(LIBRETRO_COMM_DIR)/compat/compat_strcasestr.c \
$(LIBRETRO_COMM_DIR)/file/retro_dirent.c \
$(LIBRETRO_COMM_DIR)/string/stdstring.c \
$(LIBRETRO_COMM_DIR)/string/rstrtod.c \
$(LIBRETRO_COMM_DIR)/time/rtime.c
endif
ifeq ($(NO_THREADS), 1)
else
ifneq ($(STATIC_LINKING), 1)
SOURCES_C += $(LIBRETRO_COMM_DIR)/rthreads/rthreads.c \
$(LIBRETRO_COMM_DIR)/rthreads/retro_eventcount.c \
$(LIBRETRO_COMM_DIR)/queues/retro_spsc.c
endif
endif
ifeq ($(HAVE_TEXUPSCALE), 1)
SOURCES_CXX += $(DEPS_DIR)/xbrz/xbrz.cpp
endif
ifeq ($(HAVE_CHD), 1)
SOURCES_C += $(CHD_SOURCES_C)
endif
SOURCES_C += $(ARCHIVE_SOURCES_C)