From ee80e956dd10af76785b70a27283a9a42967c858 Mon Sep 17 00:00:00 2001 From: ArthurSonzogni Date: Sun, 27 Apr 2025 12:39:48 +0200 Subject: [PATCH] Update workflow --- BUILD.bazel | 4 ++-- bazel/ftxui.bzl | 33 +++++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index e0e3cf8a..94bd4389 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -13,7 +13,7 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load(":bazel/ftxui.bzl", "ftxui_cc_library") load(":bazel/ftxui.bzl", "generate_examples") load(":bazel/ftxui.bzl", "cpp20") -load(":bazel/ftxui.bzl", "msvc_copts") +load(":bazel/ftxui.bzl", "windows_copts") load(":bazel/ftxui.bzl", "pthread_linkopts") package(default_visibility = ["//visibility:public"]) @@ -241,7 +241,7 @@ cc_test( "include", "src", ], - copts = cpp20() + msvc_copts(), + copts = cpp20() + windows_copts(), deps = [ "//:ftxui", "@googletest//:gtest_main", diff --git a/bazel/ftxui.bzl b/bazel/ftxui.bzl index 0f5e0c89..c96cf5b6 100644 --- a/bazel/ftxui.bzl +++ b/bazel/ftxui.bzl @@ -20,23 +20,42 @@ def cpp20(): "//conditions:default": ["-std=c++20"], }) -def msvc_copts(): +# Microsoft terminal is a bit buggy ¯\_(ツ)_/¯ and MSVC uses bad defaults. +def windows_copts(): MSVC_COPTS = [ - # Force Microsoft Visual Studio to decode sources files in UTF-8. + # Microsoft Visual Studio must decode sources files as UTF-8. "/utf-8", - # Force Microsoft Visual Studio to interpret the source files as - # Unicode. + # Microsoft Visual Studio must interpret the codepoint using unicode. "/DUNICODE", "/D_UNICODE", # Fallback for Microsoft Terminal. + # This + # - Replace missing font symbols by others. + # - Reduce screen position pooling frequency to deals against a Microsoft + # race condition. This was fixed in 2020, but clients never not updated. + # - https://github.com/microsoft/terminal/pull/7583 + # - https://github.com/ArthurSonzogni/FTXUI/issues/136 "/DFTXUI_MICROSOFT_TERMINAL_FALLBACK", ] + + WINDOWS_COPTS = [ + # Fallback for Microsoft Terminal. + # This + # - Replace missing font symbols by others. + # - Reduce screen position pooling frequency to deals against a Microsoft + # race condition. This was fixed in 2020, but clients never not updated. + # - https://github.com/microsoft/terminal/pull/7583 + # - https://github.com/ArthurSonzogni/FTXUI/issues/136 + "-DFTXUI_MICROSOFT_TERMINAL_FALLBACK", + ]; return select({ + # MSVC: "@rules_cc//cc/compiler:msvc-cl": MSVC_COPTS, "@rules_cc//cc/compiler:clang-cl": MSVC_COPTS, + "@platforms//os:windows": WINDOWS_COPTS, "//conditions:default": [], }) @@ -69,10 +88,12 @@ def ftxui_cc_library( "include", "src", ], - copts = cpp17() + msvc_copts(), + copts = cpp17() + windows_copts(), visibility = ["//visibility:public"], ) +# Compile all the examples in the examples/ directory. +# This is useful to check the Bazel is synchronized with CMake definitions. def generate_examples(): cpp_files = native.glob(["examples/**/*.cpp"]) @@ -90,5 +111,5 @@ def generate_examples(): name = name, srcs = [src], deps = ["//:component"], - copts = cpp20() + msvc_copts(), + copts = cpp20() + windows_copts(), )