Skip to content
Snippets Groups Projects
  1. Apr 01, 2021
    • Bertrand Bellenot's avatar
      First step to port ROOT on Windows 64 bit (#7759) · c8270198
      Bertrand Bellenot authored
      * First step to port ROOT on Windows 64 bit
      
       - Introduce the Win64 option and flags in the CMake build system
       - Introduce the new `Longptr_t` and `ULongptr_t` types to hold a pointer (4 bytes on Win32 and 8 bytes on Win64), aimed to replace the `Long_t` and `ULong_t` used to cast pointers, and being both 4 bytes on Windows. Their values will not change on other platforms (`Long_t` and `ULong_t`) for backward compatibility
       - Add the 64 bit export symbols in `core/metacling/src/CMakeLists.txt`
       - Add the 64 bit version of lzma (xz-5.2.4-win64.tar.gz)
      
      * Add forgotten semicolons
      c8270198
  2. Feb 25, 2021
  3. Oct 02, 2020
  4. Sep 29, 2020
  5. Aug 05, 2020
  6. Jul 08, 2020
  7. Jun 23, 2020
    • Mattias Ellert's avatar
      Fix too aggressive -Werror replacements · 7405aa45
      Mattias Ellert authored
      The replacements removes the -Werror option for externals, which is
      intended. However, it also replaces e.g. -Werror=format-security with
      =format-security, which results in compilation failures due to the
      unknown option =format-security.
      7405aa45
  8. Apr 20, 2020
    • Bertrand Bellenot's avatar
      Change compiler flags for Visual Studio 2019 v16.4.0 & v16.5.0 (#5343) · cd5a3d61
      Bertrand Bellenot authored
      * Change compiler flags for Visual Studio v16.4.0 & v16.5.0
      
       - core/base: Since Visual Studio v16.5.0 the /O2 optimization flag makes most of the roofit/roostats tests failing
       - hist/histv7/test: Using /O2 compiler flag prevent the followin error when building in debug mode:
         axis.obj : fatal error LNK1179: invalid or corrupt file: duplicate COMDAT '??$?8DU?$char_traits@D@std@@@__ROOT@experimental@std@@YA_NV?$basic_string_view@DU?$char_traits@D@std@@@012@0@Z'
      cd5a3d61
  9. Apr 16, 2020
    • Axel Naumann's avatar
      [cmake] Introduce `-Ddev=On` with preferred developer settings: · 0f0121d8
      Axel Naumann authored
      Reduce build times:
        - use lld or gold or good-old-ld, in that order of preference;
        - split debug info to accelerate rebuilding and relinking;
        - do not rebuild shared libraries just because a shared lib they depend on has changed;
        - generate the gdb-index to accelerate root startup in gdb.
      Turn on -Werror to not overlook warnings.
      0f0121d8
  10. Mar 23, 2020
  11. Feb 07, 2020
    • Bertrand Bellenot's avatar
      Replace /O2 with /O1 compiler flag on Windows · c0a23b2e
      Bertrand Bellenot authored
      After the update to Visual Studio v16.4.0, the /O2 optimization flag in the interpreter make many (25%) of the tests failing.
      Try to re-enable /O2 after the upgrade of llvm & clang, or after updating Visual Studio (v16.5.0 beta 2 still doesn't work)
      c0a23b2e
  12. Dec 17, 2019
    • Axel Naumann's avatar
      [cmake,cling] Hide C and C++ symbols alike: · 08e767cb
      Axel Naumann authored
      We had symbols exposed, which in turn meant symbols were resolved by the dynamic loader,
      which in turn meant another libllvm.so could interfere with those of cling. By hiding these
      symbols, all symbols are self-contained and not external symbols leak into libCling.
      cling needs to resolve its own symbols, so unhide those.
      08e767cb
  13. Nov 07, 2019
  14. Sep 17, 2019
  15. Sep 06, 2019
  16. Jul 23, 2019
    • Vassil Vassilev's avatar
      [cmake] Clarify info message. · 5229e48f
      Vassil Vassilev authored
      We print a message when we configure ROOT in Debug mode that LLVM is still
      in release. This is only relevant when -Dbuiltin_(llvm/clang)=On.
      
      Reword the message and add another message displaying the build mode of external
      llvm if builtin llvm is off.
      5229e48f
  17. Mar 25, 2019
  18. Feb 09, 2019
  19. Feb 05, 2019
  20. Dec 20, 2018
  21. Nov 01, 2018
    • Vassil Vassilev's avatar
      [modules] Enable builds on OSX with modules. · ed430c32
      Vassil Vassilev authored
      XCode 10 comes with -fmodules-local-submodule-visibility aware toolchain.
      
      This patch adjusts a few flags to enable a cxxmodules=On builds for this
      platform. This patch will pave our way for enabling runtime_cxxmodules on OSX.
      ed430c32
  22. Sep 22, 2018
  23. Aug 03, 2018
    • Vassil Vassilev's avatar
      Enable the automatic differentiation library clad in ROOT. · 3590e277
      Vassil Vassilev authored
      clad is a C++ plugin for clang and cling that implements automatic
      differentiation of user-defined functions by employing the chain rule in
      forward and reverse mode, coupled with source code transformation and AST
      constant fold.
      
      In mathematics and computer algebra, automatic differentiation (AD) is a
      set of techniques to numerically evaluate the derivative of a function
      specified by a computer program. AD exploits the fact that every computer
      program, no matter how complicated, executes a sequence of elementary
      arithmetic operations (addition, subtraction, multiplication, division, etc.)
      and elementary functions (exp, log, sin, cos, etc.). By applying the chain
      rule repeatedly to these operations, derivatives of arbitrary order can
      be computed automatically, accurately to working precision, and using at
      most a small constant factor more arithmetic operations than the original
      program.
      
      AD is an alternative technique to symbolic and numerical differentiation.
      These classical methods run into problems: symbolic differentiation leads
      to inefficient code (unless done carefully) and faces the difficulty of
      converting a computer program into a single expression, while numerical
      differentiation can introduce round-off errors in the discretization
      process and cancellation. Both classical methods have problems with
      calculating higher derivatives, where the complexity and errors increase.
      Finally, both classical methods are slow at computing the partial
      derivatives of a function with respect to many inputs, as is needed for
      gradient-based optimization algorithms. Automatic differentiation solves
      all of these problems, at the expense of introducing more software
      dependencies.
      
      This patch allows ROOT to interoperate with clad. Namely, users can ask
      the interpreter to produce a derivative or a gradient to a known function.
      
      An illustrative example code for first order derivative:
      
      root [0] #include "Math/CladDerivator.h"
      root [1] double my_pow2(double x) { return x*x; }
      root [2] auto meta_obj = clad::differentiate(my_pow2, /*wrt 1-st argument*/0);
      root [3] meta_obj.dump();
      The code is: double my_pow2_darg0(double x) {
          return (1. * x + x * 1.);
      }
      root [5] meta_obj.execute(1) // no iterations, at the cost of function call.
      (double) 2.0000000
      
      Learn more about clad at https://github.com/vgvassilev/clad
      
      Patch by Aleksandr Efremov and me!
      3590e277
  24. May 02, 2018
  25. Mar 28, 2018
    • Vassil Vassilev's avatar
      Enable ROOT to be built with prebuilt clang and llvm. · 4dd1729c
      Vassil Vassilev authored
      To do so one needs to pass -Dbuiltin_llvm=Off -Dbuiltin_clang=Off and the
      PATH should contain the path to llvm-config.
      
      Note this is not enabling ROOT to work with vanilla clang!
      
      This patch allows ROOT to be built against a prebuilt clang and llvm from
      https://root.cern.ch/git/{llvm.git,clang.git}. It allows to reduce ROOT's
      build times (in cases when cmake decides to rebuild the in-tree llvm for
      no good reason). It moves the common denominator of different ROOT builds
      in one place to save space. It also allows easy switch between LLVM in
      debug and release mode.
      
      To build the external clang and llvm exactly in the same way as the
      in-tree builds use:
      
      CMAKE_FLAGS="\
                  -DLLVM_ENABLE_WARNINGS=OFF                   \
                  -DLLVM_INCLUDE_TESTS=OFF                     \
                  -DCLANG_INCLUDE_TESTS=OFF                    \
                  -DLLVM_INCLUDE_EXAMPLES=OFF                  \
                  -DCLANG_BUILD_TOOLS=OFF                      \
                  -DCLANG_TOOL_ARCMT_TEST_BUILD=OFF            \
                  -DCLANG_TOOL_CLANG_CHECK_BUILD=OFF           \
                  -DCLANG_TOOL_CLANG_FORMAT_BUILD=OFF          \
                  -DCLANG_TOOL_CLANG_FORMAT_VS_BUILD=OFF       \
                  -DCLANG_TOOL_CLANG_FUZZER_BUILD=OFF          \
                  -DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF     \
                  -DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
                  -DCLANG_TOOL_CLANG_RENAME_BUILD=OFF          \
                  -DCLANG_TOOL_C_ARCMT_TEST_BUILD=OFF          \
                  -DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF          \
                  -DCLANG_TOOL_DIAGTOOL_BUILD=OFF              \
                  -DCLANG_TOOL_LIBCLANG_BUILD=OFF              \
                  -DCLANG_TOOL_SCAN_BUILD_BUILD=OFF            \
                  -DCLANG_TOOL_SCAN_VIEW_BUILD=OFF             \
                  -DLLVM_BUILD_TOOLS=OFF                       \
                  -DLLVM_TOOL_LLVM_AR_BUILD=OFF                \
                  -DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF \
                  -DLLVM_FORCE_USE_OLD_TOOLCHAIN=ON            \
                  -DCLANG_ENABLE_STATIC_ANALYZER=OFF           \
                  -DCLANG_ENABLE_ARCMT=OFF                     \
                  -DCLANG_ENABLE_FORMAT=OFF                    \
                  -DLLVM_TARGETS_TO_BUILD=host                 \
                  -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF         \
                  -DLLVM_ENABLE_ABI_BREAKING_CHECKS=OFF        \
                  -DCMAKE_INSTALL_PREFIX=..                    \
                  -DCMAKE_BUILD_TYPE=Debug"
      
      cmake "$CMAKE_FLAGS"   ../../../sources/root-llvm/
      4dd1729c
  26. Mar 20, 2018
    • Guilherme Amadio's avatar
      Set CLING_BUILD_PLUGINS to OFF by default · c13d5de6
      Guilherme Amadio authored
      This option uses ExternalProject_Add() to clone and build the clad
      plugin. However, things that assume a network connection have to be
      disabled by default in order not to break builds on machines without
      a network connection or inside a sandbox environment.
      c13d5de6
  27. Feb 21, 2018
  28. Feb 20, 2018
    • Vassil Vassilev's avatar
      Disable explicitly the clang tools. · e9051975
      Vassil Vassilev authored
      e9051975
    • Vassil Vassilev's avatar
      Enable ROOT's builtin_llvm=Off · 3361e913
      Vassil Vassilev authored
      This patch allows ROOT to be built against compatible external llvm (5.0
      or 5.0.1). Note that we still need to build clang (eg. we require
      builtin_clang=On) due to the ROOT-specific patches which are not yet
      upstream.
      
      Since we have externally installed llvm, we configure and build clang as
      a standalone project. The configuration relies on finding llvm-config-5.0
      and uses an adapted version of the standard clang standalone build
      procedure.
      
      Clang provides dependencies such as FileCheck and not which are used by
      cling's testsuite and are not being installed with the standard llvm
      package.
      
      Cling (which depends on llvm and clang) is built as a clang tool to avoid
      unresolved dependencies to clang and complicating further the already
      complicated cmake setup.
      
      This patch intends a minimal change and follows the initial (suboptimal)
      design to configure and build llvm, clang and cling as part of ROOT. An
      ultimate solution would be to have llvm, clang and cling built as separate
      standalone projects (following the recommended way by the LLVM cmake
      developers).
      3361e913
    • Vassil Vassilev's avatar
      Split builtin_llvm into two options. · d610068c
      Vassil Vassilev authored
      d610068c
Loading