From eed03bd214951c3b8ab55ddc9d6109fe4adf45bd Mon Sep 17 00:00:00 2001 From: Vertexwahn Date: Mon, 16 Dec 2024 22:55:07 +0100 Subject: [PATCH] Bzlmod works with Qt 6.4.0 on Linux and Windows, but not macOS --- MODULE.bazel | 2 +- README.md | 4 +-- WORKSPACE.bazel | 1 - fetch_qt.bzl | 11 ++++---- qt_libraries.bzl | 34 ++++++++++++------------ tests/.bazelrc | 52 +++++++++++++++++++++++-------------- tests/.bazelversion | 1 + tests/MODULE.bazel | 2 ++ tests/WORKSPACE.bazel | 0 tests/hello_world/README.md | 7 +++++ tests/horch/README.md | 8 ++++++ tests/qml_demo/README.md | 7 +++++ tests/uic_demo/README.md | 7 +++++ 13 files changed, 90 insertions(+), 46 deletions(-) delete mode 100644 WORKSPACE.bazel create mode 100644 tests/.bazelversion delete mode 100644 tests/WORKSPACE.bazel create mode 100644 tests/hello_world/README.md create mode 100644 tests/horch/README.md create mode 100644 tests/qml_demo/README.md create mode 100644 tests/uic_demo/README.md diff --git a/MODULE.bazel b/MODULE.bazel index 51e8c22..139dd81 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -4,8 +4,8 @@ module( compatibility_level = 1, ) -bazel_dep(name = "platforms", version = "0.0.10") bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "platforms", version = "0.0.10") qt = use_extension("@rules_qt//:extensions.bzl", "qt") qt.fetch() diff --git a/README.md b/README.md index bed8eeb..cac853b 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,8 @@ The following tools should be installed: *All platforms:* ```shell -git clone https://github.com/Vertexwahn/rules_qt6 && -cd rules_qt6/tests +git clone https://github.com/Vertexwahn/rules_qt6 +cd tests ``` *Run Hello World demo with Windows 10/11 x64 with Visual Studio 2019:* diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel deleted file mode 100644 index d7fd2b8..0000000 --- a/WORKSPACE.bazel +++ /dev/null @@ -1 +0,0 @@ -workspace(name = "rules_qt") diff --git a/fetch_qt.bzl b/fetch_qt.bzl index f978b5c..9af5b02 100644 --- a/fetch_qt.bzl +++ b/fetch_qt.bzl @@ -9,19 +9,20 @@ def fetch_qt6(): http_archive( name = "qt_windows_x86_64", urls = [ - "https://dl.dropboxusercontent.com/scl/fi/a75eyqtu0542t203eyie2/qt_6.8.0_windows_msvc2022_64_gamepad.zip?rlkey=l2ucxa4by8c8tp3xioqoamm89&dl=0", + "https://vertexwahn.de/lfs/v1/qt_6.4.0_windows_desktop_win64_msvc2019_64.zip", ], - sha256 = "59aa42d34a1b5f15dfc915830a1dbebd90c7b418cf1b726eff8d0fa2766d9827", + sha256 = "e3c20b441ddd8bb803e46de32bf2fc5563fda125409d62dcd12b5647ae5a9c7e", + strip_prefix = "6.4.0/msvc2019_64", build_file = "@rules_qt//:qt_windows_x86_64.BUILD", ) http_archive( name = "qt_linux_x86_64", urls = [ - "https://dl.dropboxusercontent.com/scl/fi/n5aelrs4qg6lweuitb795/qt_6.8.0_linux_desktop_gcc_64_gamepad.tar.xz?rlkey=miuhkfeat53z7xk85y8abi7o3&dl=0", + "https://vertexwahn.de/lfs/v1/qt_6.4.0_linux_desktop_gcc_64.tar.xz", ], - sha256 = "fc18569262fa23c19009a66cfe39ce5761c8e99bc161820cb971be0beec0bb8b", - strip_prefix = "Qt-6.8.0", + sha256 = "809919895e2ac0567df9290676d4ec6cd1ed39c432dc5da0722b3104681fd376", + strip_prefix = "6.4.0/gcc_64", build_file = "@rules_qt//:qt_linux_x86_64.BUILD", ) diff --git a/qt_libraries.bzl b/qt_libraries.bzl index d7bfa76..76631fc 100644 --- a/qt_libraries.bzl +++ b/qt_libraries.bzl @@ -15,7 +15,7 @@ QT_LIBRARIES = [ ("designer", "QtDesigner", "Qt6Designer", [":qt_xml", ":qt_opengl_widgets", ":qt_widgets", ":qt_gui", ":qt_core"]), ("designer_components", "QtDesigner", "Qt6Designer", [":qt_designer", ":qt_xml", ":qt_widgets", ":qt_gui", ":qt_core"]), ("help", "QtHelp", "Qt6Help", [":qt_sql", ":qt_widgets", ":qt_gui", ":qt_core"]), - ("location", "QtLocation", "Qt6Location", [":qt_core"]), + #("location", "QtLocation", "Qt6Location", [":qt_core"]), # ("json_rpc", "QtJsonRpc", "Qt6JsonRpc", [":qt_core"]), # ("language_server", "QtLanguageServer", "Qt6LanguageServer", [":qt_json_rpc", ":qt_core"]), ("multimedia", "QtMultimedia", "Qt6Multimedia", [":qt_network", ":qt_gui", ":qt_core"]), @@ -69,7 +69,7 @@ QT_LIBRARIES = [ ("qml_remote_objects", "QtRemoteObjectsQml", "Qt6RemoteObjectsQml", [":qt_remote_objects", ":qt_qml", ":qt_core"]), ("qml_scxml", "QtScxmlQml", "Qt6ScxmlQml", [":qt_scxml", ":qt_qml", ":qt_core"]), ("qml_state_machine", "QtStateMachineQml", "Qt6StateMachineQml", [":qt_state_machine", ":qt_qml", ":qt_core"]), - ("qml_meta", "QtQmlMeta", "Qt6QmlMeta", [":qt_qml"]), + #("qml_meta", "QtQmlMeta", "Qt6QmlMeta", [":qt_qml"]), ## qt quick ("quick", "QtQuick", "Qt6Quick", [":qt_gui", ":qt_qml"]), # ("quick_pdf", "QtPdfQuick", "Qt6PdfQuick", [":qt_quick", ":qt_pdf", ":qt_gui", ":qt_qml", ":qt_core"]), @@ -82,9 +82,9 @@ QT_LIBRARIES = [ ("quick_web_engine", "QtWebEngineQuick", "Qt6WebEngineQuick", [ ":qt_web_engine_core", ":qt_quick", ":qt_gui", ":qt_web_channel", ":qt_qml", ":qt_network", ":qt_core" ]), - ("quick_web_channel", "QtWebChannelQuick", "Qt6WebChannelQuick", [ - ":qt_web_engine_core", ":qt_quick", ":qt_gui", ":qt_web_channel", ":qt_qml", ":qt_network", ":qt_core" - ]), + #("quick_web_channel", "QtWebChannelQuick", "Qt6WebChannelQuick", [ + # ":qt_web_engine_core", ":qt_quick", ":qt_gui", ":qt_web_channel", ":qt_qml", ":qt_network", ":qt_core" + #]), ("quick_3d_effects", "QtQuick3DEffects", "Qt6Quick3DEffects", [":qt_qml", ":qt_core"]), # ("quick_3d_glsl_parser", "QtQuick3DGlslParser", "Qt6Quick3DGlslParser", [":qt_core"]), ("quick_3d_helpers", "QtQuick3DHelpers", "Qt6Quick3DHelpers", [":qt_quick_3d", ":qt_gui", ":qt_qml", ":qt_core"]), @@ -95,17 +95,17 @@ QT_LIBRARIES = [ ("quick_3d_runtime_render", "QtQuick3DRuntimeRender", "Qt6Quick3DRuntimeRender", [":qt_quick_3d_utils", ":qt_quick", ":qt_shader_tools", ":qt_gui", ":qt_core"]), ("quick_3d_utils", "QtQuick3DUtils", "Qt6Quick3DUtils", [":qt_gui", ":qt_core"]), ("quick_controls2", "QtQuickControls2", "Qt6QuickControls2", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), - ("quick_controls2_basic", "QtQuickControls2Basic", "Qt6QuickControls2Basic", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), - ("quick_controls2_fusion", "QtQuickControls2Fusion", "Qt6QuickControls2Fusion", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), - ("quick_controls2_material", "QtQuickControls2Material", "Qt6QuickControls2Material", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), - ("quick_controls2_material_style_impl", "QtQuickControls2MaterialStyleImpl", "Qt6QuickControls2MaterialStyleImpl", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), + #("quick_controls2_basic", "QtQuickControls2Basic", "Qt6QuickControls2Basic", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), + #("quick_controls2_fusion", "QtQuickControls2Fusion", "Qt6QuickControls2Fusion", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), + #("quick_controls2_material", "QtQuickControls2Material", "Qt6QuickControls2Material", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), + #("quick_controls2_material_style_impl", "QtQuickControls2MaterialStyleImpl", "Qt6QuickControls2MaterialStyleImpl", [":qt_quick_templates2", ":qt_gui", ":qt_qml", ":qt_core"]), ("quick_controls2_impl", "QtQuickControls2Impl", "Qt6QuickControls2Impl", [":qt_quick_templates2", ":qt_quick", ":qt_gui", ":qt_qml", ":qt_core"]), - ("quick_dialogs2", "QtQuickDialogs2", "Qt6QuickDialogs2", [":qt_quick_dialogs2_quick_impl", ":qt_quick_dialogs2_utils", ":qt_quick", ":qt_gui", ":qt_qml", ":qt_core"]), - ("quick_dialogs2_quick_impl", "Qt6QuickDialogs2QuickImpl", "Qt6QuickDialogs2QuickImpl", [ - ":qt_quick_templates2", - ":qt_quick_controls2_impl", - ":qt_quick", ":qt_gui", ":qt_qml", ":qt_quick_dialogs2_utils", ":qt_core", - ]), + #("quick_dialogs2", "QtQuickDialogs2", "Qt6QuickDialogs2", [":qt_quick_dialogs2_quick_impl", ":qt_quick_dialogs2_utils", ":qt_quick", ":qt_gui", ":qt_qml", ":qt_core"]), + #("quick_dialogs2_quick_impl", "Qt6QuickDialogs2QuickImpl", "Qt6QuickDialogs2QuickImpl", [ + # ":qt_quick_templates2", + # ":qt_quick_controls2_impl", + # ":qt_quick", ":qt_gui", ":qt_qml", ":qt_quick_dialogs2_utils", ":qt_core", + #]), ("quick_dialogs2_utils", "QtQuickDialogs2Utils", "Qt6QuickDialogs2Utils", [":qt_gui", ":qt_core"]), ("quick_layouts", "QtQuickLayouts", "Qt6QuickLayouts", [":qt_quick", ":qt_qml", ":qt_gui", ":qt_core"]), ("quick_particles", "Qt6QuickParticles", "Qt6QuickParticles", [":qt_quick", ":qt_qml", ":qt_gui", ":qt_core"]), @@ -133,6 +133,6 @@ QT_LIBRARIES = [ ("labs_shared_image", "QtLabsSharedImage", "Qt6LabsSharedImage", [":qt_quick", ":qt_qml", ":qt_gui", ":qt_core"]), ("labs_wave_front_mesh", "QtLabsWavefrontMesh", "Qt6LabsWavefrontMesh", [":qt_quick", ":qt_qml", ":qt_gui", ":qt_core"]), ## legacy - ("gamepad_legacy", "QtGamepadLegacy", "Qt6GamepadLegacy", [":qt_core"]), - ("gamepad_legacy_quick", "QtGamepadLegacyQuick", "Qt6GamepadLegacyQuick", [":qt_quick", ":qt_qml"]), + #("gamepad_legacy", "QtGamepadLegacy", "Qt6GamepadLegacy", [":qt_core"]), + #("gamepad_legacy_quick", "QtGamepadLegacyQuick", "Qt6GamepadLegacyQuick", [":qt_quick", ":qt_qml"]), ] diff --git a/tests/.bazelrc b/tests/.bazelrc index 3dae9b5..90c0e0a 100644 --- a/tests/.bazelrc +++ b/tests/.bazelrc @@ -1,26 +1,38 @@ -# GCC -build:gccd --cxxopt=-std=c++20 -build:gccd --cxxopt=-Wall -build:gccd --cxxopt=-Werror -build:gccd --compilation_mode=dbg +build --incompatible_disallow_empty_glob=false -# GCC -build:gcc --cxxopt=-std=c++20 -build:gcc --cxxopt=-Wall -build:gcc --cxxopt=-Werror -build:gcc --compilation_mode=opt +# Setup compiler flags - required for Qt6 is at least C++17 +build:gcc9 --cxxopt=-std=c++2a +build:gcc9 --cxxopt=-Wall +build:gcc9 --cxxopt=-Werror + +# GCC 11.2 +#build:gcc11 --cxxopt=-std=c++23 # blocked by emsdk +build:gcc11 --cxxopt=-std=c++20 +build:gcc11 --cxxopt=-Wall +#build:gcc11 --cxxopt=-Werror +#build:gcc11 --cxxopt=-Wno-error=volatile # blocked by emsdk +##build:gcc11 --cxxopt=-Wextra + +# Visual Studio 2019 +build:vs2019 --cxxopt=/std:c++20 +build:vs2019 --cxxopt=/Zc:__cplusplus # Untested +build:vs2019 --enable_runfiles # https://github.com/bazelbuild/bazel/issues/8843 +build:vs2019 --define compiler=vs2019 +build:vs2019 --copt=-DWIN32_LEAN_AND_MEAN +build:vs2019 --copt=-DNOGDI +build:vs2019 --host_copt=-DWIN32_LEAN_AND_MEAN +build:vs2019 --host_copt=-DNOGDI # Visual Studio 2022 -build:vs --cxxopt=/std:c++20 -build:vs --cxxopt=/Zc:__cplusplus -build:vs --enable_runfiles # https://github.com/bazelbuild/bazel/issues/8843 -build:vs --define compiler=vs2022 -build:vs --copt=-DWIN32_LEAN_AND_MEAN -build:vs --copt=-DNOGDI -build:vs --host_copt=-DWIN32_LEAN_AND_MEAN -build:vs --host_copt=-DNOGDI +build:vs2022 --cxxopt=/std:c++20 +build:vs2022 --cxxopt=/Zc:__cplusplus +build:vs2022 --enable_runfiles # https://github.com/bazelbuild/bazel/issues/8843 +build:vs2022 --define compiler=vs2022 +build:vs2022 --copt=-DWIN32_LEAN_AND_MEAN +build:vs2022 --copt=-DNOGDI +build:vs2022 --host_copt=-DWIN32_LEAN_AND_MEAN +build:vs2022 --host_copt=-DNOGDI # macOS (e.g. Clang 12.0.0) -build:macos --cxxopt=-std=c++20 +build:macos --cxxopt=-std=c++2a build:macos --cxxopt=-Wall -build:macos --repo_env=CC=clang diff --git a/tests/.bazelversion b/tests/.bazelversion new file mode 100644 index 0000000..fa5fce0 --- /dev/null +++ b/tests/.bazelversion @@ -0,0 +1 @@ +8.0.0 \ No newline at end of file diff --git a/tests/MODULE.bazel b/tests/MODULE.bazel index 05aa256..044022c 100644 --- a/tests/MODULE.bazel +++ b/tests/MODULE.bazel @@ -1,3 +1,5 @@ +bazel_dep(name = "platforms", version = "0.0.10") + bazel_dep(name = "rules_qt") local_path_override( module_name = "rules_qt", diff --git a/tests/WORKSPACE.bazel b/tests/WORKSPACE.bazel deleted file mode 100644 index e69de29..0000000 diff --git a/tests/hello_world/README.md b/tests/hello_world/README.md new file mode 100644 index 0000000..0b3d85e --- /dev/null +++ b/tests/hello_world/README.md @@ -0,0 +1,7 @@ +# How to run? + +## Visual Studio 2022 + +```shell +bazel run --config=vs2022 //hello_world:hello_world +``` diff --git a/tests/horch/README.md b/tests/horch/README.md new file mode 100644 index 0000000..c7d60a4 --- /dev/null +++ b/tests/horch/README.md @@ -0,0 +1,8 @@ +# How to run? + +## Visual Studio 2022 + +```shell +bazel run --config=vs2022 //horch:main +``` + diff --git a/tests/qml_demo/README.md b/tests/qml_demo/README.md new file mode 100644 index 0000000..45b9399 --- /dev/null +++ b/tests/qml_demo/README.md @@ -0,0 +1,7 @@ +# How to run? + +## Visual Studio 2022 + +```shell +bazel run --config=vs2022 //qml_demo:qt_demo +``` diff --git a/tests/uic_demo/README.md b/tests/uic_demo/README.md new file mode 100644 index 0000000..a199ac3 --- /dev/null +++ b/tests/uic_demo/README.md @@ -0,0 +1,7 @@ +# How to run? + +## Visual Studio 2022 + +```shell +bazel run --config=vs2022 //uic_demo:main +```