diff --git a/CHANGELOG.md b/CHANGELOG.md index b464881e1..d48377e8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Ramses Changelog +28.0.0-rc5 +------------------- +### Fixed +- Fixed renderer logging configuration caused by 2 logger instances + 28.0.0-rc4 ------------------- ### Changed diff --git a/CMakeLists.txt b/CMakeLists.txt index 417d670c0..19b1b0a1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.13) set(RAMSES_VERSION_MAJOR 28) set(RAMSES_VERSION_MINOR 0) set(RAMSES_VERSION_PATCH 0) -set(RAMSES_VERSION_POSTFIX "-rc4") +set(RAMSES_VERSION_POSTFIX "-rc5") set(RAMSES_VERSION "${RAMSES_VERSION_MAJOR}.${RAMSES_VERSION_MINOR}.${RAMSES_VERSION_PATCH}${RAMSES_VERSION_POSTFIX}") project(ramses-sdk diff --git a/scripts/ci/installation-check/check-build-with-install-shared-lib.bat b/scripts/ci/installation-check/check-build-with-install-shared-lib.bat index a2c1f8a3d..005d3377f 100644 --- a/scripts/ci/installation-check/check-build-with-install-shared-lib.bat +++ b/scripts/ci/installation-check/check-build-with-install-shared-lib.bat @@ -41,7 +41,7 @@ cd test-cmake.config SET PATH=%INSTALL_DIR%/bin;%PATH% -cmake -G%CMAKE_GENERATOR% -DCMAKE_PREFIX_PATH="%INSTALL_DIR%/lib" --build test-cmake.config %SCRIPT_DIR%/shared-lib-check/ +cmake -G%CMAKE_GENERATOR% -DCMAKE_PREFIX_PATH="%INSTALL_DIR%/lib" %SCRIPT_DIR%/shared-lib-check/ cmake --build . --config %BUILD_CONFIG% --target run-all ::check for errors diff --git a/scripts/ci/installation-check/check-shared-lib-symbols.py b/scripts/ci/installation-check/check-shared-lib-symbols.py index 0b93766f1..2c7cd7959 100755 --- a/scripts/ci/installation-check/check-shared-lib-symbols.py +++ b/scripts/ci/installation-check/check-shared-lib-symbols.py @@ -40,8 +40,9 @@ def file_to_symbols(lib_file, is_shared_lib): # run c++filt to demangle output from nm cppfilt_command = ['c++filt', '-r'] cppfilt_process_result = subprocess.run(cppfilt_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, input=nm_process_result.stdout) - cppfilt_process_output_std = cppfilt_process_result.stdout.decode('utf-8') + return cppfilt_process_result.stdout.decode('utf-8') + def find_api_symbols(symbols): ignore_list = [ # ignore ramses internal and Impl r'ramses::internal::', @@ -53,22 +54,44 @@ def file_to_symbols(lib_file, is_shared_lib): # 0000000000001d30 T ramses::Appearance::unbindInput(ramses::UniformInput const&) symbol_regex = re.compile(rf"^([0-9A-Fa-f]+)(\s+)[TB](\s+)({ignore_regex}.*)", re.MULTILINE) - lib_symbols = [s.group(4) for s in re.finditer(symbol_regex, cppfilt_process_output_std)] + return [s.group(4) for s in re.finditer(symbol_regex, symbols)] + + def check_missing_api_symbols(static_lib_symbols, shared_lib_symbols): + static_lib_symbols = find_api_symbols(static_lib_symbols) + shared_lib_symbols = find_api_symbols(shared_lib_symbols) + missing_symbols = [s for s in static_lib_symbols if s not in shared_lib_symbols] + if len(static_lib_symbols) == 0: + raise Exception("No API symbols found in static lib (internal error)") + if len(shared_lib_symbols) == 0: + raise Exception("No API symbols found in shared lib (internal error)") + if len(missing_symbols) > 0: + raise Exception(f"FOUND MISSING SYMBOLS: {missing_symbols}") + + def check_unique_exports(headless, full): + # check interface between headless and full shared lib + symbols = [ + 'ramses::internal::ErrorReporting', + 'ramses::internal::FrameworkFactoryRegistry', + 'ramses::internal::RamsesFrameworkImpl', + 'ramses::internal::GetRamsesLogger', + ] + for s in symbols: + if s not in headless: + raise Exception(f"Symbol missing in headless-shared-lib: {s}") + if s in full: + raise Exception(f"Unexpected symbol in full-shared-lib:: {s}") - return lib_symbols + static_lib_headless_symbols = file_to_symbols(client_static_lib_dir, False) + static_lib_headless_symbols += file_to_symbols(framework_static_lib_dir, False) + shared_lib_headless_symbols = file_to_symbols(headless_shared_lib_dir, True) - static_lib_symbols = file_to_symbols(client_static_lib_dir, False) - static_lib_symbols += file_to_symbols(framework_static_lib_dir, False) - if not headless_only: - static_lib_symbols += file_to_symbols(renderer_static_lib_dir, False) + check_missing_api_symbols(static_lib_headless_symbols, shared_lib_headless_symbols) - shared_lib_symbols = file_to_symbols(headless_shared_lib_dir, True) if not headless_only: - shared_lib_symbols += file_to_symbols(full_shared_lib_dir, True) - - missing_symbols = [s for s in static_lib_symbols if s not in shared_lib_symbols] - if len(missing_symbols) > 0: - raise Exception(f"FOUND MISSING SYMBOLS: {missing_symbols}") + static_lib_symbols = file_to_symbols(renderer_static_lib_dir, False) + shared_lib_symbols = file_to_symbols(full_shared_lib_dir, True) + check_missing_api_symbols(static_lib_symbols, shared_lib_symbols) + check_unique_exports(shared_lib_headless_symbols, shared_lib_symbols) if __name__ == "__main__": diff --git a/src/client/impl/RamsesClientImpl.cpp b/src/client/impl/RamsesClientImpl.cpp index 35ce6af41..fee9e5c97 100644 --- a/src/client/impl/RamsesClientImpl.cpp +++ b/src/client/impl/RamsesClientImpl.cpp @@ -47,7 +47,6 @@ #include "internal/PlatformAbstraction/Collections/HashMap.h" #include "internal/PlatformAbstraction/PlatformTime.h" #include "internal/Core/Utils/LogMacros.h" -#include "internal/Core/Utils/RamsesLogger.h" #include "ClientFactory.h" #include "impl/FrameworkFactoryRegistry.h" #include "internal/Ramsh/Ramsh.h" diff --git a/src/framework/impl/RamsesFrameworkConfigImpl.h b/src/framework/impl/RamsesFrameworkConfigImpl.h index 3c04e5511..0ea3172d0 100644 --- a/src/framework/impl/RamsesFrameworkConfigImpl.h +++ b/src/framework/impl/RamsesFrameworkConfigImpl.h @@ -9,7 +9,7 @@ #pragma once #include "TCPConfig.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "ramses/framework/IThreadWatchdogNotification.h" #include "ramses/framework/EFeatureLevel.h" #include "impl/ThreadWatchdogConfig.h" diff --git a/src/framework/impl/RamsesFrameworkImpl.cpp b/src/framework/impl/RamsesFrameworkImpl.cpp index aea1d5d3b..896b829da 100644 --- a/src/framework/impl/RamsesFrameworkImpl.cpp +++ b/src/framework/impl/RamsesFrameworkImpl.cpp @@ -13,7 +13,7 @@ #include "ramses-sdk-build-config.h" #include "internal/Communication/TransportCommon/CommunicationSystemFactory.h" #include "internal/Communication/TransportCommon/ICommunicationSystem.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "impl/RamsesFrameworkConfigImpl.h" #include "ramses/framework/RamsesFrameworkConfig.h" #include "internal/Ramsh/RamshStandardSetup.h" diff --git a/src/framework/impl/RamsesLoggerImpl.cpp b/src/framework/impl/RamsesLoggerImpl.cpp new file mode 100644 index 000000000..b67f633a5 --- /dev/null +++ b/src/framework/impl/RamsesLoggerImpl.cpp @@ -0,0 +1,18 @@ +// ------------------------------------------------------------------------- +// Copyright (C) 2023 BMW AG +// ------------------------------------------------------------------------- +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. +// ------------------------------------------------------------------------- + +#include "impl/RamsesLoggerImpl.h" + +namespace ramses::internal +{ + RamsesLogger& GetRamsesLogger() + { + static RamsesLogger logger; + return logger; + } +} diff --git a/src/framework/impl/RamsesLoggerImpl.h b/src/framework/impl/RamsesLoggerImpl.h new file mode 100644 index 000000000..8c0e1aa82 --- /dev/null +++ b/src/framework/impl/RamsesLoggerImpl.h @@ -0,0 +1,19 @@ +// ------------------------------------------------------------------------- +// Copyright (C) 2023 BMW AG +// ------------------------------------------------------------------------- +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. +// ------------------------------------------------------------------------- + +#pragma once + +#include "ramses/framework/APIExport.h" +#include "internal/Core/Utils/RamsesLogger.h" + +namespace ramses::internal +{ + class RamsesLogger; + + RAMSES_IMPL_EXPORT RamsesLogger& GetRamsesLogger(); +} diff --git a/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp b/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp index 651152379..fcaded538 100644 --- a/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp +++ b/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp @@ -9,7 +9,7 @@ #include "internal/Core/Utils/AndroidLogger/AndroidLogAppender.h" #include "internal/Core/Utils/LogMessage.h" #include "internal/Core/Utils/LogContext.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "internal/Core/Utils/InplaceStringTokenizer.h" #include diff --git a/src/framework/internal/Core/Utils/LogMacros.cpp b/src/framework/internal/Core/Utils/LogMacros.cpp index 5c6c2e2d6..664fd3c2e 100644 --- a/src/framework/internal/Core/Utils/LogMacros.cpp +++ b/src/framework/internal/Core/Utils/LogMacros.cpp @@ -7,7 +7,6 @@ // ------------------------------------------------------------------------- #include "internal/Core/Utils/LogMacros.h" -#include "internal/Core/Utils/RamsesLogger.h" namespace ramses::internal { diff --git a/src/framework/internal/Core/Utils/LogMacros.h b/src/framework/internal/Core/Utils/LogMacros.h index 8db739ced..979f37a97 100644 --- a/src/framework/internal/Core/Utils/LogMacros.h +++ b/src/framework/internal/Core/Utils/LogMacros.h @@ -10,7 +10,7 @@ #include "internal/Core/Utils/LogMessage.h" #include "internal/Core/Utils/LogContext.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "internal/PlatformAbstraction/Collections/StringOutputStream.h" #include "internal/PlatformAbstraction/FmtBase.h" diff --git a/src/framework/internal/Core/Utils/RamsesLogger.h b/src/framework/internal/Core/Utils/RamsesLogger.h index db31b1791..0cfe756f4 100644 --- a/src/framework/internal/Core/Utils/RamsesLogger.h +++ b/src/framework/internal/Core/Utils/RamsesLogger.h @@ -104,10 +104,4 @@ namespace ramses::internal std::vector m_logAppenders; LogContext& m_fileTransferContext; }; - - inline RamsesLogger& GetRamsesLogger() - { - static RamsesLogger logger; - return logger; - } } diff --git a/src/framework/internal/PlatformAbstraction/PlatformThread.h b/src/framework/internal/PlatformAbstraction/PlatformThread.h index 77bf46f5b..e60420a6e 100644 --- a/src/framework/internal/PlatformAbstraction/PlatformThread.h +++ b/src/framework/internal/PlatformAbstraction/PlatformThread.h @@ -9,7 +9,7 @@ #pragma once #include "internal/PlatformAbstraction/Runnable.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include #include diff --git a/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp b/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp index d4d85dd7a..21f330b4a 100644 --- a/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp +++ b/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp @@ -10,7 +10,7 @@ #include "internal/Ramsh/RamshCommandPrintLogLevels.h" #include "internal/Ramsh/Ramsh.h" #include "internal/Core/Utils/LogMacros.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" namespace ramses::internal { diff --git a/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp b/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp index 84eae3477..668793ebd 100644 --- a/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp +++ b/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp @@ -9,7 +9,7 @@ #include "internal/Ramsh/RamshCommandSetConsoleLogLevel.h" #include "internal/Ramsh/Ramsh.h" #include "internal/Core/Utils/LogMacros.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "internal/Core/Utils/LogHelper.h" namespace ramses::internal diff --git a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp index edb0b027e..966ddd09f 100644 --- a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp +++ b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp @@ -9,7 +9,7 @@ #include "internal/Ramsh/RamshCommandSetContextLogLevel.h" #include "internal/Ramsh/Ramsh.h" #include "internal/Core/Utils/LogMacros.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "internal/Core/Utils/LogHelper.h" namespace ramses::internal diff --git a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp index fbd75960a..005af73e5 100644 --- a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp +++ b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp @@ -9,7 +9,7 @@ #include "internal/Ramsh/RamshCommandSetContextLogLevelFilter.h" #include "internal/Ramsh/Ramsh.h" #include "internal/Core/Utils/LogMacros.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" namespace ramses::internal { diff --git a/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp b/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp index 3d36175e5..b75fb61a9 100644 --- a/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp +++ b/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp @@ -12,7 +12,7 @@ #include "internal/Ramsh/RamshCommunicationChannelConsoleSignalHandler.h" #include "internal/Ramsh/Ramsh.h" #include "internal/Ramsh/RamshTools.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "internal/PlatformAbstraction/PlatformEnvironmentVariables.h" #include "internal/Core/Utils/LogMacros.h" #include "internal/PlatformAbstraction/ConsoleInput.h" diff --git a/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp b/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp index 8f719d575..d353d978e 100644 --- a/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp +++ b/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp @@ -10,7 +10,7 @@ #include "internal/Ramsh/Ramsh.h" #include "internal/Ramsh/RamshTools.h" #include "internal/Core/Utils/LogMacros.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include diff --git a/tests/benchmarks/logic/serialization.cpp b/tests/benchmarks/logic/serialization.cpp index 81e940927..d40cb87b2 100644 --- a/tests/benchmarks/logic/serialization.cpp +++ b/tests/benchmarks/logic/serialization.cpp @@ -9,7 +9,7 @@ #include "benchmarksetup.h" #include "ramses/client/logic/LuaScript.h" #include "ramses/client/logic/Property.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "fmt/format.h" #include diff --git a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp index 936bc4780..bd5359f33 100644 --- a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp +++ b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp @@ -9,7 +9,7 @@ #include "TestForkingController.h" #include "TestForkerApplication.h" #include "EmbeddedCompositingTestMessages.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include diff --git a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp index 3cab1a3a6..97aadca7e 100644 --- a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp +++ b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp @@ -9,7 +9,7 @@ #include "RendererTestUtils.h" #include "internal/Core/Utils/StringUtils.h" #include "EmbeddedCompositingTests.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "EmbeddedCompositingTestFramework/TestForkingController.h" #include "ramses/framework/RamsesFrameworkConfig.h" #include diff --git a/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h b/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h index ee5833daf..253358a95 100644 --- a/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h +++ b/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h @@ -8,7 +8,7 @@ #pragma once -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" namespace ramses::internal { diff --git a/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h b/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h index 2eae75cd5..49f988704 100644 --- a/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h +++ b/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h @@ -9,7 +9,7 @@ #pragma once #include "internal/Core/Utils/LogContext.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" namespace ramses::internal { diff --git a/tests/unittests/framework/Ramsh/RamshTest.cpp b/tests/unittests/framework/Ramsh/RamshTest.cpp index 2ad065607..8335f7523 100644 --- a/tests/unittests/framework/Ramsh/RamshTest.cpp +++ b/tests/unittests/framework/Ramsh/RamshTest.cpp @@ -15,7 +15,7 @@ #include #include "internal/Ramsh/RamshTools.h" #include "internal/PlatformAbstraction/PlatformThread.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" namespace ramses::internal { diff --git a/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp b/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp index 8d813298c..998bfe8a4 100644 --- a/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp +++ b/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp @@ -11,7 +11,7 @@ #include "impl/ErrorReporting.h" #include "impl/RamsesObjectImpl.h" #include "ramses/framework/RamsesObject.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "internal/Core/Utils/LogMacros.h" #include "internal/Core/Utils/ThreadBarrier.h" #include "LogTestUtils.h" diff --git a/tools/ramses-daemon/main.cpp b/tools/ramses-daemon/main.cpp index d7bc1a920..7415c3682 100644 --- a/tools/ramses-daemon/main.cpp +++ b/tools/ramses-daemon/main.cpp @@ -13,7 +13,7 @@ #include "impl/RamsesFrameworkConfigImpl.h" #include "internal/Ramsh/RamshStandardSetup.h" #include "internal/Ramsh/RamshCommandExit.h" -#include "internal/Core/Utils/RamsesLogger.h" +#include "impl/RamsesLoggerImpl.h" #include "internal/Core/Utils/StatisticCollection.h" #include "internal/Core/Utils/LogMacros.h" #include diff --git a/tools/ramses-viewer/ViewerGui.cpp b/tools/ramses-viewer/ViewerGui.cpp index 36aeb861a..15418137b 100644 --- a/tools/ramses-viewer/ViewerGui.cpp +++ b/tools/ramses-viewer/ViewerGui.cpp @@ -148,7 +148,7 @@ namespace ramses::internal { ImGui::MenuItem("Show Scene Window", "F11", &m_settings.showWindow); if (m_app.getLogicViewer()) - ImGui::MenuItem("Show Logic Window", "F10", &m_settings.showLogicWindow); + ImGui::MenuItem(m_settings.showWindow ? "Undock Logic Window" : "Show Logic Window", "F10", &m_settings.showLogicWindow); if (m_app.getGuiMode() == ViewerGuiApp::GuiMode::On) { ImGui::MenuItem("Show Scene in Window", nullptr, &m_settings.showSceneInWindow);