Conversation
The script always configures CMake with BUILD_EXAMPLE_PLUGINS, but since #253 put OpenGL, CImg and spdlog behind the conanfile's build_examples option, it never asked for them. A clean run failed in find_package (opengl_system); a build directory left over from before #253 hid it. CI was unaffected, since it passes the option itself. Assisted-by: Claude Code / Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
`if(!MSVC)` tests a variable literally named "!MSVC", which is never set, so -Wall -Wextra never applied on any compiler. `if(NOT MSVC)` is what was meant. Assisted-by: Claude Code / Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
add_ofx_plugin compiles a plugin's own sources with hidden visibility, but the OfxSupport static library linked into the Support plugins was compiled with the default, so every plugin built on it exported the whole library: 735 symbols from each Support plugin bundle on macOS, and over a thousand on Linux, where the host could interpose them. OfxSupport is now compiled with -fvisibility=hidden and -fvisibility-inlines-hidden. Its OfxGetPlugin and OfxGetNumberOfPlugins definitions drop their own EXPORT macro and inherit OfxExport from the declarations in ofxCore.h, as the examples' definitions do. Each Support plugin bundle, and PropTester, now exports only OfxGetPlugin and OfxGetNumberOfPlugins (nm -gU, both architectures), and all of them still load and render in the test host. Assisted-by: Claude Code / Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
…plugin add_ofx_plugin compiles a plugin with hidden visibility, but that does not reach the inline member functions of classes that carry default visibility themselves, such as the standard library's, which GCC then exports as weak symbols. VISIBILITY_INLINES_HIDDEN hides those too. It applies to the examples as well as the Support plugins, and to plugins built with the installed CMake module. On macOS every bundle already exported only its entry points and still does. On Linux with GCC 14 it takes the Support plugins, built on the now-hidden Support library, from 12-14 exported symbols to 9-11, and the Test example from 7 to 6; Clang 19 with libstdc++ is unchanged. What remains there is the entry points, the linker's own __bss_start, _edata and _end, and standard library template instantiations that libstdc++ gives default visibility, which no compiler flag hides. Assisted-by: Claude Code / Claude Opus 5.5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Gary Oberbrunner <garyo@darkstarsystems.com>
garyo
marked this pull request as ready for review
September 24, 2026 16:10
garyo
requested review from
Guido-assim,
barretpj,
fxtech,
john-paulsmith and
revisionfx
September 24, 2026 16:24
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
scripts/build-cmake.shalways configures CMake withBUILD_EXAMPLE_PLUGINS, but since Don't impose example-only conan deps (opengl/cimg/spdlog) on consumers #253 put OpenGL, CImg and spdlog behind the conanfile'sbuild_examplesoption, it hasn't asked Conan for them. The script now passes-o build_examples=Trueso the examples build properly.CMakeLists.txtsaidif(!MSVC); needs to beif(NOT MSVC).add_ofx_plugincompiles a plugin's own sources with hidden visibility, but theOfxSupportstatic library linked into the Support plugins was compiled with the default, so each Support plugin exported the whole library.OfxSupportis now properly built with hidden visibility.add_ofx_pluginnow also setsVISIBILITY_INLINES_HIDDEN, which hides the inline members of classes with default visibility.Assisted-by: Claude Code / Claude Opus 5.5