1. 04 Jan, 2021 1 commit
  2. 19 Nov, 2020 1 commit
  3. 09 Nov, 2020 1 commit
    • Vassil Vassilev's avatar
      Enable C++ modules for CLHEP · caa0aa3b
      Vassil Vassilev authored and Lynn Garren's avatar Lynn Garren committed
      The C++ modules feature as described in https://clang.llvm.org/docs/Modules.html
      allow producing a binary header representation to avoid redundant header
      reparsing.
      
      This feature is used in ROOT's dictionary system since ROOT v6.20:
      https://github.com/root-project/root/blob/master/README/README.CXXMODULES.md
      
      CMSSW and other experiment migrate their dictionaries to use the provided by
      ROOT C++ modules support: https://github.com/cms-sw/cmssw/issues/15248
      
      Dictionaries which transiently include clhep can be further optimized by
      building a separate module for CLHEP which this MR aims for.
      
      The current patch introduces a module.modulemap file containing a mapping between
      a binary artifact (a module or a pcm file) and a set of header files. The C++
      modules are more picky on translation unit encapsulation and thus require all
      headers which a translation unit uses to be included. In addition to the
      missing include we outline a few virtual destructors to avoid pollution of .o
      files with weak virtual tables.
      
      This patch enables builds with modules via rootcling/genreflex/rootcint and
      enables compile-time module builds if configured like:
      cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_CXX_FLAGS="-fmodules -Xclang -fmodules-local-submodule-visibility" ../clhep/
      
      The module.modulemap file is easy to maintain as it globs for the well-behaved
      header files and enumerates already the ones needed special treatment.
      
      Once merged we will backport this to cmssw.
      
      Conflicts:
      	Matrix/src/DiagMatrix.cc
      	Matrix/src/GenMatrix.cc
      	Matrix/src/Matrix.cc
      	Matrix/src/SymMatrix.cc
      	Matrix/src/Vector.cc
      caa0aa3b
  4. 14 Mar, 2018 1 commit
  5. 18 Sep, 2017 1 commit
  6. 21 Mar, 2017 1 commit
  7. 30 Nov, 2016 1 commit
  8. 22 Nov, 2016 2 commits
  9. 18 Nov, 2016 1 commit
  10. 01 Jun, 2016 5 commits
  11. 21 Apr, 2016 1 commit
  12. 19 Apr, 2016 3 commits
  13. 18 Apr, 2016 4 commits
  14. 10 Nov, 2015 2 commits
  15. 03 Nov, 2015 1 commit
  16. 02 Nov, 2015 3 commits
  17. 11 Jun, 2015 2 commits
  18. 09 Feb, 2015 2 commits
  19. 19 Aug, 2014 2 commits
  20. 18 Aug, 2014 1 commit
  21. 13 Aug, 2014 1 commit
  22. 14 May, 2014 3 commits