From a1c2940b31dfef70791a36b2fca576f1b89ec4a8 Mon Sep 17 00:00:00 2001 From: anon Date: Wed, 24 Jul 2024 23:24:18 +0000 Subject: [PATCH] option to skip compiling the -cmd executable (#26) There's already a `-DYUZU_ROOM` flag that can be set to OFF to skip compiling that executable. This adds a `-DYUZU_CMD` flag that is ON by default, but can be set to OFF to also skip compiling the yuzu-cmd executable. Setting both to OFF saves **_a lot_** of compiling time if you don't ever use either the yuzu-room or yuzu-cmd exes. Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/26 Co-authored-by: anon Co-committed-by: anon --- CMakeLists.txt | 2 + src/yuzu_cmd/CMakeLists.txt | 94 +++++++++++++++++++------------------ 2 files changed, 50 insertions(+), 46 deletions(-) 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