Skip to content

Commit

Permalink
bzlmod support
Browse files Browse the repository at this point in the history
  • Loading branch information
Sayter99 committed Oct 8, 2024
1 parent 14d24ec commit f5368af
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 23 deletions.
11 changes: 5 additions & 6 deletions fetch_qt.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,9 @@ def fetch_qt6():
http_archive(
name = "qt_windows_x86_64",
urls = [
"https://dl.dropboxusercontent.com/scl/fi/z00b2gu5gtuiqrbg3w2ew/qt_6.5.3_windows_msvc2022_64.zip?rlkey=sfnbnx4md9fms5o7mmpe1lqlg&dl=0",
"https://dl.dropboxusercontent.com/scl/fi/5u79o4iqx7ija38h075rd/qt_6.7.3_windows_msvc2022_64_gamepad.zip?rlkey=c3gg9a4xw5s8ewyrnqz5gh82p&dl=0",
],
sha256 = "74e5d4e5dccad28d7e32cd4f9ea659b22143c4dca2dfb4eb98cc0c06372efe35",
strip_prefix = "6.5.3/msvc2022_64",
sha256 = "6cfec811307a9dea55fc11d24f6c6f828a8cacf39e12ff13740efb0b227cb2c1",
build_file = "@rules_qt//:qt_windows_x86_64.BUILD",
)

Expand All @@ -25,10 +24,10 @@ def fetch_qt6():
http_archive(
name = "qt_linux_x86_64",
urls = [
"https://dl.dropboxusercontent.com/scl/fi/sjwx30o914oxm4rdxrkas/qt_6.5.1_linux_desktop_gcc_64.zip?rlkey=xulfkmvkrj9mdfbkv5928sjjk&dl=0",
"https://dl.dropboxusercontent.com/scl/fi/0qf3lcph52a3dfsf9gszb/qt_6.7.3_linux_desktop_gcc_64_gamepad.tar.xz?rlkey=aya7qoj1354ep1iunddgu8f6m&dl=0",
],
sha256 = "cd7a0190390d2ca68b5c06ac95d36af22836993233565acf2ec73b0f74d7c914",
strip_prefix = "6.5.1/gcc_64",
sha256 = "101dfab81e1b41d582476df5bf27c355871754b94597a72ad3eefe711aea43af",
strip_prefix = "Qt-6.7.3",
build_file = "@rules_qt//:qt_linux_x86_64.BUILD",
)

Expand Down
65 changes: 48 additions & 17 deletions qt.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -267,10 +267,15 @@ def qt_cc_library(name, srcs, hdrs, normal_hdrs = [], deps = None, copts = [], t
)

qt_plugin_data = select({
"@platforms//os:linux": ["@qt_linux_x86_64//:plugin_files", "@qt_linux_x86_64//:qml_files"],
"@rules_qt//:osx_x86_64": ["@qt_mac_x86_64//:plugin_files", "@qt_mac_x86_64//:qml_files"],
"@rules_qt//:osx_arm64": ["@qt_mac_aarch64//:plugin_files", "@qt_mac_aarch64//:qml_files"],
"@platforms//os:windows": ["@qt_windows_x86_64//:plugin_files", "@qt_windows_x86_64//:qml_files"],
"@platforms//os:linux": ["@qt_linux_x86_64//:qml", "@qt_linux_x86_64//:plugins", "@qt_linux_x86_64//:lib"],
"@rules_qt//:osx_x86_64": ["@qt_mac_x86_64//:plugins", "@qt_mac_x86_64//:qml", "@qt_mac_x86_64//:lib"],
"@rules_qt//:osx_arm64": ["@qt_mac_aarch64//:plugins", "@qt_mac_aarch64//:qml", "@qt_mac_aarch64//:lib"],
"@platforms//os:windows": [
"@qt_windows_x86_64//:plugins",
"@qt_windows_x86_64//:qml",
"@qt_windows_x86_64//:plugin_files",
"@qt_windows_x86_64//:qml_files",
],
})

def update_dict(source, env):
Expand All @@ -280,27 +285,27 @@ def update_dict(source, env):
return result

LINUX_ENV_DATA = {
"QT_QPA_PLATFORM_PLUGIN_PATH": "external/qt_linux_x86_64/plugins/platforms",
"QML2_IMPORT_PATH": "external/qt_linux_x86_64/qml",
"QT_PLUGIN_PATH": "external/qt_linux_x86_64/plugins",
"QT_QPA_PLATFORM_PLUGIN_PATH": "$(location @qt_linux_x86_64//:plugins)/platforms",
"QML2_IMPORT_PATH": "$(location @qt_linux_x86_64//:qml)",
"QT_PLUGIN_PATH": "$(location @qt_linux_x86_64//:plugins)",
}

MAC_X64_ENV_DATA = {
"QT_QPA_PLATFORM_PLUGIN_PATH": "external/qt_mac_x86_64/share/qt/plugins/platforms",
"QML2_IMPORT_PATH": "external/qt_mac_x86_64/qml",
"QT_PLUGIN_PATH": "external/qt_mac_x86_64/share/qt/plugins",
"QT_QPA_PLATFORM_PLUGIN_PATH": "$(location @qt_mac_x86_64//:plugins)/platforms",
"QML2_IMPORT_PATH": "$(location @qt_mac_x86_64//:qml)",
"QT_PLUGIN_PATH": "$(location @qt_mac_x86_64//:plugins)",
}

WINDOWS_ENV_DATA = {
"QT_QPA_PLATFORM_PLUGIN_PATH": "external/qt_windows_x86_64/plugins/platforms",
"QML2_IMPORT_PATH": "external/qt_windows_x86_64/qml",
"QT_PLUGIN_PATH": "external/qt_windows_x86_64/plugins",
"QT_QPA_PLATFORM_PLUGIN_PATH": "$(location @qt_windows_x86_64//:plugins)/platforms",
"QML2_IMPORT_PATH": "$(location @qt_windows_x86_64//:qml)",
"QT_PLUGIN_PATH": "$(location @qt_windows_x86_64//:plugins)",
}

MAC_M1_ENV_DATA = {
"QT_QPA_PLATFORM_PLUGIN_PATH": "external/qt_mac_aarch64/share/qt/plugins/platforms",
"QML2_IMPORT_PATH": "external/qt_mac_aarch64/qml",
"QT_PLUGIN_PATH": "external/qt_mac_aarch64/share/qt/plugins",
"QT_QPA_PLATFORM_PLUGIN_PATH": "$(location @qt_mac_aarch64//:plugins)/platforms",
"QML2_IMPORT_PATH": "$(location @qt_mac_aarch64//:qml)",
"QT_PLUGIN_PATH": "$(location @qt_mac_aarch64//:plugins)",
}

def qt_cc_binary(name, srcs, deps = None, copts = [], data = [], env = {}, **kwargs):
Expand All @@ -319,6 +324,32 @@ def qt_cc_binary(name, srcs, deps = None, copts = [], data = [], env = {}, **kwa
mac_x64_env_data = update_dict(MAC_X64_ENV_DATA, env)
windows_env_data = update_dict(WINDOWS_ENV_DATA, env)
mac_m1_env_data = update_dict(MAC_M1_ENV_DATA, env)
env_file = []
native.genrule(
name = name + "_env",
tools = qt_plugin_data,
outs = ["qt_env.ini"],
cmd = select({
"@platforms//os:linux":
"echo $$\"LD_LIBRARY_PATH: $(location @qt_linux_x86_64//:lib)\" > $@ \
$$\"\r\nQT_QPA_PLATFORM_PLUGIN_PATH: $(location @qt_linux_x86_64//:plugins)/platforms\" > $@ \
$$\"\r\nQML2_IMPORT_PATH: $(location @qt_linux_x86_64//:qml)\" > $@ \
$$\"\r\nQT_PLUGIN_PATH: $(location @qt_linux_x86_64//:plugins)\" > $@",
"@rules_qt//:osx_x86_64":
"echo $$\"QT_QPA_PLATFORM_PLUGIN_PATH: $(location @qt_mac_x86_64//:plugins)/platforms\" > $@ \
$$\"\r\nQML2_IMPORT_PATH: $(location @qt_mac_x86_64//:qml)\" > $@ \
$$\"\r\nQT_PLUGIN_PATH: $(location @qt_mac_x86_64//:plugins)\" > $@",
"@rules_qt//:osx_arm64":
"echo $$\"QT_QPA_PLATFORM_PLUGIN_PATH: $(location @qt_mac_aarch64//:plugins)/platforms\" > $@ \
$$\"\r\nQML2_IMPORT_PATH: $(location @qt_mac_aarch64//:qml)\" > $@ \
$$\"\r\nQT_PLUGIN_PATH: $(location @qt_mac_aarch64//:plugins)\" > $@",
"@platforms//os:windows":
"echo $$\"QT_QPA_PLATFORM_PLUGIN_PATH: $(location @qt_windows_x86_64//:plugins)/platforms\" > $@ \
$$\"\r\nQML2_IMPORT_PATH: $(location @qt_windows_x86_64//:qml)\" > $@ \
$$\"\r\nQT_PLUGIN_PATH: $(location @qt_windows_x86_64//:plugins)\" > $@",
}),
)
env_file.append("qt_env.ini")
native.cc_binary(
name = name,
srcs = srcs,
Expand All @@ -327,7 +358,7 @@ def qt_cc_binary(name, srcs, deps = None, copts = [], data = [], env = {}, **kwa
"@platforms//os:windows": [],
"//conditions:default": ["-fPIC"],
}),
data = qt_plugin_data + data,
data = qt_plugin_data + env_file + data,
env = select({
"@platforms//os:linux": linux_env_data,
"@rules_qt//:osx_x86_64": mac_x64_env_data,
Expand Down
11 changes: 11 additions & 0 deletions qt_libraries.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +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"]),
# ("json_rpc", "QtJsonRpc", "Qt6JsonRpc", [":qt_core"]),
# ("language_server", "QtLanguageServer", "Qt6LanguageServer", [":qt_json_rpc", ":qt_core"]),
("multimedia", "QtMultimedia", "Qt6Multimedia", [":qt_network", ":qt_gui", ":qt_core"]),
Expand Down Expand Up @@ -80,6 +81,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_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"]),
Expand All @@ -90,6 +94,10 @@ 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_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", [
Expand Down Expand Up @@ -123,4 +131,7 @@ QT_LIBRARIES = [
("labs_settings", "QtLabsSettings", "Qt6LabsSettings", [":qt_qml", ":qt_core"]),
("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"]),
]
5 changes: 5 additions & 0 deletions qt_linux_x86_64.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,8 @@ filegroup(
srcs = glob(["qml/**/*"]),
visibility = ["//visibility:public"],
)

exports_files(
["qml", "plugins", "lib"],
visibility = ["//visibility:public"],
)
5 changes: 5 additions & 0 deletions qt_mac_aarch64.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,8 @@ filegroup(
srcs = glob(["qml/**/*"]),
visibility = ["//visibility:public"],
)

exports_files(
["qml", "plugins", "lib"],
visibility = ["//visibility:public"],
)
5 changes: 5 additions & 0 deletions qt_mac_x86_64.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,8 @@ filegroup(
srcs = glob(["qml/**/*"]),
visibility = ["//visibility:public"],
)

exports_files(
["qml", "plugins", "lib"],
visibility = ["//visibility:public"],
)
5 changes: 5 additions & 0 deletions qt_windows_x86_64.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,8 @@ filegroup(
srcs = glob(["qml/**/*"]),
visibility = ["//visibility:public"],
)

exports_files(
["qml", "plugins", "lib"],
visibility = ["//visibility:public"],
)

0 comments on commit f5368af

Please sign in to comment.