project_root = "../../.." include(project_root.."/tools/build") group("src") project("xenia-app") uuid("d7e98620-d007-4ad8-9dbd-b47c8853a17f") language("C++") links({ "xenia-apu", "xenia-apu-nop", "xenia-base", "xenia-core", "xenia-cpu", "xenia-gpu", "xenia-gpu-null", "xenia-gpu-vulkan", "xenia-hid", "xenia-hid-nop", "xenia-kernel", "xenia-patcher", "xenia-ui", "xenia-ui-vulkan", "xenia-vfs", }) links({ "aes_128", "capstone", "fmt", "dxbc", "discord-rpc", "glslang-spirv", "imgui", "libavcodec", "libavutil", "mspack", "snappy", "xxhash", }) defines({ "XBYAK_NO_OP_NAMES", "XBYAK_ENABLE_OMITTED_OPERAND", }) local_platform_files() files({ "../base/main_init_"..platform_suffix..".cc", "../ui/windowed_app_main_"..platform_suffix..".cc", }) resincludedirs({ project_root, }) filter(SINGLE_LIBRARY_FILTER) -- Unified library containing all apps as StaticLibs, not just the main -- emulator windowed app. kind("SharedLib") if enableMiscSubprojects then links({ "xenia-gpu-vulkan-trace-viewer", "xenia-hid-demo", "xenia-ui-window-vulkan-demo", }) end filter(NOT_SINGLE_LIBRARY_FILTER) kind("WindowedApp") -- `targetname` is broken if building from Gradle, works only for toggling the -- `lib` prefix, as Gradle uses LOCAL_MODULE_FILENAME, not a derivative of -- LOCAL_MODULE, to specify the targets to build when executing ndk-build. filter("platforms:not Android-*") targetname("xenia_canary") filter("architecture:x86_64") links({ "xenia-cpu-backend-x64", }) -- TODO(Triang3l): The emulator itself on Android. filter("platforms:not Android-*") files({ "xenia_main.cc", }) filter("platforms:Windows") files({ "main_resources.rc", }) filter({"architecture:x86_64", "files:../base/main_init_"..platform_suffix..".cc"}) vectorextensions("SSE2") -- Disable AVX for main_init_win.cc so our AVX check doesn't use AVX instructions. filter("platforms:not Android-*") links({ "xenia-app-discord", "xenia-apu-sdl", -- TODO(Triang3l): CPU debugger on Android. "xenia-debug-ui", "xenia-helper-sdl", "xenia-hid-sdl", }) filter("platforms:Linux") links({ "X11", "xcb", "X11-xcb", "SDL2", }) filter("platforms:Windows") links({ "xenia-apu-xaudio2", "xenia-gpu-d3d12", "xenia-hid-winkey", "xenia-hid-xinput", "xenia-ui-d3d12", }) if enableMiscSubprojects then filter({"platforms:Windows", SINGLE_LIBRARY_FILTER}) links({ "xenia-gpu-d3d12-trace-viewer", "xenia-ui-window-d3d12-demo", }) end filter("platforms:Windows") -- Only create the .user file if it doesn't already exist. local user_file = project_root.."/build/xenia-app.vcxproj.user" if not os.isfile(user_file) then debugdir(project_root) end