You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.2 KiB
104 lines
3.2 KiB
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
qt_add_executable(eden
|
|
main.cpp
|
|
icons.qrc
|
|
EdenApplication.h EdenApplication.cpp
|
|
)
|
|
|
|
set(MODULES
|
|
Eden::Util
|
|
Eden::Items
|
|
Eden::Config
|
|
Eden::Interface
|
|
Eden::Constants
|
|
Eden::Main
|
|
Eden::Models
|
|
)
|
|
|
|
# if (ENABLE_SDL2)
|
|
# add_subdirectory(Gamepad)
|
|
# set(MODULES ${MODULES} Eden::Gamepad)
|
|
# endif()
|
|
|
|
target_link_libraries(eden
|
|
PRIVATE
|
|
Qt6::Core
|
|
Qt6::Widgets
|
|
Qt6::Gui
|
|
Qt6::Quick
|
|
Qt6::QuickControls2
|
|
|
|
Carboxyl::Carboxyl
|
|
|
|
${MODULES}
|
|
)
|
|
|
|
target_link_libraries(eden PRIVATE common core input_common frontend_common qt_common network video_core)
|
|
target_link_libraries(eden PRIVATE Boost::headers glad fmt)
|
|
target_link_libraries(eden PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
|
|
|
target_compile_definitions(eden PRIVATE
|
|
# Use QStringBuilder for string concatenation to reduce
|
|
# the overall number of temporary strings created.
|
|
-DQT_USE_QSTRINGBUILDER
|
|
|
|
# Disable implicit type narrowing in signal/slot connect() calls.
|
|
-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT
|
|
|
|
# Disable unsafe overloads of QProcess' start() function.
|
|
-DQT_NO_PROCESS_COMBINED_ARGUMENT_START
|
|
|
|
# Disable implicit QString->QUrl conversions to enforce use of proper resolving functions.
|
|
-DQT_NO_URL_CAST_FROM_STRING
|
|
)
|
|
|
|
if (APPLE)
|
|
set(MACOSX_ICON "../../dist/eden.icns")
|
|
set_source_files_properties(${MACOSX_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
|
target_sources(eden PRIVATE ${MACOSX_ICON})
|
|
set_target_properties(eden PROPERTIES MACOSX_BUNDLE TRUE)
|
|
set_target_properties(eden PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist)
|
|
|
|
if (YUZU_USE_BUNDLED_MOLTENVK)
|
|
set(MOLTENVK_PLATFORM "macOS")
|
|
set(MOLTENVK_VERSION "v1.4.0")
|
|
download_moltenvk(${MOLTENVK_PLATFORM} ${MOLTENVK_VERSION})
|
|
endif()
|
|
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
|
|
find_library(MOLTENVK_LIBRARY MoltenVK REQUIRED)
|
|
message(STATUS "Using MoltenVK at ${MOLTENVK_LIBRARY}.")
|
|
|
|
set_source_files_properties(${MOLTENVK_LIBRARY} PROPERTIES
|
|
MACOSX_PACKAGE_LOCATION Frameworks
|
|
XCODE_FILE_ATTRIBUTES "CodeSignOnCopy")
|
|
target_sources(eden PRIVATE ${MOLTENVK_LIBRARY})
|
|
elseif(WIN32)
|
|
# compile as a win32 gui application instead of a console application
|
|
target_link_libraries(eden PRIVATE Qt6::EntryPointPrivate)
|
|
if(MSVC)
|
|
target_link_libraries(eden PRIVATE version.lib)
|
|
set_target_properties(eden PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
|
|
elseif(MINGW)
|
|
set_target_properties(eden PROPERTIES LINK_FLAGS_RELEASE "-Wl,--subsystem,windows")
|
|
target_link_libraries(eden PRIVATE dwmapi)
|
|
endif()
|
|
endif()
|
|
|
|
if (ENABLE_QT_WIDGETS)
|
|
set_target_properties(eden PROPERTIES OUTPUT_NAME "eden-qml")
|
|
else()
|
|
set_target_properties(eden PROPERTIES OUTPUT_NAME "eden")
|
|
endif()
|
|
|
|
include(GNUInstallDirs)
|
|
install(TARGETS eden
|
|
BUNDLE DESTINATION .
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
)
|