diff --git a/.appveyor.yml b/.appveyor.yml index 8a475d6ff..875123a98 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -41,11 +41,14 @@ init: # clone directory clone_folder: c:\dev\xenia +# build cache +cache: + - C:\Qt\5.10.1\msvc2017_64-static -> .appveyor.yml + # environment variables environment: - QT_DIR: C:\Qt\5.10.1\msvc2017_64 - QT_LIB: C:\Qt\5.10.1-static\msvc2017_64\lib - my_var2: value2 + QT_DIR: C:\Qt\5.10.1\msvc2017_64-static + QT_STATIC: 1 # build cache to preserve files/folders between builds #cache: @@ -53,6 +56,11 @@ environment: # scripts that run after cloning repository install: - cmd: set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH% + - ps: | + if (!(Test-Path $env:QT_DIR -PathType Container)) { + Invoke-WebRequest $env:QT_S3 -OutFile C:\Qt\5.10.1\msvc2017_64-static.7z + 7z x C:\Qt\5.10.1\msvc2017_64-static.7z -oc:\Qt\5.10.1 + } - cmd: xb.bat setup diff --git a/src/xenia/app/premake5.lua b/src/xenia/app/premake5.lua index aed212994..322a39072 100644 --- a/src/xenia/app/premake5.lua +++ b/src/xenia/app/premake5.lua @@ -43,15 +43,59 @@ project("xenia-app") -- Setup Qt libraries qt.enable() qtmodules{"core", "gui", "widgets"} + qtpath(qt.defaultpath) qtprefix "Qt5" - if os.getenv("QT_LIB") then - qtlibpath(os.getenv("QT_LIB")) - end - - configuration {"Debug"} + configuration {"Checked"} qtsuffix "d" configuration {} + -- Qt static configuration (if necessary). Used by AppVeyor. + if os.getenv("QT_STATIC") then + qt.modules["AccessibilitySupport"] = { + name = "AccessibilitySupport", + include = "QtAccessibilitySupport", + } + qt.modules["EventDispatcherSupport"] = { + name = "EventDispatcherSupport", + include = "QtEventDispatcherSupport", + } + qt.modules["FontDatabaseSupport"] = { + name = "FontDatabaseSupport", + include = "QtFontDatabaseSupport", + } + qt.modules["ThemeSupport"] = { + name = "ThemeSupport", + include = "QtThemeSupport", + } + qt.modules["VulkanSupport"] = { + name = "VulkanSupport", + include = "QtVulkanSupport", + } + + links({ + "qtmain", + "qtfreetype", + "qtlibpng", + "qtpcre2", + "qtharfbuzz", + }) + qtmodules{"AccessibilitySupport", "EventDispatcherSupport", "FontDatabaseSupport", "ThemeSupport", "VulkanSupport"} + libdirs("%{cfg.qtpath}/plugins/platforms") + + filter("platforms:Windows") + -- Qt dependencies + links({ + "dwmapi", + "version", + "imm32", + "winmm", + "netapi32", + "userenv", + "qwindows", + }) + filter() + end + flags({ "WinMain", -- Use WinMain instead of main. }) diff --git a/src/xenia/app/xenia_main.cc b/src/xenia/app/xenia_main.cc index e1bd0bbbf..82cf29e4b 100644 --- a/src/xenia/app/xenia_main.cc +++ b/src/xenia/app/xenia_main.cc @@ -12,6 +12,7 @@ #include "xenia/base/debugging.h" #include "xenia/base/logging.h" #include "xenia/base/main.h" +#include "xenia/base/platform.h" #include "xenia/base/profiling.h" #include "xenia/base/threading.h" #include "xenia/vfs/devices/host_path_device.h" @@ -19,6 +20,11 @@ #include "xenia/app/emulator_window.h" #include +#include + +#if XE_PLATFORM_WIN32 +Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin); +#endif DEFINE_bool(mount_scratch, false, "Enable scratch mount"); DEFINE_bool(mount_cache, false, "Enable cache mount");