NGSolve / ngsolve

Netgen/NGSolve is a high performance multiphysics finite element software. It is widely used to analyze models from solid mechanics, fluid dynamics and electromagnetics. Due to its flexible Python interface new physical equations and solution algorithms can be implemented easily.

Home Page:https://ngsolve.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build fails with Apple clang with numerous errors: `expr.hpp: error: redefinition of 'L2Norm2'` etc.

barracuda156 opened this issue · comments

:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/bandmatrix.cpp:1:
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/bla.hpp:76:
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/expr.hpp:1791:15: error: redefinition of 'L2Norm2'
:info:build   inline auto L2Norm2 (const AutoDiff<D,SCAL> & x) 
:info:build               ^
:info:build /opt/local/include/core/autodiff.hpp:1100:15: note: previous definition is here
:info:build   inline auto L2Norm2 (const ngcore::AutoDiff<D,SCAL> & x) 
:info:build               ^
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/bandmatrix.cpp:1:
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/bla.hpp:76:
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/expr.hpp:1797:15: error: redefinition of 'L2Norm2'
:info:build   inline auto L2Norm2 (const AutoDiffDiff<D,SCAL> & x) 
:info:build               ^
:info:build /opt/local/include/core/autodiffdiff.hpp:724:15: note: previous definition is here
:info:build   inline auto L2Norm2 (const ngcore::AutoDiffDiff<D,SCAL> & x) 
:info:build               ^
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/triangular.cpp:1:
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/bla.hpp:76:
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/expr.hpp:1791:15: error: redefinition of 'L2Norm2'
:info:build   inline auto L2Norm2 (const AutoDiff<D,SCAL> & x) 
:info:build               ^
:info:build /opt/local/include/core/autodiff.hpp:1100:15: note: previous definition is here
:info:build   inline auto L2Norm2 (const ngcore::AutoDiff<D,SCAL> & x) 
:info:build               ^
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/triangular.cpp:1:
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/bla.hpp:76:
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/expr.hpp:1797:15: error: redefinition of 'L2Norm2'
:info:build   inline auto L2Norm2 (const AutoDiffDiff<D,SCAL> & x) 
:info:build               ^
:info:build /opt/local/include/core/autodiffdiff.hpp:724:15: note: previous definition is here
:info:build   inline auto L2Norm2 (const ngcore::AutoDiffDiff<D,SCAL> & x) 
:info:build               ^
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/triangular.cpp:1:
:info:build In file included from /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/bla.hpp:78:
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/basiclinalg/matrix.hpp:521:13: error: call to 'max2' is ambiguous
:info:build         w = max2(w, int(row.size()));
:info:build             ^~~~
:info:build /opt/local/include/core/utils.hpp:152:19: note: candidate function [with T = int]
:info:build   NETGEN_INLINE T max2 (T a, T b)
:info:build                   ^
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_ngsolve/ngsolve/work/ngsolve-6.2.2301/include/../ngstd/templates.hpp:22:10: note: candidate function [with T = int]
:info:build INLINE T max2 (T a, T b)
:info:build          ^

While gcc-13 failed here #68 on ambiguous call, clang build fails much earlier.

Complete log:
ngsolve_Sonoma_clang.log

UPD. On the same system LLVM clang-17 builds this with no errors. So somehow the codebase is very compiler-sensitive.