diff --git a/simple64-gui/.github/workflows/build.yml b/simple64-gui/.github/workflows/build.yml index 43e75b2..b52d740 100644 --- a/simple64-gui/.github/workflows/build.yml +++ b/simple64-gui/.github/workflows/build.yml @@ -21,14 +21,14 @@ jobs: - name: Update and install packages run: | dnf -y update - dnf -y install qt6-qtwebsockets-devel SDL2-devel zlib-devel + dnf -y install qt6-qtwebsockets-devel SDL2-devel zlib-devel cmake ninja-build - name: Run build script run: | echo "#define GUI_VERSION \"a12345\"" > version.h mkdir build cd build - qmake6 .. - make + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. + VERBOSE=1 cmake --build . build-windows: runs-on: windows-2022 steps: @@ -43,7 +43,7 @@ jobs: with: update: true install: >- - make + mingw-w64-x86_64-cmake mingw-w64-x86_64-SDL2 mingw-w64-x86_64-qt6 mingw-w64-x86_64-gcc @@ -52,5 +52,5 @@ jobs: echo '#define GUI_VERSION "a12345"' > version.h mkdir build cd build - msys2 -c 'qmake6 ..' - msys2 -c 'make' + msys2 -c 'cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..' + msys2 -c 'VERBOSE=1 cmake --build .' diff --git a/simple64-gui/CMakeLists.txt b/simple64-gui/CMakeLists.txt new file mode 100644 index 0000000..b15c5f1 --- /dev/null +++ b/simple64-gui/CMakeLists.txt @@ -0,0 +1,79 @@ +cmake_minimum_required(VERSION 3.20) + +project(simple64-gui LANGUAGES CXX C) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +include(CheckIPOSupported) +check_ipo_supported(RESULT ENABLE_IPO) +if(ENABLE_IPO) + message("Interprocedural optimizations enabled") +endif(ENABLE_IPO) + +if(ENABLE_IPO AND (CMAKE_BUILD_TYPE STREQUAL "Release")) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) +endif() + +include_directories(../mupen64plus-core/src/api) + +add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x0602ff -DNETPLAY_VER=10) + +if (DEFINED ENV{SIMPLE64_AUTOUPDATE}) + add_definitions(-D_AUTOUPDATE) + message("Enabling auto updater") +else() + message("Not enabling auto updater") +endif() + +find_package(SDL2 REQUIRED) +include_directories(${SDL2_INCLUDE_DIRS}) + +find_package(Qt6 REQUIRED COMPONENTS Widgets WebSockets) +if (UNIX) + find_package(Qt6 REQUIRED COMPONENTS DBus) +endif (UNIX) + +qt_standard_project_setup() + +qt_add_resources(simple64-gui imageresources + FILES icons/simple64.png +) + +add_executable(simple64-gui + main.cpp + mainwindow.cpp + vidext.cpp + settingsdialog.cpp + interface/common.cpp + plugindialog.cpp + vkwindow.cpp + workerthread.cpp + settingclasses.cpp + interface/core_commands.cpp + interface/sdl_key_converter.c + logviewer.cpp + keypressfilter.cpp + netplay/createroom.cpp + netplay/joinroom.cpp + netplay/waitroom.cpp +) + +if (WIN32) + target_sources(simple64-gui PRIVATE + osal/osal_dynamiclib_win32.c + ) + set(app_icon_resource_windows "icons/icon.rc") + target_sources(simple64-gui PRIVATE ${app_icon_resource_windows}) +endif (WIN32) + +if (UNIX) + target_sources(simple64-gui PRIVATE + osal/osal_dynamiclib_unix.c + ) + target_link_libraries(simple64-gui PRIVATE Qt6::DBus) +endif (UNIX) + +target_compile_options(simple64-gui PRIVATE -march=x86-64-v3) +target_link_options(simple64-gui PRIVATE -march=x86-64-v3) +target_link_libraries(simple64-gui PRIVATE Qt6::Widgets Qt6::WebSockets) diff --git a/simple64-gui/README.md b/simple64-gui/README.md index 407d4f0..96e1e94 100644 --- a/simple64-gui/README.md +++ b/simple64-gui/README.md @@ -22,7 +22,7 @@ git clone https://github.com/simple64/simple64-gui.git cd simple64-gui mkdir build cd build -qmake ../simple64-gui.pro -make -j`nproc` +cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. +VERBOSE=1 cmake --build . ``` Then you can run ```./simple64-gui```. diff --git a/simple64-gui/icons/icon.rc b/simple64-gui/icons/icon.rc new file mode 100644 index 0000000..c380f43 --- /dev/null +++ b/simple64-gui/icons/icon.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON "simple64.ico" diff --git a/simple64-gui/interface/common.cpp b/simple64-gui/interface/common.cpp index a8dc70d..755527c 100644 --- a/simple64-gui/interface/common.cpp +++ b/simple64-gui/interface/common.cpp @@ -33,8 +33,8 @@ #include #include #include "version.h" -#include "mainwindow.h" -#include "logviewer.h" +#include "../mainwindow.h" +#include "../logviewer.h" #include "core_commands.h" /********************************************************************************************************* diff --git a/simple64-gui/keypressfilter.cpp b/simple64-gui/keypressfilter.cpp index 4ebc407..df344a9 100644 --- a/simple64-gui/keypressfilter.cpp +++ b/simple64-gui/keypressfilter.cpp @@ -1,6 +1,6 @@ #include "keypressfilter.h" #include "interface/core_commands.h" -#include "common.h" +#include "interface/common.h" #include "mainwindow.h" #include #include diff --git a/simple64-gui/mainwindow.cpp b/simple64-gui/mainwindow.cpp index bedd194..a8c6aff 100644 --- a/simple64-gui/mainwindow.cpp +++ b/simple64-gui/mainwindow.cpp @@ -7,7 +7,7 @@ #include "plugindialog.h" #include "mainwindow.h" #include "ui_mainwindow.h" -#include "common.h" +#include "interface/common.h" #include "vidext.h" #include "netplay/createroom.h" #include "netplay/joinroom.h" diff --git a/simple64-gui/netplay/createroom.cpp b/simple64-gui/netplay/createroom.cpp index 1d70354..621dac4 100644 --- a/simple64-gui/netplay/createroom.cpp +++ b/simple64-gui/netplay/createroom.cpp @@ -1,8 +1,8 @@ -#include "mainwindow.h" +#include "../mainwindow.h" #include "createroom.h" #include "waitroom.h" -#include "version.h" -#include "interface/core_commands.h" +#include "../version.h" +#include "../interface/core_commands.h" #include #include #include diff --git a/simple64-gui/netplay/createroom.h b/simple64-gui/netplay/createroom.h index 00200c6..96a6ea4 100644 --- a/simple64-gui/netplay/createroom.h +++ b/simple64-gui/netplay/createroom.h @@ -7,7 +7,7 @@ #include #include #include -#include "interface/common.h" +#include "../interface/common.h" #include class CreateRoom : public QDialog diff --git a/simple64-gui/netplay/joinroom.cpp b/simple64-gui/netplay/joinroom.cpp index 4c5e0fd..ceb3eec 100644 --- a/simple64-gui/netplay/joinroom.cpp +++ b/simple64-gui/netplay/joinroom.cpp @@ -1,8 +1,8 @@ #include "joinroom.h" #include "waitroom.h" -#include "mainwindow.h" -#include "interface/core_commands.h" -#include "version.h" +#include "../mainwindow.h" +#include "../interface/core_commands.h" +#include "../version.h" #include #include #include diff --git a/simple64-gui/netplay/waitroom.cpp b/simple64-gui/netplay/waitroom.cpp index 21c1a37..1c0d059 100644 --- a/simple64-gui/netplay/waitroom.cpp +++ b/simple64-gui/netplay/waitroom.cpp @@ -1,6 +1,6 @@ #include "waitroom.h" -#include "mainwindow.h" -#include "interface/core_commands.h" +#include "../mainwindow.h" +#include "../interface/core_commands.h" #include #include diff --git a/simple64-gui/osal/osal_dynamiclib_unix.c b/simple64-gui/osal/osal_dynamiclib_unix.c index 6e6065e..533f165 100644 --- a/simple64-gui/osal/osal_dynamiclib_unix.c +++ b/simple64-gui/osal/osal_dynamiclib_unix.c @@ -25,7 +25,7 @@ #include #include "m64p_types.h" -#include "common.h" +#include "../interface/common.h" #include "osal_dynamiclib.h" m64p_error osal_dynlib_open(m64p_dynlib_handle *pLibHandle, const char *pccLibraryPath) diff --git a/simple64-gui/osal/osal_dynamiclib_win32.c b/simple64-gui/osal/osal_dynamiclib_win32.c index 004aec6..6e0dd57 100644 --- a/simple64-gui/osal/osal_dynamiclib_win32.c +++ b/simple64-gui/osal/osal_dynamiclib_win32.c @@ -24,7 +24,7 @@ #include #include "m64p_types.h" -#include "common.h" +#include "../interface/common.h" #include "osal_dynamiclib.h" m64p_error osal_dynlib_open(m64p_dynlib_handle *pLibHandle, const char *pccLibraryPath) diff --git a/simple64-gui/settingclasses.cpp b/simple64-gui/settingclasses.cpp index 2393963..ac49742 100644 --- a/simple64-gui/settingclasses.cpp +++ b/simple64-gui/settingclasses.cpp @@ -1,5 +1,5 @@ #include "settingclasses.h" -#include "common.h" +#include "interface/common.h" #include "interface/core_commands.h" #include #include diff --git a/simple64-gui/simple64-gui.pro b/simple64-gui/simple64-gui.pro deleted file mode 100644 index 85215c4..0000000 --- a/simple64-gui/simple64-gui.pro +++ /dev/null @@ -1,110 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2017-02-16T19:17:45 -# -#------------------------------------------------- - -QT += widgets websockets - -TARGET = simple64-gui -TEMPLATE = app - -RC_ICONS = icons/simple64.ico - -RESOURCES = simple64-gui.qrc - -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x0602ff - -DEFINES += "NETPLAY_VER=10" - -_AUTOUPDATE = $$(SIMPLE64_AUTOUPDATE) -isEmpty(_AUTOUPDATE) { -message("Not enabling auto updater") -} -else { -message("Enabling auto updater") -DEFINES += _AUTOUPDATE -} - -INCLUDEPATH += \ - "../mupen64plus-core/src/api" - -SOURCES += main.cpp \ - mainwindow.cpp \ - vidext.cpp \ - settingsdialog.cpp \ - interface/common.cpp \ - plugindialog.cpp \ - vkwindow.cpp \ - workerthread.cpp \ - settingclasses.cpp \ - interface/core_commands.cpp \ - interface/sdl_key_converter.c \ - logviewer.cpp \ - keypressfilter.cpp \ - netplay/createroom.cpp \ - netplay/joinroom.cpp \ - netplay/waitroom.cpp - -win32 { -SOURCES += osal/osal_dynamiclib_win32.c - - win32-msvc* { - !contains(QMAKE_TARGET.arch, x86_64) { - message("x86 build") - LIBS += ../mupen64plus-win32-deps/SDL2-2.0.6/lib/x86/SDL2.lib - } else { - message("x86_64 build") - LIBS += ../mupen64plus-win32-deps/SDL2-2.0.6/lib/x64/SDL2.lib - } - INCLUDEPATH += ../mupen64plus-win32-deps/SDL2-2.0.6/include - } else { - LIBS += -Wl,-Bdynamic -lSDL2 - INCLUDEPATH += /mingw64/include/SDL2 /mingw32/include/SDL2 - } -} - -!win32 { -QT += dbus - -CONFIG += ltcg - -SOURCES += osal/osal_dynamiclib_unix.c - -LIBS += -L/usr/local/lib -ldl -lSDL2 -lz -INCLUDEPATH += /usr/local/include /usr/include/SDL2 /usr/local/include/SDL2 -} - -HEADERS += mainwindow.h \ - vidext.h \ - interface/common.h \ - settingsdialog.h \ - workerthread.h \ - plugindialog.h \ - vkwindow.h \ - settingclasses.h \ - osal/osal_dynamiclib.h \ - interface/sdl_key_converter.h \ - logviewer.h \ - keypressfilter.h \ - netplay/createroom.h \ - netplay/joinroom.h \ - netplay/waitroom.h \ - version.h \ - discord/discord_game_sdk.h - -FORMS += mainwindow.ui - -QMAKE_INCDIR += api interface - -QMAKE_LFLAGS += -no-pie - -QMAKE_CXXFLAGS_RELEASE -= -O2 -QMAKE_CXXFLAGS_RELEASE += -O3 -march=x86-64-v3 -QMAKE_CFLAGS_RELEASE -= -O2 -QMAKE_CFLAGS_RELEASE += -O3 -march=x86-64-v3 -QMAKE_LFLAGS_RELEASE -= -O2 -QMAKE_LFLAGS_RELEASE -= -Wl,-O1 -QMAKE_LFLAGS_RELEASE += -O3 -march=x86-64-v3 - -QMAKE_PROJECT_DEPTH = 0 diff --git a/simple64-gui/simple64-gui.qrc b/simple64-gui/simple64-gui.qrc deleted file mode 100644 index 5bac456..0000000 --- a/simple64-gui/simple64-gui.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - icons/simple64.png - - diff --git a/simple64-gui/vidext.cpp b/simple64-gui/vidext.cpp index eac5f93..ee50bb4 100644 --- a/simple64-gui/vidext.cpp +++ b/simple64-gui/vidext.cpp @@ -1,5 +1,5 @@ #include "vidext.h" -#include "common.h" +#include "interface/common.h" #include "workerthread.h" #include "mainwindow.h" #include "interface/core_commands.h" diff --git a/simple64-gui/vkwindow.h b/simple64-gui/vkwindow.h index 5cbc47b..ba722ad 100644 --- a/simple64-gui/vkwindow.h +++ b/simple64-gui/vkwindow.h @@ -3,7 +3,7 @@ #include #include -#include "common.h" +#include "interface/common.h" class VkWindow : public QWindow { diff --git a/simple64-gui/workerthread.h b/simple64-gui/workerthread.h index f4b0c96..aafcc8b 100644 --- a/simple64-gui/workerthread.h +++ b/simple64-gui/workerthread.h @@ -5,7 +5,7 @@ #include #include #include -#include "common.h" +#include "interface/common.h" #include "discord/discord_game_sdk.h" class WorkerThread