Play-/Source/ui_qt/CMakeLists.txt

379 lines
9.8 KiB
Text
Raw Normal View History

2018-01-12 02:46:57 +00:00
cmake_minimum_required(VERSION 3.5)
set(CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/../../deps/Dependencies/cmake-modules
2018-01-12 02:46:57 +00:00
${CMAKE_MODULE_PATH}
)
include(Header)
project(PlayUI)
add_definitions(-DPLAY_VERSION="${PROJECT_Version}")
2020-02-04 09:28:17 -05:00
set(USE_GSH_VULKAN OFF)
find_package(Vulkan)
if(Vulkan_FOUND)
set(USE_GSH_VULKAN ON)
message("Building with Vulkan support.")
else()
message("Building without Vulkan support. If you want to enable Vulkan, please make sure VULKAN_SDK is set.")
2020-02-04 09:28:17 -05:00
endif()
2018-01-12 02:46:57 +00:00
if(NOT TARGET PlayCore)
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/Source
)
endif()
list(APPEND PROJECT_LIBS PlayCore)
if(NOT TARGET gsh_opengl)
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../gs/GSH_OpenGL
${CMAKE_CURRENT_BINARY_DIR}/gs/GSH_OpenGL
)
endif()
list(INSERT PROJECT_LIBS 0 gsh_opengl)
2020-02-04 09:28:17 -05:00
if(USE_GSH_VULKAN)
2019-12-13 23:15:29 -05:00
if(NOT TARGET gsh_vulkan)
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../gs/GSH_Vulkan
${CMAKE_CURRENT_BINARY_DIR}/gs/GSH_Vulkan
)
endif()
list(INSERT PROJECT_LIBS 0 gsh_vulkan)
2019-12-15 12:38:16 -05:00
list(APPEND DEFINITIONS_LIST HAS_GSH_VULKAN=1)
set(GSH_VULKAN_QT_SRC
GSH_VulkanQt.cpp
GSH_VulkanQt.h
vulkanwindow.cpp
vulkanwindow.h
)
set(GSH_VULKAN_QT_MOC
vulkanwindow.h
)
endif()
2018-05-23 03:11:24 +03:00
if(TARGET_PLATFORM_UNIX)
find_package(LIBEVDEV)
if(LIBEVDEV_FOUND)
list(APPEND PROJECT_LIBS ${LIBEVDEV_LIBRARY})
list(APPEND DEFINITIONS_LIST HAS_LIBEVDEV=1)
endif()
list(APPEND PROJECT_LIBS "-static-libgcc")
list(APPEND PROJECT_LIBS "-static-libstdc++")
2020-05-23 02:15:06 +01:00
if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
# most unix system seem to implicitly link to libinotify, but not FreeBSD
list(APPEND PROJECT_LIBS "libinotify.so")
endif()
2018-05-23 03:11:24 +03:00
endif()
2018-01-12 02:46:57 +00:00
2018-10-16 12:54:10 -04:00
if(TARGET_PLATFORM_MACOS OR TARGET_PLATFORM_UNIX)
if(NOT TARGET sh_openal)
2018-10-16 12:54:10 -04:00
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../../tools/PsfPlayer/Source/SH_OpenAL
${CMAKE_CURRENT_BINARY_DIR}/SH_OpenAL
2018-10-16 12:54:10 -04:00
)
endif()
list(APPEND PROJECT_LIBS sh_openal)
2018-10-16 12:54:10 -04:00
endif()
2019-07-05 23:55:34 +01:00
if(NOT TARGET ui_shared)
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../ui_shared
${CMAKE_CURRENT_BINARY_DIR}/ui_shared
)
2024-01-15 10:45:57 -05:00
endif()
2019-07-05 23:55:34 +01:00
list(APPEND PROJECT_LIBS ui_shared)
2018-01-12 02:46:57 +00:00
set(QT_SOURCES
2019-01-16 20:00:10 +00:00
BootableModel.cpp
2019-10-17 18:27:45 -04:00
BootableModel.h
BootableModelProxy.cpp
BootableModelProxy.h
ControllerConfig/controllerconfigdialog.cpp
ControllerConfig/controllerconfigdialog.h
ControllerConfig/inputbindingmodel.cpp
ControllerConfig/inputbindingmodel.h
ControllerConfig/inputeventselectiondialog.cpp
ControllerConfig/inputeventselectiondialog.h
2019-01-16 20:00:10 +00:00
CoverUtils.cpp
CoverUtils.h
2018-01-12 02:46:57 +00:00
main.cpp
mainwindow.cpp
2018-08-09 12:58:41 -04:00
mainwindow.h
ContinuationChecker.cpp
ContinuationChecker.h
2018-01-12 02:46:57 +00:00
ElidedLabel.cpp
2018-08-09 12:58:41 -04:00
ElidedLabel.h
2018-01-12 02:46:57 +00:00
GSH_OpenGLQt.cpp
2018-08-09 12:58:41 -04:00
GSH_OpenGLQt.h
InputProviderQtKey.cpp
InputProviderQtKey.h
2023-04-20 19:03:13 -04:00
InputProviderQtMouse.cpp
InputProviderQtMouse.h
2018-01-12 02:46:57 +00:00
settingsdialog.cpp
2018-08-09 12:58:41 -04:00
settingsdialog.h
2018-01-12 02:46:57 +00:00
openglwindow.cpp
2018-08-09 12:58:41 -04:00
openglwindow.h
outputwindow.cpp
outputwindow.h
2018-01-12 02:46:57 +00:00
memorycardmanagerdialog.cpp
2018-08-09 12:58:41 -04:00
memorycardmanagerdialog.h
PreferenceDefs.h
QBootablesView.cpp
QBootablesView.h
QStringUtils.cpp
QStringUtils.h
QtUtils.cpp
QtUtils.h
2018-01-12 02:46:57 +00:00
vfsmanagerdialog.cpp
2018-08-09 12:58:41 -04:00
vfsmanagerdialog.h
2018-01-12 02:46:57 +00:00
vfsmodel.cpp
2018-08-09 12:58:41 -04:00
vfsmodel.h
2018-01-12 02:46:57 +00:00
vfsdiscselectordialog.cpp
2018-08-09 12:58:41 -04:00
vfsdiscselectordialog.h
2018-01-12 02:46:57 +00:00
VfsDevice.cpp
2018-08-09 12:58:41 -04:00
VfsDevice.h
${GSH_VULKAN_QT_SRC}
2018-01-12 02:46:57 +00:00
)
if(ENABLE_AMAZON_S3)
set(QT_SOURCES
${QT_SOURCES}
S3FileBrowser.cpp
S3FileBrowser.h
)
set(AMAZON_S3_QT_MOC
S3FileBrowser.h
)
endif()
2018-05-23 03:11:24 +03:00
if(LIBEVDEV_FOUND)
set(QT_SOURCES
${QT_SOURCES}
2018-11-26 13:02:15 -05:00
unix/GamePadDeviceListener.cpp
unix/GamePadDeviceListener.h
unix/GamePadInputEventListener.cpp
unix/GamePadInputEventListener.h
unix/GamePadUtils.cpp
unix/GamePadUtils.h
unix/InputProviderEvDev.cpp
unix/InputProviderEvDev.h
2018-05-23 03:11:24 +03:00
)
endif()
2018-10-18 08:20:35 -04:00
if(TARGET_PLATFORM_WIN32)
if(NOT TARGET Framework_Win32)
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../../deps/Framework/build_cmake/FrameworkWin32
${CMAKE_CURRENT_BINARY_DIR}/Framework_Win32
)
endif()
list(APPEND PROJECT_LIBS Framework_Win32)
2018-10-18 08:20:35 -04:00
set(QT_SOURCES
${QT_SOURCES}
2023-05-17 20:16:28 -04:00
../../tools/PsfPlayer/Source/ui_win32/SH_WaveOut.cpp
2018-10-18 08:20:35 -04:00
)
list(APPEND PROJECT_LIBS winmm)
if(TARGET_PLATFORM_WIN32_X86)
2019-06-04 22:25:48 -04:00
set(MANIFEST win32/Play-x86.manifest)
else()
2019-06-04 22:25:48 -04:00
set(MANIFEST win32/Play-x64.manifest)
endif()
set(RESOURCE_FILE win32/Resources/Res.rc)
set(CMAKE_RC_FLAGS "/d PLAY_VERSION=${PROJECT_Version}")
set(QT_SOURCES
${QT_SOURCES}
${RESOURCE_FILE}
${MANIFEST}
)
list(APPEND PROJECT_LIBS dinput8)
2019-06-18 21:29:09 -04:00
list(APPEND PROJECT_LIBS xinput)
2019-08-31 12:33:24 -04:00
endif()
2019-08-31 12:33:24 -04:00
if(DEBUGGER_INCLUDED)
if(NOT TARGET PlayDebugSupport)
2019-12-10 13:42:18 +00:00
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/DebugSupport
${CMAKE_CURRENT_BINARY_DIR}/PlayDebugSupport
)
endif()
2019-08-31 12:33:24 -04:00
list(APPEND PROJECT_LIBS PlayDebugSupport)
2018-10-18 08:20:35 -04:00
endif()
2019-08-31 12:33:24 -04:00
2018-01-12 02:46:57 +00:00
set(QT_MOC_HEADERS
2019-01-16 20:00:10 +00:00
BootableModel.h
BootableModelProxy.h
ControllerConfig/controllerconfigdialog.h
ControllerConfig/inputbindingmodel.h
ControllerConfig/inputeventselectiondialog.h
2018-01-12 02:46:57 +00:00
mainwindow.h
ContinuationChecker.h
2018-01-12 02:46:57 +00:00
ElidedLabel.h
settingsdialog.h
openglwindow.h
outputwindow.h
QBootablesView.h
2018-01-12 02:46:57 +00:00
memorycardmanagerdialog.h
vfsmanagerdialog.h
vfsmodel.h
vfsdiscselectordialog.h
${AMAZON_S3_QT_MOC}
${GSH_VULKAN_QT_MOC}
2018-01-12 02:46:57 +00:00
)
set(QT_UIS
Qt_ui/bootableview.ui
2018-10-05 13:35:51 -04:00
Qt_ui/controllerconfigdialog.ui
Qt_ui/debugdockmenu.ui
2019-03-21 12:45:17 -04:00
Qt_ui/debugmenu.ui
2018-10-05 13:35:51 -04:00
Qt_ui/inputeventselectiondialog.ui
2018-01-12 02:46:57 +00:00
Qt_ui/mainwindow.ui
Qt_ui/memorycardmanager.ui
2018-10-09 13:07:52 -04:00
Qt_ui/s3filebrowser.ui
2018-10-05 13:35:51 -04:00
Qt_ui/settingsdialog.ui
2018-01-12 02:46:57 +00:00
Qt_ui/vfsmanagerdialog.ui
Qt_ui/vfsdiscselectordialog.ui
)
set(QT_RESOURCES
Qt_ui/resources.qrc
)
2020-02-03 13:11:28 -05:00
set(QT_COMPONENTS Widgets Core)
2024-02-15 18:25:08 -05:00
find_package(Qt6 COMPONENTS ${QT_COMPONENTS})
if(NOT Qt6_FOUND)
if(TARGET_PLATFORM_UNIX)
list(APPEND QT_COMPONENTS X11Extras)
endif()
find_package(Qt5 REQUIRED COMPONENTS ${QT_COMPONENTS})
2020-02-03 13:11:28 -05:00
endif()
2024-02-15 18:25:08 -05:00
list(APPEND PROJECT_LIBS Qt::Widgets Qt::Core)
if(TARGET_PLATFORM_UNIX AND Qt5_FOUND)
list(APPEND PROJECT_LIBS Qt::X11Extras)
2020-02-03 13:11:28 -05:00
endif()
2018-01-12 02:46:57 +00:00
add_definitions(${QT_DEFINITIONS})
2024-02-15 18:25:08 -05:00
QT_ADD_RESOURCES(QT_RES_SOURCES ${QT_RESOURCES})
QT_WRAP_UI(QT_UI_HEADERS ${QT_UIS})
QT_WRAP_CPP(QT_MOC_SRCS ${QT_MOC_HEADERS})
2018-01-12 02:46:57 +00:00
if(TARGET_PLATFORM_MACOS)
2018-10-23 01:40:35 +01:00
set(QT_SOURCES
${QT_SOURCES}
2018-11-19 19:18:37 -05:00
macos/InputProviderMacOsHid.cpp
macos/InputProviderMacOsHid.h
2018-10-23 01:40:35 +01:00
)
2022-12-11 16:23:54 -05:00
FILE(GLOB ARCADE_DEFS ${CMAKE_CURRENT_SOURCE_DIR}/../../arcadedefs/*.arcadedef)
set(OSX_RES
${CMAKE_CURRENT_SOURCE_DIR}/macos/AppIcon.icns
2025-01-14 15:33:56 -05:00
${CMAKE_CURRENT_SOURCE_DIR}/../../GameConfig.xml
)
2021-01-08 16:57:36 -05:00
if(DEBUGGER_INCLUDED)
list(APPEND OSX_RES ${CMAKE_CURRENT_SOURCE_DIR}/../../ee_functions.xml)
endif()
2020-02-04 09:28:17 -05:00
if(USE_GSH_VULKAN)
2020-12-20 11:28:14 -05:00
list(APPEND OSX_RES $ENV{VULKAN_SDK}/../MoltenVK/dylib/macOS/libMoltenVk.dylib)
2020-02-04 09:28:17 -05:00
endif()
add_executable(Play MACOSX_BUNDLE ${QT_SOURCES} ${QT_MOC_SRCS} ${QT_RES_SOURCES} ${QT_UI_HEADERS} ${OSX_RES} ${ARCADE_DEFS})
# Set a custom plist file for the app bundle
# NOTE: for these values to be used Info.plist has to be edited
# NOTE: from cmake 3.7.0 you can use %b for month name abbreviations
string(TIMESTAMP DATE "%d-%m-%Y")
set_target_properties(
Play
PROPERTIES
MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME}"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.virtualapplications.Play"
MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJECT_NAME} Version ${PROJECT_Version}"
MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}
MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_Version}"
MACOSX_BUNDLE_BUNDLE_VERSION ${DATE}
2019-03-11 13:00:07 -04:00
MACOSX_BUNDLE_COPYRIGHT "© Virtual Applications, 2019"
MACOSX_BUNDLE_ICON_FILE "AppIcon.icns"
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/macos/Info.plist.in"
RESOURCE "${OSX_RES}"
)
2022-12-11 16:23:54 -05:00
SET_SOURCE_FILES_PROPERTIES(${ARCADE_DEFS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources/arcadedefs")
2018-10-23 01:40:35 +01:00
list(APPEND PROJECT_LIBS "-framework IOKit -framework CoreFoundation")
2020-02-04 09:28:17 -05:00
if(USE_GSH_VULKAN)
target_include_directories(Play PRIVATE $ENV{VULKAN_SDK}/../MoltenVK/include)
endif()
2018-10-23 13:07:11 -04:00
elseif(TARGET_PLATFORM_WIN32)
set(QT_SOURCES
${QT_SOURCES}
win32/InputProviderDirectInput.cpp
win32/InputProviderDirectInput.h
2019-06-18 21:29:09 -04:00
win32/InputProviderXInput.cpp
win32/InputProviderXInput.h
)
2018-10-23 13:07:11 -04:00
add_executable(Play WIN32 ${QT_SOURCES} ${QT_MOC_SRCS} ${QT_RES_SOURCES} ${QT_UI_HEADERS})
2019-05-18 14:12:21 +01:00
elseif(TARGET_PLATFORM_UNIX)
add_executable(Play ${QT_SOURCES} ${QT_MOC_SRCS} ${QT_RES_SOURCES} ${QT_UI_HEADERS})
2021-11-29 12:29:21 -08:00
install(TARGETS Play DESTINATION ${CMAKE_INSTALL_BINDIR}
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
RENAME Play
)
2022-03-31 11:18:59 +01:00
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../icons/icon_base_512x512.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps
RENAME org.purei.Play.png
2021-11-29 12:29:21 -08:00
)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../icons/icon.svg
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps
2022-03-31 11:18:59 +01:00
RENAME org.purei.Play.svg
2021-11-29 12:29:21 -08:00
)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../installer_unix/org.purei.Play.desktop
2021-11-29 12:29:21 -08:00
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications
)
2022-04-04 15:17:21 +02:00
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../installer_unix/org.purei.Play.metainfo.xml
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo
)
2022-12-22 17:26:47 -05:00
FILE(GLOB ARCADE_DEFS ${CMAKE_CURRENT_SOURCE_DIR}/../../arcadedefs/*.arcadedef)
install(FILES ${ARCADE_DEFS}
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/arcadedefs
)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../states.db")
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../../states.db
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/
)
else()
message(WARNING "didn't find states.db")
endif()
else()
add_executable(Play ${QT_SOURCES} ${QT_MOC_SRCS} ${QT_RES_SOURCES} ${QT_UI_HEADERS})
endif()
2018-01-12 02:46:57 +00:00
target_link_libraries(Play ${PROJECT_LIBS})
2018-05-23 03:11:24 +03:00
target_compile_definitions(Play PRIVATE ${DEFINITIONS_LIST})
2018-01-12 02:46:57 +00:00
target_include_directories(Play PRIVATE
./
../../
${CMAKE_CURRENT_BINARY_DIR}
)
2018-09-26 13:16:50 -04:00
if(LIBEVDEV_FOUND)
target_include_directories(Play PRIVATE ${LIBEVDEV_INCLUDE_DIR})
endif()
2018-09-26 13:16:50 -04:00
if(TARGET_PLATFORM_WIN32)
find_program(WINDEPLOYQT_EXE windeployqt HINTS "${QT_BINARY_DIRECTORY}")
add_custom_command(TARGET Play POST_BUILD
COMMAND "${WINDEPLOYQT_EXE}" $<IF:$<CONFIG:Debug>,--debug,--release>
--no-translations
--no-compiler-runtime
"$<TARGET_FILE:Play>"
2018-09-26 13:16:50 -04:00
)
endif()