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 <anon@noreply.localhost>
Co-committed-by: anon <anon@noreply.localhost>
This commit is contained in:
anon 2024-07-24 23:24:18 +00:00 committed by spectranator
parent a41955cc58
commit a1c2940b31
2 changed files with 50 additions and 46 deletions

View file

@ -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) 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) 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}") option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" "${MSVC}")

View file

@ -12,7 +12,8 @@ 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") file(WRITE "${PROJECT_BINARY_DIR}/dist/${output}" "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned ${filename}_size = sizeof(${filename});\n")
endfunction() endfunction()
add_executable(yuzu-cmd if (YUZU_CMD)
add_executable(yuzu-cmd
emu_window/emu_window_sdl2.cpp emu_window/emu_window_sdl2.cpp
emu_window/emu_window_sdl2.h emu_window/emu_window_sdl2.h
emu_window/emu_window_sdl2_gl.cpp emu_window/emu_window_sdl2_gl.cpp
@ -26,40 +27,41 @@ add_executable(yuzu-cmd
sdl_config.h sdl_config.h
yuzu.cpp yuzu.cpp
yuzu.rc yuzu.rc
) )
target_link_libraries(yuzu-cmd PRIVATE common core input_common frontend_common) target_link_libraries(yuzu-cmd PRIVATE common core input_common frontend_common)
target_link_libraries(yuzu-cmd PRIVATE glad) target_link_libraries(yuzu-cmd PRIVATE glad)
if (MSVC) if (MSVC)
target_link_libraries(yuzu-cmd PRIVATE getopt) target_link_libraries(yuzu-cmd PRIVATE getopt)
endif() endif()
target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads) target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon") create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon")
target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR}) target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR})
target_link_libraries(yuzu-cmd PRIVATE SDL2::SDL2 Vulkan::Headers) target_link_libraries(yuzu-cmd PRIVATE SDL2::SDL2 Vulkan::Headers)
if(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
install(TARGETS yuzu-cmd) install(TARGETS yuzu-cmd)
endif() endif()
if(WIN32) if(WIN32)
# compile as a win32 gui application instead of a console application # compile as a win32 gui application instead of a console application
if(MSVC) if(MSVC)
set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
elseif(MINGW) elseif(MINGW)
set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows") set_target_properties(yuzu-cmd PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows")
endif() endif()
endif() endif()
if (MSVC) if (MSVC)
include(CopyYuzuSDLDeps) include(CopyYuzuSDLDeps)
copy_yuzu_SDL_deps(yuzu-cmd) copy_yuzu_SDL_deps(yuzu-cmd)
endif() endif()
if (YUZU_USE_PRECOMPILED_HEADERS) if (YUZU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(yuzu-cmd PRIVATE precompiled_headers.h) target_precompile_headers(yuzu-cmd PRIVATE precompiled_headers.h)
endif() endif()
create_target_directory_groups(yuzu-cmd) create_target_directory_groups(yuzu-cmd)
endif()