suyu/src/suyu_cmd/CMakeLists.txt

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

66 lines
2.2 KiB
CMake
Raw Normal View History

2024-03-08 10:06:48 +01:00
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2024 suyu Emulator Project
chore: make yuzu REUSE compliant [REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
2022-05-15 02:06:02 +02:00
# SPDX-License-Identifier: GPL-2.0-or-later
# Credits to Samantas5855 and others for this function.
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()
2024-03-08 10:06:48 +01:00
add_executable(suyu-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
2022-11-28 02:37:37 +01:00
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
2022-11-23 00:38:23 +01:00
precompiled_headers.h
sdl_config.cpp
sdl_config.h
2024-03-08 10:06:48 +01:00
suyu.cpp
suyu.rc
)
2024-03-08 10:06:48 +01:00
target_link_libraries(suyu-cmd PRIVATE common core input_common frontend_common)
target_link_libraries(suyu-cmd PRIVATE glad)
if (MSVC)
2024-03-08 10:06:48 +01:00
target_link_libraries(suyu-cmd PRIVATE getopt)
endif()
2024-03-08 10:06:48 +01:00
target_link_libraries(suyu-cmd PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
2014-05-01 01:56:25 +02:00
2024-03-08 10:06:48 +01:00
create_resource("../../dist/suyu.bmp" "suyu_cmd/suyu_icon.h" "suyu_icon")
target_include_directories(suyu-cmd PRIVATE ${RESOURCES_DIR})
2024-03-08 10:06:48 +01:00
target_link_libraries(suyu-cmd PRIVATE SDL2::SDL2 Vulkan::Headers)
if(UNIX AND NOT APPLE)
2024-03-08 10:06:48 +01:00
install(TARGETS suyu-cmd)
endif()
if(WIN32)
# compile as a win32 gui application instead of a console application
if(MSVC)
2024-03-08 10:06:48 +01:00
set_target_properties(suyu-cmd PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
elseif(MINGW)
2024-03-08 10:06:48 +01:00
set_target_properties(suyu-cmd PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows")
endif()
endif()
if (MSVC)
2024-03-08 10:06:48 +01:00
include(CopySuyuSDLDeps)
copy_suyu_SDL_deps(suyu-cmd)
endif()
2022-11-23 00:38:23 +01:00
2024-03-08 10:06:48 +01:00
if (SUYU_USE_PRECOMPILED_HEADERS)
target_precompile_headers(suyu-cmd PRIVATE precompiled_headers.h)
2022-11-23 00:38:23 +01:00
endif()
2024-03-08 10:06:48 +01:00
create_target_directory_groups(suyu-cmd)