d3748cad73
On Linux, due to the way we include SDL2 as a submodule, it makes it difficult for us to specify which SDL_config.h we intended to include. Before, CMake would default to the dummy one included with SDL and ignore the generated one. This tells CMake to use the generated one. In addition, we define USING_GENERATED_CONFIG_H to throw an error in case the dummy config is used by accident. Fixes Vulkan not working on Linux yuzu-cmd.
53 lines
1.8 KiB
CMake
53 lines
1.8 KiB
CMake
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules)
|
|
|
|
function(create_resource file output filename)
|
|
# Read hex data from file
|
|
file(READ ${file} filedata HEX)
|
|
# Convert hex data for C compatibility
|
|
string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata})
|
|
# Write data to output file
|
|
set(RESOURCES_DIR "${PROJECT_BINARY_DIR}/dist" PARENT_SCOPE)
|
|
file(WRITE "${PROJECT_BINARY_DIR}/dist/${output}" "const unsigned char ${filename}[] = {${filedata}};\nconst unsigned ${filename}_size = sizeof(${filename});\n")
|
|
endfunction()
|
|
|
|
add_executable(yuzu-cmd
|
|
config.cpp
|
|
config.h
|
|
default_ini.h
|
|
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_vk.cpp
|
|
emu_window/emu_window_sdl2_vk.h
|
|
yuzu.cpp
|
|
yuzu.rc
|
|
)
|
|
|
|
create_target_directory_groups(yuzu-cmd)
|
|
|
|
target_link_libraries(yuzu-cmd PRIVATE common core input_common)
|
|
target_link_libraries(yuzu-cmd PRIVATE inih glad)
|
|
if (MSVC)
|
|
target_link_libraries(yuzu-cmd PRIVATE getopt)
|
|
endif()
|
|
target_link_libraries(yuzu-cmd PRIVATE ${PLATFORM_LIBRARIES} SDL2 Threads::Threads)
|
|
|
|
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 ../../externals/Vulkan-Headers/include)
|
|
|
|
if (YUZU_USE_EXTERNAL_SDL2)
|
|
target_compile_definitions(yuzu-cmd PRIVATE -DYUZU_USE_EXTERNAL_SDL2)
|
|
target_include_directories(yuzu-cmd PRIVATE ${PROJECT_BINARY_DIR}/externals/SDL/include)
|
|
endif()
|
|
|
|
if(UNIX AND NOT APPLE)
|
|
install(TARGETS yuzu-cmd RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
|
endif()
|
|
|
|
if (MSVC)
|
|
include(CopyYuzuSDLDeps)
|
|
copy_yuzu_SDL_deps(yuzu-cmd)
|
|
endif()
|