Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build, qml: use static QAndroidPlatformIntegrationPlugin #1

Closed
wants to merge 45 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e5b3c0a
Revert "qml: Demo ProgressIndicator control"
hebasto Dec 19, 2021
0e71f63
Revert "doc: Drop unneeded runtime dependencies"
hebasto Dec 19, 2021
7256cea
Revert "qml: Show ConnectionOptions"
hebasto Dec 19, 2021
541c3e6
Revert "qml: Use ColumnLayout in application window"
hebasto Dec 19, 2021
eb64686
Revert "qml: Drop import qualifier BitcoinCoreComponents"
hebasto Dec 19, 2021
41bf9b8
Revert "qml: Set tab focus behavior"
hebasto Dec 19, 2021
321fdb7
Revert "ci: Prefix artifacts names with insecure_ as CI cannot be tru…
hebasto Dec 20, 2021
b362adf
Revert "multiprocess: add new bitcoin-qt init implementation to qml-gui"
hebasto Dec 20, 2021
6b0cd01
Revert "qml: Drop erroneous `#include <QStringLiteral>`"
hebasto Dec 20, 2021
c0cf342
Revert "qml, build, doc: Allow import QtQuick.Layouts"
hebasto Dec 20, 2021
0715784
Revert "qml: Add qInstallMessageHandler"
hebasto Dec 20, 2021
5f8524d
Revert "build, qt: Apply workaround for Qt build system bug for riscv64"
hebasto Dec 20, 2021
4f29552
Revert "build, qt: Add RISC-V detection"
hebasto Dec 20, 2021
d981800
Revert "build, qml: Add qtquickcontrols2 module"
hebasto Dec 20, 2021
b1c5c0e
Revert "build, qml: Add qtdeclarative module"
hebasto Dec 20, 2021
9e25014
Revert "build: Add --with-qml configure option"
hebasto Dec 20, 2021
61d7449
Revert "ci: Add artifacts instruction to macOS task"
hebasto Dec 20, 2021
8c93b28
Revert "Avoid applying of a patch with fuzz 1"
hebasto Dec 20, 2021
c07c7e3
Revert "build, qml: Fix compiling with GCC 11"
hebasto Dec 20, 2021
3ae0776
Revert "build: Disable QWidget-based GUI test binary for QML builds"
hebasto Dec 20, 2021
345aaa0
Merge commit '9ac064d245f0fd4cb0362cfc472b65836328bffe'
hebasto Dec 20, 2021
c06d9fd
build: Add --with-qml configure option
hebasto Jun 13, 2021
6064c39
build, qml: Add qtdeclarative module
hebasto Aug 27, 2021
46534e4
build, qml: Add qtquickcontrols2 module
hebasto Aug 27, 2021
d2a1a9d
build: Disable QWidget-based GUI test binary for QML builds
hebasto Aug 27, 2021
a9a8ffe
build, qt: Apply workaround for Qt build system bug for riscv64
hebasto Aug 28, 2021
d3039c5
qml: Add qInstallMessageHandler
hebasto Oct 2, 2021
cf065ef
qml, doc: Add import QtQuick.Layouts
hebasto Oct 3, 2021
75943fc
build, qml: Fix compiling with GCC 11
hebasto Oct 10, 2021
7859258
qml: Drop erroneous `#include <QStringLiteral>`
hebasto Oct 10, 2021
4393fcf
qml: Set tab focus behavior
promag Oct 21, 2021
b3baa86
multiprocess: add new bitcoin-qt init implementation to qml-gui
jarolrod Oct 27, 2021
759f443
ci: Add artifacts instruction to macOS task
hebasto Oct 27, 2021
82788f7
ci: Prefix artifacts names with insecure_ as CI cannot be trusted
hebasto Oct 28, 2021
bb6218f
doc: Drop unneeded runtime dependencies
hebasto Oct 30, 2021
73a19f6
qml: Drop import qualifier BitcoinCoreComponents
promag Oct 21, 2021
959e8e6
qml: Use ColumnLayout in application window
promag Oct 22, 2021
6075cb5
qml: Show ConnectionOptions
promag Oct 22, 2021
312cbef
qml: Demo ProgressIndicator control
promag Oct 22, 2021
6fc8d80
scripted-diff: Bump Qt Quick module versions
hebasto Dec 20, 2021
7b01e58
qml, doc: Update minimum required Qt version
hebasto Dec 20, 2021
f66ba45
Revert "ci: Run self-hosted ci"
hebasto Dec 21, 2021
fd4a644
ci: Replace bionic with hirsute for system Qt 5.15.2
hebasto Dec 21, 2021
b7c585c
qml, build: Update PE_ALLOWED_LIBRARIES for Qt 5.15.2
hebasto Dec 21, 2021
e8e78a3
build, qml: use static QAndroidPlatformIntegrationPlugin
icota Dec 23, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 30 additions & 12 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,30 +178,36 @@ task:
task:
name: 'Win64 [unit tests, no gui tests, no boost::process, no functional tests] [focal]'
<< : *GLOBAL_TASK_TEMPLATE
alias: win64
container:
image: ubuntu:focal
env:
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
FILE_ENV: "./ci/test/00_setup_env_win64.sh"
copy_artifacts_script:
- cp ci/scratch/build/bitcoin-x86_64-w64-mingw32/release/bitcoin-qt.exe insecure_win_gui.exe
insecure_win_gui_artifacts:
path: "insecure_win_gui.exe"

task:
name: '32-bit + dash [gui] [CentOS 8]'
<< : *GLOBAL_TASK_TEMPLATE
container:
image: centos:8
env:
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
PACKAGE_MANAGER_INSTALL: "yum install -y"
FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh"
#task:
# name: '32-bit + dash [gui] [CentOS 8]'
# << : *GLOBAL_TASK_TEMPLATE
# container:
# image: centos:8
# env:
# << : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
# PACKAGE_MANAGER_INSTALL: "yum install -y"
# FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh"

task:
name: '[previous releases, uses qt5 dev package and some depends packages, DEBUG] [unsigned char] [bionic]'
name: '[previous releases, uses qt5 dev package and some depends packages, DEBUG] [unsigned char] [hirsute]'
previous_releases_cache:
folder: "releases"
<< : *GLOBAL_TASK_TEMPLATE
<< : *PERSISTENT_WORKER_TEMPLATE
container:
image: ubuntu:hirsute
env:
<< : *PERSISTENT_WORKER_TEMPLATE_ENV
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
FILE_ENV: "./ci/test/00_setup_env_native_qt5.sh"

task:
Expand Down Expand Up @@ -274,12 +280,19 @@ task:
folder: "depends/SDKs/$MACOS_SDK"
fingerprint_key: "$MACOS_SDK"
<< : *MAIN_TEMPLATE
alias: macos
container:
image: ubuntu:focal
env:
MACOS_SDK: "Xcode-12.1-12A7403-extracted-SDK-with-libcxx-headers"
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
FILE_ENV: "./ci/test/00_setup_env_mac.sh"
copy_artifacts_script:
- cp ci/scratch/build/bitcoin-x86_64-apple-darwin/src/qt/bitcoin-qt insecure_mac_gui
- tar -czf insecure_mac_gui.tar.gz insecure_mac_gui
insecure_mac_gui_artifacts:
path: "insecure_mac_gui.tar.gz"
type: "application/gzip"

task:
name: 'macOS 12 native [gui, system sqlite only] [no depends]'
Expand All @@ -305,8 +318,13 @@ task:
folder: "depends/sources"
fingerprint_script: git rev-list -1 HEAD ./depends
<< : *MAIN_TEMPLATE
alias: android
container:
image: ubuntu:focal
env:
<< : *CIRRUS_EPHEMERAL_WORKER_TEMPLATE_ENV
FILE_ENV: "./ci/test/00_setup_env_android.sh"
copy_artifacts_script:
- cp src/qt/android/build/outputs/apk/debug/android-debug.apk ${CIRRUS_WORKING_DIR}/insecure_android.apk
insecure_android_apk_artifacts:
path: "insecure_android.apk"
8 changes: 8 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,11 @@ needs to pass a lot of eyes and requires non-zero or even substantial time
effort to review. There is a huge lack of active reviewers on the project, so
patches often sit for a long time.
-->

<!--
Links for Windows and macOS build artifacts. Replace <PR> with the assigned pull request number.

[![Windows](https://img.shields.io/badge/OS-Windows-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/win64/insecure_win_gui.zip?branch=pull/<PR>)
[![macOS](https://img.shields.io/badge/OS-macOS-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/macos/insecure_mac_gui.zip?branch=pull/<PR>)
[![Android](https://img.shields.io/badge/OS-Android-green)](https://api.cirrus-ci.com/v1/artifact/github/bitcoin-core/gui-qml/android/insecure_android_apk.zip?branch=pull/<PR>)
-->
75 changes: 75 additions & 0 deletions build-aux/m4/bitcoin_qt.m4
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,12 @@ AC_DEFUN([BITCOIN_QT_INIT],[

AS_CASE([$host], [*android*], [qt_lib_suffix=_$ANDROID_ARCH])

AC_ARG_WITH([qml],
[AS_HELP_STRING([--with-qml],
[build QML-based GUI (default=yes)])],
[use_qml=$withval],
[use_qml=yes])

AC_ARG_WITH([qt-incdir],[AS_HELP_STRING([--with-qt-incdir=INC_DIR],[specify qt include path (overridden by pkgconfig)])], [qt_include_path=$withval], [])
AC_ARG_WITH([qt-libdir],[AS_HELP_STRING([--with-qt-libdir=LIB_DIR],[specify qt lib path (overridden by pkgconfig)])], [qt_lib_path=$withval], [])
AC_ARG_WITH([qt-plugindir],[AS_HELP_STRING([--with-qt-plugindir=PLUGIN_DIR],[specify qt plugin path (overridden by pkgconfig)])], [qt_plugin_path=$withval], [])
Expand Down Expand Up @@ -135,6 +141,31 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
if test -d "$qt_plugin_path/platforms/android"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/platforms/android -lqtfreetype -lEGL"
fi

dnl qtdeclarative module paths
if test -d "$qt_plugin_path/../qml/QtQml"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/../qml/QtQml"
fi
if test -d "$qt_plugin_path/../qml/QtQml/Models.2"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/../qml/QtQml/Models.2"
fi
if test -d "$qt_plugin_path/../qml/QtQuick/Layouts"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/../qml/QtQuick/Layouts"
fi
if test -d "$qt_plugin_path/../qml/QtQuick/Window.2"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/../qml/QtQuick/Window.2"
fi
if test -d "$qt_plugin_path/../qml/QtQuick.2"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/../qml/QtQuick.2"
fi

dnl qtquickcontrols2 module paths
if test -d "$qt_plugin_path/../qml/QtQuick/Controls.2"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/../qml/QtQuick/Controls.2"
fi
if test -d "$qt_plugin_path/../qml/QtQuick/Templates.2"; then
QT_LIBS="$QT_LIBS -L$qt_plugin_path/../qml/QtQuick/Templates.2"
fi
fi

AC_DEFINE([QT_STATICPLUGIN], [1], [Define this symbol if qt plugins are static])
Expand Down Expand Up @@ -164,6 +195,30 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[
QT_LIBS="-Wl,--export-dynamic,--undefined=JNI_OnLoad -lplugins_platforms_qtforandroid${qt_lib_suffix} -ljnigraphics -landroid -lqtfreetype${qt_lib_suffix} $QT_LIBS"
AC_DEFINE([QT_QPA_PLATFORM_ANDROID], [1], [Define this symbol if the qt platform is android])
fi

if test "$use_qml" != "no"; then
if test "$TARGET_OS" != "android"; then
dnl qtdeclarative module plugins
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQmlPlugin], [-lqmlplugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQmlModelsPlugin], [-lmodelsplugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuick2Plugin], [-lqtquick2plugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuick2WindowPlugin], [-lwindowplugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuickLayoutsPlugin], [-lqquicklayoutsplugin])
dnl qtquickcontrols2 module plugins
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuickControls2Plugin], [-lqtquickcontrols2plugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuickTemplates2Plugin], [-lqtquicktemplates2plugin])
else
dnl qtdeclarative module plugins
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQmlPlugin], [-lqml_QtQml_qmlplugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQmlModelsPlugin], [-lqml_QtQml_Models_2_modelsplugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuick2Plugin], [-lqml_QtQuick_2_qtquick2plugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuick2WindowPlugin], [-lqml_QtQuick_Window_2_windowplugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuickLayoutsPlugin], [-lqml_QtQuick_Layouts_qquicklayoutsplugin])
dnl qtquickcontrols2 module plugins
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuickControls2Plugin], [-lqml_QtQuick_Controls_2_qtquickcontrols2plugin])
_BITCOIN_QT_CHECK_STATIC_PLUGIN([QtQuickTemplates2Plugin], [-lqml_QtQuick_Templates_2_qtquicktemplates2plugin])
fi
fi
fi
CPPFLAGS=$TEMP_CPPFLAGS
CXXFLAGS=$TEMP_CXXFLAGS
Expand Down Expand Up @@ -396,4 +451,24 @@ AC_DEFUN([_BITCOIN_QT_FIND_LIBS],[
PKG_CHECK_MODULES([QT_DBUS], [${qt_lib_prefix}DBus $qt_version], [QT_DBUS_INCLUDES="$QT_DBUS_CFLAGS"; have_qt_dbus=yes], [have_qt_dbus=no])
fi
])

if test "$use_qml" != "no"; then
BITCOIN_QT_CHECK([
PKG_CHECK_MODULES([QT_QML], [${qt_lib_prefix}Qml${qt_lib_suffix} $qt_version], [QT_INCLUDES="$QT_QML_CFLAGS $QT_INCLUDES" QT_LIBS="$QT_QML_LIBS $QT_LIBS"],
[BITCOIN_QT_FAIL([${qt_lib_prefix}Qml${qt_lib_suffix} $qt_version not found])])
])
BITCOIN_QT_CHECK([
PKG_CHECK_MODULES([QT_QML_MODELS], [${qt_lib_prefix}QmlModels${qt_lib_suffix} $qt_version], [QT_INCLUDES="$QT_QML_MODELS_CFLAGS $QT_INCLUDES" QT_LIBS="$QT_QML_MODELS_LIBS $QT_LIBS"],
[BITCOIN_QT_FAIL([${qt_lib_prefix}QmlModels${qt_lib_suffix} $qt_version not found])])
])
BITCOIN_QT_CHECK([
PKG_CHECK_MODULES([QT_QUICK], [${qt_lib_prefix}Quick${qt_lib_suffix} $qt_version], [QT_INCLUDES="$QT_QUICK_CFLAGS $QT_INCLUDES" QT_LIBS="$QT_QUICK_LIBS $QT_LIBS"],
[BITCOIN_QT_FAIL([${qt_lib_prefix}Quick${qt_lib_suffix} $qt_version not found])])
])
BITCOIN_QT_CHECK([
PKG_CHECK_MODULES([QT_QUICKCONTROLS], [${qt_lib_prefix}QuickControls2${qt_lib_suffix} $qt_version], [QT_INCLUDES="$QT_QUICKCONTROLS_CFLAGS $QT_INCLUDES" QT_LIBS="$QT_QUICKCONTROLS_LIBS $QT_LIBS"],
[BITCOIN_QT_FAIL([${qt_lib_prefix}QuickControls2${qt_lib_suffix} $qt_version not found])])
])
AC_DEFINE([USE_QML], [1], [Define to 1 to use QML-based GUI])
fi
])
2 changes: 1 addition & 1 deletion ci/test/00_setup_env_native_asan.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
export LC_ALL=C.UTF-8

export CONTAINER_NAME=ci_native_asan
export PACKAGES="clang llvm python3-zmq qtbase5-dev qttools5-dev-tools libevent-dev bsdmainutils libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libsqlite3-dev"
export PACKAGES="clang llvm python3-zmq qtbase5-dev qttools5-dev-tools qtdeclarative5-dev qtquickcontrols2-5-dev libevent-dev bsdmainutils libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libsqlite3-dev"
export DOCKER_NAME_TAG=ubuntu:22.04
export NO_DEPENDS=1
export GOAL="install"
Expand Down
4 changes: 2 additions & 2 deletions ci/test/00_setup_env_native_qt5.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
export LC_ALL=C.UTF-8

export CONTAINER_NAME=ci_native_qt5
export DOCKER_NAME_TAG=ubuntu:18.04 # Check that bionic gcc-8 can compile our C++17 and run our functional tests in python3, see doc/dependencies.md
export PACKAGES="gcc-8 g++-8 python3-zmq qtbase5-dev qttools5-dev-tools libdbus-1-dev libharfbuzz-dev"
export DOCKER_NAME_TAG=ubuntu:21.04 # Check that hirsute gcc-8 can compile our C++17 and run our functional tests in python3, see doc/dependencies.md
export PACKAGES="gcc-8 g++-8 python3-zmq qtbase5-dev qttools5-dev-tools qtdeclarative5-dev qtquickcontrols2-5-dev libdbus-1-dev libharfbuzz-dev"
export DEP_OPTS="NO_QT=1 NO_UPNP=1 NO_NATPMP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
export TEST_RUNNER_EXTRA="--previous-releases --coverage --extended --exclude feature_dbcrash" # Run extended tests so that coverage does not fail, but exclude the very slow dbcrash
export RUN_UNIT_TESTS_SEQUENTIAL="true"
Expand Down
2 changes: 1 addition & 1 deletion ci/test/wrap-wine.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export LC_ALL=C.UTF-8

for b_name in {"${BASE_OUTDIR}/bin"/*,src/secp256k1/*tests,src/minisketch/test{,-verify},src/univalue/{no_nul,test_json,unitester,object}}.exe; do
# shellcheck disable=SC2044
for b in $(find "${BASE_ROOT_DIR}" -executable -type f -name "$(basename "$b_name")"); do
for b in $(find "${BASE_ROOT_DIR}" -path "${BASE_BUILD_DIR}/bitcoin-${HOST}/release" -prune -o -executable -type f -name "$(basename "$b_name")"); do
if (file "$b" | grep "Windows"); then
echo "Wrap $b ..."
mv "$b" "${b}_orig"
Expand Down
5 changes: 5 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1692,6 +1692,9 @@ fi

dnl these are only used when qt is enabled
BUILD_TEST_QT=""
if test "$use_qml" != "no"; then
use_gui_tests=no
fi
if test "$bitcoin_enable_qt" != "no"; then
dnl enable dbus support
AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
Expand Down Expand Up @@ -1785,6 +1788,7 @@ AM_CONDITIONAL([USE_ASM], [test "$use_asm" = "yes"])
AM_CONDITIONAL([WORDS_BIGENDIAN], [test "$ac_cv_c_bigendian" = "yes"])
AM_CONDITIONAL([USE_NATPMP], [test "$use_natpmp" = "yes"])
AM_CONDITIONAL([USE_UPNP], [test "$use_upnp" = "yes"])
AM_CONDITIONAL([BUILD_WITH_QML], [test "$use_qml" = "yes"])

dnl for minisketch
AM_CONDITIONAL([ENABLE_CLMUL], [test "$enable_clmul" = "yes"])
Expand Down Expand Up @@ -1926,6 +1930,7 @@ if test "$enable_wallet" != "no"; then
fi
echo " with gui / qt = $bitcoin_enable_qt"
if test $bitcoin_enable_qt != "no"; then
echo " with qml = $use_qml"
echo " with qr = $use_qr"
fi
echo " with zmq = $use_zmq"
Expand Down
4 changes: 2 additions & 2 deletions contrib/devtools/copyright_header.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"src/crc32c/",
]

INCLUDE = ['*.h', '*.cpp', '*.cc', '*.c', '*.mm', '*.py', '*.sh', '*.bash-completion']
INCLUDE = ['*.h', '*.cpp', '*.cc', '*.c', '*.mm', '*.qml', '*.py', '*.sh', '*.bash-completion']
INCLUDE_COMPILED = re.compile('|'.join([fnmatch.translate(m) for m in INCLUDE]))

def applies_to_file(filename):
Expand Down Expand Up @@ -561,7 +561,7 @@ def insert_cmd(argv):
if not os.path.isfile(filename):
sys.exit("*** bad filename: %s" % filename)
_, extension = os.path.splitext(filename)
if extension not in ['.h', '.cpp', '.cc', '.c', '.py', '.sh']:
if extension not in ['.h', '.cpp', '.cc', '.c', '.qml', '.py', '.sh']:
sys.exit("*** cannot insert for file extension %s" % extension)

if extension == '.py':
Expand Down
2 changes: 2 additions & 0 deletions contrib/devtools/symbol-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@
'VERSION.dll', # version checking
'WINMM.dll', # WinMM audio API
'WTSAPI32.dll',
'd3d11.dll',
'dxgi.dll',
}

def check_version(max_versions, version, arch) -> bool:
Expand Down
Loading