diff --git a/CMakeLists.txt b/CMakeLists.txt index 400c24260..7f3e51184 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,8 @@ option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" CMAKE_DEPENDENT_OPTION(YUZU_ROOM "Compile LDN room server" ON "NOT ANDROID" OFF) +option(YUZU_CMD "Compile the -cmd executable (can disable if -cmd is unused)" ON) + CMAKE_DEPENDENT_OPTION(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF) option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" "${MSVC}") diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt index ebd8fd738..284b86304 100644 --- a/src/yuzu_cmd/CMakeLists.txt +++ b/src/yuzu_cmd/CMakeLists.txt @@ -12,54 +12,56 @@ function(create_resource file output filename) file(WRITE "${PROJECT_BINARY_DIR}/dist/${output}" "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned ${filename}_size = sizeof(${filename});\n") endfunction() -add_executable(yuzu-cmd - emu_window/emu_window_sdl2.cpp - emu_window/emu_window_sdl2.h - emu_window/emu_window_sdl2_gl.cpp - emu_window/emu_window_sdl2_gl.h - emu_window/emu_window_sdl2_null.cpp - emu_window/emu_window_sdl2_null.h - emu_window/emu_window_sdl2_vk.cpp - emu_window/emu_window_sdl2_vk.h - precompiled_headers.h - sdl_config.cpp - sdl_config.h - yuzu.cpp - yuzu.rc -) +if (YUZU_CMD) + add_executable(yuzu-cmd + emu_window/emu_window_sdl2.cpp + emu_window/emu_window_sdl2.h + emu_window/emu_window_sdl2_gl.cpp + emu_window/emu_window_sdl2_gl.h + emu_window/emu_window_sdl2_null.cpp + emu_window/emu_window_sdl2_null.h + emu_window/emu_window_sdl2_vk.cpp + emu_window/emu_window_sdl2_vk.h + precompiled_headers.h + sdl_config.cpp + sdl_config.h + yuzu.cpp + yuzu.rc + ) -target_link_libraries(yuzu-cmd PRIVATE common core input_common frontend_common) -target_link_libraries(yuzu-cmd PRIVATE glad) -if (MSVC) - target_link_libraries(yuzu-cmd PRIVATE getopt) -endif() -target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads) - -create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon") -target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR}) - -target_link_libraries(yuzu-cmd PRIVATE SDL2::SDL2 Vulkan::Headers) - -if(UNIX AND NOT APPLE) - install(TARGETS yuzu-cmd) -endif() - -if(WIN32) - # compile as a win32 gui application instead of a console application - if(MSVC) - set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") - elseif(MINGW) - set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows") + target_link_libraries(yuzu-cmd PRIVATE common core input_common frontend_common) + target_link_libraries(yuzu-cmd PRIVATE glad) + if (MSVC) + target_link_libraries(yuzu-cmd PRIVATE getopt) endif() -endif() + target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads) -if (MSVC) - include(CopyYuzuSDLDeps) - copy_yuzu_SDL_deps(yuzu-cmd) -endif() + create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon") + target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR}) -if (YUZU_USE_PRECOMPILED_HEADERS) - target_precompile_headers(yuzu-cmd PRIVATE precompiled_headers.h) -endif() + target_link_libraries(yuzu-cmd PRIVATE SDL2::SDL2 Vulkan::Headers) -create_target_directory_groups(yuzu-cmd) + if(UNIX AND NOT APPLE) + install(TARGETS yuzu-cmd) + endif() + + if(WIN32) + # compile as a win32 gui application instead of a console application + if(MSVC) + set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") + elseif(MINGW) + set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows") + endif() + endif() + + if (MSVC) + include(CopyYuzuSDLDeps) + copy_yuzu_SDL_deps(yuzu-cmd) + endif() + + if (YUZU_USE_PRECOMPILED_HEADERS) + target_precompile_headers(yuzu-cmd PRIVATE precompiled_headers.h) + endif() + + create_target_directory_groups(yuzu-cmd) +endif() \ No newline at end of file