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,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") 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)
emu_window/emu_window_sdl2.cpp add_executable(yuzu-cmd
emu_window/emu_window_sdl2.h emu_window/emu_window_sdl2.cpp
emu_window/emu_window_sdl2_gl.cpp emu_window/emu_window_sdl2.h
emu_window/emu_window_sdl2_gl.h emu_window/emu_window_sdl2_gl.cpp
emu_window/emu_window_sdl2_null.cpp emu_window/emu_window_sdl2_gl.h
emu_window/emu_window_sdl2_null.h emu_window/emu_window_sdl2_null.cpp
emu_window/emu_window_sdl2_vk.cpp emu_window/emu_window_sdl2_null.h
emu_window/emu_window_sdl2_vk.h emu_window/emu_window_sdl2_vk.cpp
precompiled_headers.h emu_window/emu_window_sdl2_vk.h
sdl_config.cpp precompiled_headers.h
sdl_config.h sdl_config.cpp
yuzu.cpp sdl_config.h
yuzu.rc yuzu.cpp
) 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()
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")
endif() endif()
endif() target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
if (MSVC) create_resource("../../dist/yuzu.bmp" "yuzu_cmd/yuzu_icon.h" "yuzu_icon")
include(CopyYuzuSDLDeps) target_include_directories(yuzu-cmd PRIVATE ${RESOURCES_DIR})
copy_yuzu_SDL_deps(yuzu-cmd)
endif()
if (YUZU_USE_PRECOMPILED_HEADERS) target_link_libraries(yuzu-cmd PRIVATE SDL2::SDL2 Vulkan::Headers)
target_precompile_headers(yuzu-cmd PRIVATE precompiled_headers.h)
endif()
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()