Allow for LTO control in Dockerfile.redhat #3110
Open
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.
This patch updates Dockerfile.redhat to push LTO into dependencies and the main build. It does this by adding 3 ARGS that can be controlled by passing environmental varibles to the build: LTO_ENABLE, LTO_CXX_FLAGS and LTO_LD_FLAGS. LTO_LD_FLAGS defaults to "-Wl,-z,relro" which is a noop since it's hardcoded in the RHEL linker.
The Boost build is also updated to pass LTO and additional flags to the build. It also adds 'variant' to the build so it's optimized.
In the area where OpenVino is being built, we also add LTO_CXX_FLAGS and LTO_LD_FLAGS to the cmake because using LTO_CXX_FLAGS also can contain additional directives such as -march but also because CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE doesn't reach all places. (Maybe the build type info is not being used.) It's for this same reason that we pass these to the tokenizer build.
We also pass the LTO option to opencv.