diff --git a/bindings/pyroot/test/CMakeLists.txt b/bindings/pyroot/test/CMakeLists.txt index 585e20dc71239..01ce19d765225 100644 --- a/bindings/pyroot/test/CMakeLists.txt +++ b/bindings/pyroot/test/CMakeLists.txt @@ -4,8 +4,7 @@ ROOT_ADD_PYUNITTEST(pyroot_pretty_printing pretty_printing.py) ROOT_ADD_PYUNITTEST(pyroot_rvec rvec.py) if(NUMPY_FOUND) ROOT_ADD_PYUNITTEST(pyroot_array_interface array_interface.py) - # this excludes RDF for 32 bits builds because of clang/gcc abi issues - if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) + if(dataframe) ROOT_ADD_PYUNITTEST(pyroot_rdataframe_asnumpy rdataframe_asnumpy.py) ROOT_ADD_PYUNITTEST(pyroot_ttree_asmatrix ttree_asmatrix.py) endif() diff --git a/bindings/pyroot_experimental/PyROOT/CMakeLists.txt b/bindings/pyroot_experimental/PyROOT/CMakeLists.txt index bfabdaf4568ec..03fe35d7955cf 100644 --- a/bindings/pyroot_experimental/PyROOT/CMakeLists.txt +++ b/bindings/pyroot_experimental/PyROOT/CMakeLists.txt @@ -2,6 +2,11 @@ # CMakeLists.txt file for building ROOT bindings/pyroot_experimental package ############################################################################ +if(dataframe) + list(APPEND PYROOT_EXTRA_PYSOURCE ROOT/pythonization/_rdataframe.py) + list(APPEND PYROOT_EXTRA_SOURCE src/RDataFramePyz.cxx) +endif() + set(py_sources ROOT/__init__.py ROOT/_application.py @@ -10,7 +15,6 @@ set(py_sources ROOT/pythonization/_drawables.py ROOT/pythonization/_generic.py ROOT/pythonization/_rooabscollection.py - ROOT/pythonization/_rdataframe.py ROOT/pythonization/_rvec.py ROOT/pythonization/_stl_vector.py ROOT/pythonization/_tarray.py @@ -30,6 +34,7 @@ set(py_sources ROOT/pythonization/_ttree.py ROOT/pythonization/_tvector3.py ROOT/pythonization/_tvectort.py + ${PYROOT_EXTRA_PYSOURCE) ) set(sources @@ -39,7 +44,6 @@ set(sources src/PyROOTWrapper.cxx src/RPyROOTApplication.cxx src/GenericPyz.cxx - src/RDataFramePyz.cxx src/RVecPyz.cxx src/TClassPyz.cxx src/TClonesArrayPyz.cxx @@ -49,6 +53,7 @@ set(sources src/TTreePyz.cxx src/PyzCppHelpers.cxx src/PyzPythonHelpers.cxx + ${PYROOT_EXTRA_SOURCE} ) file(COPY python/ROOT DESTINATION ${localruntimedir}) diff --git a/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt b/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt index 7d46f8a6472a5..4059b18769683 100644 --- a/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt +++ b/bindings/pyroot_experimental/PyROOT/test/CMakeLists.txt @@ -75,8 +75,10 @@ ROOT_ADD_PYUNITTEST(pyroot_pyz_tobjstring_comparisonops tobjstring_comparisonops ROOT_ADD_PYUNITTEST(pyroot_pyz_rvec_asrvec rvec_asrvec.py) # RDataFrame and subclasses pythonizations -ROOT_ADD_PYUNITTEST(pyroot_pyz_rdataframe_asnumpy rdataframe_asnumpy.py) -ROOT_ADD_PYUNITTEST(pyroot_pyz_rdataframe_makenumpy rdataframe_makenumpy.py) +if (dataframe) + ROOT_ADD_PYUNITTEST(pyroot_pyz_rdataframe_asnumpy rdataframe_asnumpy.py) + ROOT_ADD_PYUNITTEST(pyroot_pyz_rdataframe_makenumpy rdataframe_makenumpy.py) +endif() # Passing Python callables to ROOT.TF ROOT_ADD_PYUNITTEST(pyroot_pyz_tf_pycallables tf_pycallables.py) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index 24afaf054b3ac..4258e08f01b4e 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -104,6 +104,7 @@ ROOT_BUILD_OPTION(cocoa OFF "Use native Cocoa/Quartz graphics backend (MacOS X o ROOT_BUILD_OPTION(coverage OFF "Enable compile flags for coverage testing") ROOT_BUILD_OPTION(cuda OFF "Enable support for CUDA (requires CUDA toolkit >= 7.5)") ROOT_BUILD_OPTION(cxxmodules OFF "Enable support for C++ modules") +ROOT_BUILD_OPTION(dataframe ON "Enable ROOT RDataFrame") ROOT_BUILD_OPTION(davix ON "Enable support for Davix (HTTP/WebDAV access)") ROOT_BUILD_OPTION(dcache OFF "Enable support for dCache (requires libdcap from DESY)") ROOT_BUILD_OPTION(exceptions ON "Enable compiler exception handling") @@ -196,6 +197,7 @@ if(all) set(cefweb_defvalue ON) set(clad_defvalue ON) set(cuda_defvalue ON) + set(dataframe_defvalue ON) set(davix_defvalue ON) set(dcache_defvalue ON) set(fftw3_defvalue ON) @@ -272,6 +274,7 @@ endif() #---Changes in defaults due to platform------------------------------------------------------- if(WIN32) set(builtin_tbb_defvalue OFF) + set(dataframe_defvalue OFF) set(davix_defvalue OFF) set(imt_defvalue OFF) set(memstat_defvalue OFF) @@ -286,6 +289,11 @@ elseif(APPLE) set(x11_defvalue OFF) endif() +# Disable RDataFrame on 32-bit UNIX platforms due to ROOT-9236 +if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4) + set(dataframe_defvalue OFF) +endif() + #---Options depending of CMake Generator------------------------------------------------------- if( CMAKE_GENERATOR STREQUAL Ninja) set(fortran_defvalue OFF) diff --git a/config/root-config.in b/config/root-config.in index ca300474b3113..f44350f483ea8 100755 --- a/config/root-config.in +++ b/config/root-config.in @@ -76,11 +76,10 @@ rootlibs="-lCore -lImt -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lROOTVecOps -l -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread\ -lMultiProc" -if [ "@UNIX@" != "1" ] || [ "@CMAKE_SIZEOF_VOID_P@" != "4" ]; then +if [ "@dataframe@" == "ON" ]; then rootlibs="$rootlibs -lROOTDataFrame" fi - if test "$platform" = "win32"; then rootulibs="-include:_G__cpp_setupG__Net \ -include:_G__cpp_setupG__IO \ diff --git a/tmva/tmva/CMakeLists.txt b/tmva/tmva/CMakeLists.txt index 681c1f796c742..3001105b1fdbe 100644 --- a/tmva/tmva/CMakeLists.txt +++ b/tmva/tmva/CMakeLists.txt @@ -13,6 +13,18 @@ else() set(installoptions ${installoptions} FILTER "Cuda") endif() +# Enable parts dependent RDataFrame +if(dataframe) + set(TMVA_EXTRA_HEADERS + TMVA/RTensor.hxx + TMVA/RTensorUtils.hxx + ) + set(TMVA_EXTRA_DEPENDENCIES + ROOTDataFrame + ROOTVecOps + ) +endif() + ROOT_STANDARD_LIBRARY_PACKAGE(TMVA HEADERS TMVA/BDTEventWrapper.h @@ -178,8 +190,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(TMVA TMVA/VarTransformHandler.h TMVA/Version.h TMVA/Volume.h - TMVA/RTensor.hxx - TMVA/RTensorUtils.hxx + ${TMVA_EXTRA_HEADERS} SOURCES src/BDTEventWrapper.cxx src/BinarySearchTree.cxx @@ -351,14 +362,9 @@ ROOT_STANDARD_LIBRARY_PACKAGE(TMVA #src/DNN/Architectures/Reference/Propagation.cxx #src/DNN/Architectures/Reference/RecurrentPropagation.cxx #src/DNN/Architectures/Reference/Regularization.cxx - DICTIONARY_OPTIONS - -writeEmptyRootPCM - ${dictoptions} DEPENDENCIES TreePlayer Tree - ROOTDataFrame - ROOTVecOps Hist Matrix Minuit @@ -368,6 +374,10 @@ ROOT_STANDARD_LIBRARY_PACKAGE(TMVA Imt RIO XMLIO + ${TMVA_EXTRA_DEPENDENCIES} + DICTIONARY_OPTIONS + -writeEmptyRootPCM + ${dictoptions} INSTALL_OPTIONS ${installoptions} ) diff --git a/tmva/tmva/test/CMakeLists.txt b/tmva/tmva/test/CMakeLists.txt index 2eb7029fe7a92..4310d142f32ef 100644 --- a/tmva/tmva/test/CMakeLists.txt +++ b/tmva/tmva/test/CMakeLists.txt @@ -10,8 +10,11 @@ include_directories(${ROOT_INCLUDE_DIRS}) ROOT_ADD_GTEST(TestRandomGenerator TestRandomGenerator.cxx LIBRARIES ${Libraries}) -ROOT_ADD_GTEST(rtensor rtensor.cxx LIBRARIES ROOTVecOps TMVA) -ROOT_ADD_GTEST(rtensor-utils rtensor_utils.cxx LIBRARIES ROOTVecOps TMVA ROOTDataFrame) + +if(dataframe) + ROOT_ADD_GTEST(rtensor rtensor.cxx LIBRARIES ROOTVecOps TMVA) + ROOT_ADD_GTEST(rtensor-utils rtensor_utils.cxx LIBRARIES ROOTVecOps TMVA ROOTDataFrame) +endif() project(tmva-tests) find_package(ROOT REQUIRED) diff --git a/tree/dataframe/CMakeLists.txt b/tree/dataframe/CMakeLists.txt index 0576aeb8cc827..b310b4ceca645 100644 --- a/tree/dataframe/CMakeLists.txt +++ b/tree/dataframe/CMakeLists.txt @@ -3,9 +3,8 @@ # @author Danilo Piparo CERN, Pere Mato CERN ############################################################################ -# Disable RDataFrame on 32-bit UNIX platforms due to ROOT-9236 -if(UNIX AND CMAKE_SIZEOF_VOID_P EQUAL 4) - return() +if(NOT dataframe) + return() endif() if(arrow) diff --git a/tree/ntuple/v7/test/CMakeLists.txt b/tree/ntuple/v7/test/CMakeLists.txt index 7ab4116628ce7..10330e18041d7 100644 --- a/tree/ntuple/v7/test/CMakeLists.txt +++ b/tree/ntuple/v7/test/CMakeLists.txt @@ -1,6 +1,6 @@ # @author Jakob Blomer CERN -if(NOT ROOT_ROOTDataFrame_LIBRARY) +if(NOT dataframe) return() endif() diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt index 4d0b6d01222bd..bbb279ae943d0 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -66,6 +66,15 @@ if(NOT ROOT_minuit2_FOUND) tutorials/roostats/rs_bernsteinCorrection.C) endif() +if (NOT dataframe) + # RDataFrame + list(APPEND dataframe_veto dataframe/*.C) + # RDataFrame tutorial in graphs + list(APPEND dataframe_veto graphs/timeSeriesFromCSV_TDF.C) + # TMVA tutorials dependent on RDataFrame + list(APPEND dataframe_veto tmva/tmva*.C) +endif() + if(NOT ROOT_mlp_FOUND) set(mlp_veto legacy/mlp/*.C) endif() @@ -185,10 +194,10 @@ set(gui_veto fit/fitpanel_playback.C eve/*.C) if (NOT ROOT_tmva_FOUND) - set(tmva_veto tmva/*.C tmva/*.py tmva/envelope/*.C tmva/keras/*.C tmva/keras/*.py) + list(APPEND tmva_veto tmva/*.C tmva/*.py tmva/envelope/*.C tmva/keras/*.C tmva/keras/*.py) else() #---These do not need to run for TMVA - set(tmva_veto tmva/createData.C) + list(APPEND tmva_veto tmva/createData.C) endif() if (NOT ROOT_pythia6_FOUND) @@ -280,6 +289,7 @@ set(all_veto hsimple.C ${xrootd_veto} ${mlp_veto} ${spectrum_veto} + ${dataframe_veto} ) file(GLOB_RECURSE tutorials RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.C) @@ -436,10 +446,10 @@ if(ROOT_python_FOUND) list(REMOVE_ITEM pytutorials ${pyveto}) - if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) - set(bits32_veto_py dataframe/*.py) - file(GLOB bits32_veto_py RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} dataframe/*.py) - list(REMOVE_ITEM pytutorials ${bits32_veto_py}) + if(NOT dataframe) + set(dataframe_veto_py dataframe/*.py) + file(GLOB dataframe_veto_py RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} dataframe/*.py tmva/tmva*.py) + list(REMOVE_ITEM pytutorials ${dataframe_veto_py}) list(REMOVE_ITEM pytutorials pyroot/pyroot002_TTreeAsMatrix.py) endif()