Skip to content
Snippets Groups Projects
  1. Jul 14, 2017
  2. Jul 13, 2017
  3. Jul 12, 2017
    • Vassil Vassilev's avatar
    • Enrico Guiraud's avatar
      [TDF] Fix memory leak in non-jitted actions · 923774f9
      Enrico Guiraud authored
      The shared_ptr-on-the-heap trick is only needed for jitted actions,
      but we were using it for all of them -- forgetting to delete the
      shared_ptr in the non-jitted case.
      
      Now only the code path with jitting makes use of the heap-allocated
      shared_ptr, removing the leak.
      923774f9
    • Raphael Isemann's avatar
      Add ROOTCLING_ targets that allow more parallel rootcling invocations. · a9d16ccc
      Raphael Isemann authored
      So far GENERATE_DICTIONARY depends on all the targets passed to its
      DEPENDENCIES argument. However, this means for some targets not
      only the generation of PCMs, rootmaps etc, but also the linking of
      this target (as for example the target `Hist` generates Hist.pcm
      and then also links libHist.so). We only care about the files
      generated by rootcling when we specify the dependencies here,
      so we can improve build performance here.
      
      This patch creates a new target for each dictionary generation
      command called ROOTCLING_{MODULE} which can be refernced by other
      rootcling invocations to state that they depend on the
      rootcling files (PCMs, rootmap, root-PCMs) of this module, but
      not on a fully built module. We then start checking for each
      dependency passed to GENERATE_DICTIONARY if there is a
      ROOTCLING_MODULE target and depend on this if possible.
      
      This should cause that all the rootcling invocations can be
      started earlier and the linking of modules and rootcling
      invocations of its dependencies now run in parallel.
      a9d16ccc
    • Raphael Isemann's avatar
      Add BUILTINS arg to ROOT_GENERATE_DICTIONARY · c6bfed1a
      Raphael Isemann authored
      Right now rootcling doesn't know if the headers depend on a
      target that is provided by a BUILTIN. This patch adds a new
      parameter that allows expressing if thie rootcling invocation
      depends on a certain BUILTIN in a way that is identical to the
      ROOT_LINKER_LIBRARY way of handling this.
      c6bfed1a
    • Raphael Isemann's avatar
      Fixed dependencies between rootcling invocations and linking. · 82ecb5f0
      Raphael Isemann authored
      The naming of the library in the two function calls ROOT_GENERATE_DICTIONARY
      and ROOT_LINKER_LIBRARY was often not matching. This causes that
      ROOT_LINKER_LIBRARY couldn't correctly set its dependencies to the output
      file of ROOT_GENERATE_DICTIONARY and therefore causes race conditions in
      the build system.
      
      Note: We're attached all dependencies to a custom target, and
      NOT to the output files generated by rootcling. This should mitigate
      the race conditions we experience when multiple targets in different
      Make jobs request the same output file as a dependency and then
      suffer from this Make problem that is described here:
      https://cmake.org/Bug/view.php?id=10082
      
      This patch also adds a (commented out) piece of code that can print
      warnings if we don't have a fitting G__*.cxx file for a
      ROOT_LINKER_LIBRARY call. This is sometimes intended, so I didn't
      enable this warning by default. We should enable this code
      by default in the future once we have a way to express if we
      intentionally don't provide the G__*.cxx file when calling
      ROOT_LINKER_LIBRARY.
      82ecb5f0
    • Raphael Isemann's avatar
      Use pid in temp. file names to mitigate race conditions. · b74835ec
      Raphael Isemann authored
      In case CMake spawns multiple instances of a rootcling invocation
      (which can happen as CMake doesn't have a good mechanism for ensuring
      that we only spawn one when using the make build system), we now
      choose process-unique file names for the temporaries to prevent the
      build errors when multiple rootcling invocations try to work
      on the same temporary file.
      
      This isn't a real fix, but as renaming files from temporary to the
      real name is usually FS atomic, this will mitigate any future race
      conditions we have in this problematic part of the building process
      on obscure build systems. Those systems possible don't strictly follow the
      order in which they are supposed to build those targets, so this hopefully
      makes the consequences of any race conditions less intrusive  (e.g. Visual
      Studio also seems to suffer from this problem according to the mailing
      list).
      b74835ec
    • Raphael Isemann's avatar
      Add missing dependencies to ROOT_GENERATE_DICTIONARY · 8a646b53
      Raphael Isemann authored
      ROOT_GENERATE_DICTIONARY allows to specify dependencies, but we currently
      don't actually specify those. As we need this for getting the module
      dependencies right (as we can't build missing modules on demand), we should
      add those dependencies here. Then those dependencies propagate to the
      rootcling invocation which will in the future also generate the C++ module
      for the selected dictionary.
      8a646b53
    • Guilherme Amadio's avatar
    • Guilherme Amadio's avatar
    • Guilherme Amadio's avatar
      Add -Wno-nonnull-compare to proof/proofd in classic builds · 233fbdee
      Guilherme Amadio authored
      This is already the case in CMake builds, adding it to make
      behavior between build types more uniform. The option is not
      added for ICC since it does not have such option and will
      generate warnings about ignored flags. Also remove some old
      unused options.
      233fbdee
    • Guilherme Amadio's avatar
      Enable -fno-strict-aliasing for all compilers in classic build · 632a8dfc
      Guilherme Amadio authored
      This is already the case in the CMake build, enabling the same on
      classic makes the behavior more uniform across build types.
      632a8dfc
    • Guilherme Amadio's avatar
      Disable warnings from LLVM in classic builds · 655fbedd
      Guilherme Amadio authored
      This option is already set to OFF in interpreter/llvm/CMakeLists.txt.
      655fbedd
    • Guilherme Amadio's avatar
      Remove unused options from interpreter/llvm/Module.mk · c019516d
      Guilherme Amadio authored
      The options are obsolete since the last LLVM upgrade.
      
      Adding these unused options generates warnings in the classic build:
      http://cdash.cern.ch/viewBuildError.php?type=1&buildid=372656
      c019516d
    • Guilherme Amadio's avatar
      Supress warnings from external package dCache · 1ffa8108
      Guilherme Amadio authored
      Also remove add_definitions(-pthread) from CMakeLists.txt.
      This is not the right function to use to add the flag, and
      it is already taken care of by cmake/modules/CheckCompiler.cmake
      in any case.
      1ffa8108
    • Guilherme Amadio's avatar
      Avoid compiler warning in rootcling and rootcling_stage1 · 0ef4f35d
      Guilherme Amadio authored
      Warning:
      root/core/rootcling_stage1/src/rootcling_stage1.cxx(38):
      	warning #69: integer conversion resulted in truncation
      
         auto dummyVal = (int)(long)&usedToIdentifyRootClingByDlSym;
                          ^^^
      
      The method above uses a cast to long, followed by a cast to int,
      which results in a truncation. That is harmless, since the value
      is never used, but generates a compiler warning with ICC 17. This
      commit avoids the warning by storing the address of the same symbol
      in a static variable instead.
      0ef4f35d
Loading