diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a1c48f4c..e9c743b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: compiler: msvc msvc_arch: x64 msvc_version: 2022 - qt_version: 6.5.0 + qt_version: 6.5.2 qt_arch: win64_msvc2019_64 qt_modules: qtimageformats qt_tools: '' @@ -44,7 +44,7 @@ jobs: env_cc: gcc-11 env_cxx: g++-11 compiler: gcc - qt_version: 6.5.0 + qt_version: 6.5.2 qt_arch: gcc_64 qt_modules: qtimageformats qt_tools: '' diff --git a/.gitmodules b/.gitmodules index d73393a6..bfaddd87 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/conan-io/cmake-conan.git [submodule "test/data"] path = test/data - url = ../supercell-wx-test-data + url = https://github.com/dpaulat/supercell-wx-test-data [submodule "external/hsluv-c"] path = external/hsluv-c url = https://github.com/hsluv/hsluv-c.git @@ -18,13 +18,13 @@ url = https://github.com/nothings/stb.git [submodule "data"] path = data - url = ../supercell-wx-data + url = https://github.com/dpaulat/supercell-wx-data [submodule "external/imgui"] path = external/imgui url = https://github.com/ocornut/imgui.git [submodule "external/imgui-backend-qt"] path = external/imgui-backend-qt - url = ../imgui-backend-qt + url = https://github.com/dpaulat/imgui-backend-qt [submodule "external/aws-sdk-cpp"] path = external/aws-sdk-cpp url = https://github.com/aws/aws-sdk-cpp.git diff --git a/CMakeLists.txt b/CMakeLists.txt index c9b28bf5..e26575bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBOOST_ALL_NO_LIB") set(SCWX_DIR ${PROJECT_SOURCE_DIR}) set(SCWX_VERSION "0.2.2") +option(SCWX_ADDRESS_SANITIZER "Build with Address Sanitizer" OFF) + add_subdirectory(external) add_subdirectory(wxdata) add_subdirectory(scwx-qt) diff --git a/README.md b/README.md index 41e6726f..9c5fe733 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ continuously updating weather data on top of a responsive map, providing the capability to monitor weather events using reflectivity, velocity, and other products. +Please be sure to check out the documentation before getting started: [Supercell Wx Documentation](https://supercell-wx.rtfd.io/) + ![image](https://supercell-wx.readthedocs.io/en/latest/_images/initial-setup-03-initial-configured-small.png) ## Supported Platforms @@ -20,9 +22,33 @@ Supercell Wx supports the following 64-bit operating systems: - Windows 10 (1809 or later) - Windows 11 - Linux - - EndeavourOS + - Arch Linux (EndeavourOS, SteamOS [Steam Deck], and other Arch derivatives) - Fedora Linux 34+ - openSUSE Tumbleweed - - SteamOS (Steam Deck) - Ubuntu 22.04+ - Most distributions supporting the GCC Standard C++ Library 11+ + +## Linux Dependencies + +Supercell Wx requires the following Linux dependencies: + +- Linux/X11 (Wayland works too) with support for GCC 11 and OpenGL 3.3 +- X11/XCB libraries including xcb-cursor + +## FAQ + +Frequently asked questions: + +- Q: Why is the map black when loading for the first time? + + - A. You must obtain a free API key from either (or both) [MapTiler](https://cloud.maptiler.com/auth/widget?next=https://cloud.maptiler.com/maps/) which currently does not require a credit/debit card, or [Mapbox](https://account.mapbox.com/) which ***does*** require a credit/debit card, but as of writing, you will receive 200K free requests per month, which should be sufficient for an individual user. + +- Q: Why is it that when I change my color table, API key, grid width/height settings, nothing happens after hitting apply? + + - A. As of right now, you must restart Supercell Wx in order to apply these changes. In future iterations, this will no longer be an issue. + +- Q. Is it possible to get dark mode? + + - A. In Windows, make sure to set the flag `-style fusion` at the end of the target path of the .exe + - Example: `C:\Users\Administrator\Desktop\Supercell-Wx\bin\supercell-wx.exe -style fusion` + - A. In Linux, if you're using KDE, Supercell Wx should automatically follow your theme settings. diff --git a/external/aws-sdk-cpp b/external/aws-sdk-cpp index 8939373b..197a6dfd 160000 --- a/external/aws-sdk-cpp +++ b/external/aws-sdk-cpp @@ -1 +1 @@ -Subproject commit 8939373bde9cd050708a3b166541e9a9d37e2901 +Subproject commit 197a6dfde08071bec386518eb1aa1631903d198d diff --git a/external/aws-sdk-cpp.cmake b/external/aws-sdk-cpp.cmake index 8e2138c4..1ba641db 100644 --- a/external/aws-sdk-cpp.cmake +++ b/external/aws-sdk-cpp.cmake @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.20) set(PROJECT_NAME scwx-aws-sdk-cpp) +set(AWS_SDK_WARNINGS_ARE_ERRORS OFF) set(BUILD_ONLY "s3") set(BUILD_SHARED_LIBS OFF) set(CPP_STANDARD 17) @@ -9,6 +10,7 @@ set(ENABLE_UNITY_BUILD ON) set(MINIMIZE_SIZE OFF) # Some variables also need set in the cache... set them all! +set(AWS_SDK_WARNINGS_ARE_ERRORS OFF CACHE BOOL "Compiler warning is treated as an error. Try turning this off when observing errors on a new or uncommon compiler") set(BUILD_ONLY "s3" CACHE STRING "A semi-colon delimited list of the projects to build") set(BUILD_SHARED_LIBS OFF CACHE BOOL "If enabled, all aws sdk libraries will be build as shared objects; otherwise all Aws libraries will be built as static objects") set(CPP_STANDARD "17" CACHE STRING "Flag to upgrade the C++ standard used. The default is 11. The minimum is 11.") diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index b3b07707..aed73a47 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -443,6 +443,21 @@ target_compile_options(supercell-wx PRIVATE $<$>:-Wall -Wextra -Wpedantic -Werror> ) +# Address Sanitizer options +if (SCWX_ADDRESS_SANITIZER) + target_compile_options(scwx-qt PRIVATE + $<$:/fsanitize=address> + $<$>:-fsanitize=address -fsanitize-recover=address> + ) + target_compile_options(supercell-wx PRIVATE + $<$:/fsanitize=address> + $<$>:-fsanitize=address -fsanitize-recover=address> + ) + target_link_options(supercell-wx PRIVATE + $<$>:-fsanitize=address> + ) +endif() + if (MSVC) # Produce PDB file for debug target_compile_options(scwx-qt PRIVATE "$<$:/Zi>") diff --git a/setup-debug.bat b/setup-debug.bat index dcc3f2ba..2102a75e 100644 --- a/setup-debug.bat +++ b/setup-debug.bat @@ -1,5 +1,5 @@ call tools\setup-common.bat mkdir build-debug cd build-debug -cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CONFIGURATION_TYPES=Debug -DCMAKE_PREFIX_PATH=C:/Qt/6.5.0/msvc2019_64 .. +cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CONFIGURATION_TYPES=Debug -DCMAKE_PREFIX_PATH=C:/Qt/6.5.2/msvc2019_64 .. pause diff --git a/setup-debug.sh b/setup-debug.sh index bf55697e..74e4b150 100755 --- a/setup-debug.sh +++ b/setup-debug.sh @@ -2,4 +2,4 @@ ./tools/setup-common.sh mkdir -p build-debug cd build-debug -cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CONFIGURATION_TYPES=Debug -DCMAKE_PREFIX_PATH=/opt/Qt/6.5.0/gcc_64 .. +cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CONFIGURATION_TYPES=Debug -DCMAKE_PREFIX_PATH=/opt/Qt/6.5.2/gcc_64 .. diff --git a/setup-release.bat b/setup-release.bat index da10db7c..593e3b69 100644 --- a/setup-release.bat +++ b/setup-release.bat @@ -1,5 +1,5 @@ call tools\setup-common.bat mkdir build-release cd build-release -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES=Release -DCMAKE_PREFIX_PATH=C:/Qt/6.5.0/msvc2019_64 .. +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES=Release -DCMAKE_PREFIX_PATH=C:/Qt/6.5.2/msvc2019_64 .. pause diff --git a/setup-release.sh b/setup-release.sh index 04c7c2d9..f85f1eaf 100755 --- a/setup-release.sh +++ b/setup-release.sh @@ -2,4 +2,4 @@ ./tools/setup-common.sh mkdir -p build-release cd build-release -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES=Release -DCMAKE_PREFIX_PATH=/opt/Qt/6.5.0/gcc_64 .. +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CONFIGURATION_TYPES=Release -DCMAKE_PREFIX_PATH=/opt/Qt/6.5.2/gcc_64 .. diff --git a/wxdata/wxdata.cmake b/wxdata/wxdata.cmake index 38ffd1b0..9e99d2d2 100644 --- a/wxdata/wxdata.cmake +++ b/wxdata/wxdata.cmake @@ -277,3 +277,11 @@ endif() set_target_properties(wxdata PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF) + +# Address Sanitizer options +if (SCWX_ADDRESS_SANITIZER) + target_compile_options(wxdata PRIVATE + $<$:/fsanitize=address> + $<$>:-fsanitize=address -fsanitize-recover=address> + ) +endif()