Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CMake] Add support for using Eigen alignment with AppleClang #1219

Merged

Conversation

p12tic
Copy link
Contributor

@p12tic p12tic commented Sep 14, 2022

This fixes build on Apple platforms when AV_EIGEN_MEMORY_ALIGNMENT is enabled.

@@ -211,9 +211,13 @@ if(AV_EIGEN_MEMORY_ALIGNMENT)
AddCompilerFlag("-faligned-new")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
AddCompilerFlag("-faligned-new")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0)
AddCompilerFlag("-faligned-new")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if these flags for eigen memory alignment shouldn't be a property of each target instead rather than added like this.
I'm not sure that if the library is then used as a 3rd party the flag added with AddCompilerFlag will be propagated.
Usually, if we add a flag this way (take -Wall as an example) it only applies for the current build, but if the library, once built, is used to link with another project the flag is not added automatically. It's up to the host project. In the case of warning is not an issue, but for flags that change the behavior of the code, it could.

And sadly we have a lot of template code in AV which could be compiled again by the other project. So potentially the other project is compiling this code with a different set of flags and at the same time using also compiled code of the library with another set of flags. That could turn ugly.
Any thoughts?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree in principle, but I think in this particular case the work needed would outweigh the benefit due to the following reasons:

  • this flag is enabled by the user of aliceVision via AV_EIGEN_MEMORY_ALIGNMENT. Presumably the user knows what it does and will adjust their own project flags accordingly.
  • this flag is only a temporary solution until we can default to C++17.

src/CMakeLists.txt Outdated Show resolved Hide resolved
@fabiencastan fabiencastan added this to the 2.5.0 milestone Sep 16, 2022
@fabiencastan fabiencastan merged commit 9f32aee into alicevision:develop Sep 16, 2022
@p12tic p12tic deleted the eigen-alignment-apple-clang branch September 17, 2022 06:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants