summaryrefslogtreecommitdiff
path: root/src/citron_cmd/CMakeLists.txt
diff options
context:
space:
mode:
authorZephyron <zephyron@citron-emu.org>2024-12-31 16:19:25 +1000
committerZephyron <zephyron@citron-emu.org>2024-12-31 16:19:25 +1000
commit9427e27e24a7135880ee2881c3c44988e174b41a (patch)
tree83f0062a35be144f6b162eaa823c5b3c7620146e /src/citron_cmd/CMakeLists.txt
parentb35ae725d20960411e8588b11c12a2d55f86c9d0 (diff)
chore: update project branding to citron
Diffstat (limited to 'src/citron_cmd/CMakeLists.txt')
-rw-r--r--src/citron_cmd/CMakeLists.txt65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/citron_cmd/CMakeLists.txt b/src/citron_cmd/CMakeLists.txt
new file mode 100644
index 000000000..ebd8fd738
--- /dev/null
+++ b/src/citron_cmd/CMakeLists.txt
@@ -0,0 +1,65 @@
+# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
+# 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()
+
+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")
+ 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)