Skip to content
Snippets Groups Projects
Commit 453336a6 authored by Pere Mato Vila's avatar Pere Mato Vila
Browse files

Fix for ROOT-7710 - Different behaviour between configure/cmake configuration realting to gminimal

parent 96f849c4
No related branches found
No related tags found
No related merge requests found
...@@ -3,14 +3,24 @@ set(root_build_options) ...@@ -3,14 +3,24 @@ set(root_build_options)
#--------------------------------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------------
#---ROOT_BUILD_OPTION( name defvalue [description] ) #---ROOT_BUILD_OPTION( name defvalue [description] )
#--------------------------------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------------
function(ROOT_BUILD_OPTION name defvalue) function(ROOT_BUILD_OPTION opt defvalue)
if(ARGN) if(ARGN)
set(description ${ARGN}) set(description ${ARGN})
else() else()
set(description " ") set(description " ")
endif() endif()
option(${name} "${description}" ${defvalue}) set(${opt}_defvalue ${defvalue} PARENT_SCOPE)
set(root_build_options ${root_build_options} ${name} PARENT_SCOPE ) set(${opt}_description ${description} PARENT_SCOPE)
set(root_build_options ${root_build_options} ${opt} PARENT_SCOPE )
endfunction()
#---------------------------------------------------------------------------------------------------
#---ROOT_APPLY_OPTIONS()
#---------------------------------------------------------------------------------------------------
function(ROOT_APPLY_OPTIONS)
foreach(opt ${root_build_options})
option(${opt} "${${opt}_description}" ${${opt}_defvalue})
endforeach()
endfunction() endfunction()
#--------------------------------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------------
...@@ -44,67 +54,11 @@ function(ROOT_WRITE_OPTIONS file) ...@@ -44,67 +54,11 @@ function(ROOT_WRITE_OPTIONS file)
endforeach() endforeach()
endfunction() endfunction()
#---Define default values depending on platform before the options are defined----------------------
if(WIN32)
set(x11_defvalue OFF)
set(memstat_defvalue OFF)
set(explicitlink_defvalue ON)
set(cocoa_defvalue OFF)
set(davix_defvalue OFF)
elseif(APPLE)
set(x11_defvalue OFF)
set(memstat_defvalue ON)
set(explicitlink_defvalue ON)
set(cocoa_defvalue ON)
set(davix_defvalue OFF)
else()
set(x11_defvalue ON)
set(memstat_defvalue ON)
set(explicitlink_defvalue ON)
set(cocoa_defvalue OFF)
set(davix_defvalue ON)
endif()
if(all)
set(gdml_defvalue ON)
set(http_defvalue ON)
set(qt_defvalue ON)
set(qtgsi_defvalue ON)
set(roofit_defvalue ON)
set(minuit2_defvalue ON)
set(r_defvalue ON)
set(root7_defvalue ON)
set(table_defvalue ON)
set(unuran_defvalue ON)
set(vc_defvalue ON)
else()
set(gdml_defvalue OFF)
set(http_defvalue OFF)
set(qt_defvalue OFF)
set(qtgsi_defvalue OFF)
set(roofit_defvalue OFF)
set(minuit2_defvalue OFF)
set(r_defvalue OFF)
set(root7_defvalue OFF)
set(table_defvalue OFF)
set(unuran_defvalue OFF)
set(vc_defvalue OFF)
endif()
# VC does not support yet Arm and PPC processors.
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR
CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
message(STATUS "A system not supported by Vc, ${CMAKE_SYSTEM_PROCESSOR}, was detected. Disabling Vc by default.")
set(vc_defvalue OFF)
endif()
# Switch OFF fortran for Ninja and Xcode generators #--------------------------------------------------------------------------------------------------
if(WIN32 OR CMAKE_GENERATOR STREQUAL Xcode OR CMAKE_GENERATOR STREQUAL Ninja) #---Full list of options with their descriptios and default values
set(fortran_defvalue OFF) # The default value can be changed as many times as we wish before calling ROOT_APPLY_OPTIONS()
else() #--------------------------------------------------------------------------------------------------
set(fortran_defvalue ON)
endif()
ROOT_BUILD_OPTION(afdsmgrd OFF "Dataset manager for PROOF-based analysis facilities") ROOT_BUILD_OPTION(afdsmgrd OFF "Dataset manager for PROOF-based analysis facilities")
ROOT_BUILD_OPTION(afs OFF "AFS support, requires AFS libs and objects") ROOT_BUILD_OPTION(afs OFF "AFS support, requires AFS libs and objects")
...@@ -135,17 +89,17 @@ ROOT_BUILD_OPTION(castor ON "CASTOR support, requires libshift from CASTOR >= 1. ...@@ -135,17 +89,17 @@ ROOT_BUILD_OPTION(castor ON "CASTOR support, requires libshift from CASTOR >= 1.
ROOT_BUILD_OPTION(ccache OFF "Enable ccache usage for speeding up builds") ROOT_BUILD_OPTION(ccache OFF "Enable ccache usage for speeding up builds")
ROOT_BUILD_OPTION(chirp ON "Chirp support (Condor remote I/O), requires libchirp_client") ROOT_BUILD_OPTION(chirp ON "Chirp support (Condor remote I/O), requires libchirp_client")
ROOT_BUILD_OPTION(cling ON "Enable new CLING C++ interpreter") ROOT_BUILD_OPTION(cling ON "Enable new CLING C++ interpreter")
ROOT_BUILD_OPTION(cocoa ${cocoa_defvalue} "Use native Cocoa/Quartz graphics backend (MacOS X only)") ROOT_BUILD_OPTION(cocoa OFF "Use native Cocoa/Quartz graphics backend (MacOS X only)")
ROOT_BUILD_OPTION(davix ${davix_defvalue} "DavIx library for HTTP/WEBDAV access") ROOT_BUILD_OPTION(davix ON "DavIx library for HTTP/WEBDAV access")
ROOT_BUILD_OPTION(dcache ON "dCache support, requires libdcap from DESY") ROOT_BUILD_OPTION(dcache ON "dCache support, requires libdcap from DESY")
ROOT_BUILD_OPTION(exceptions ON "Turn on compiler exception handling capability") ROOT_BUILD_OPTION(exceptions ON "Turn on compiler exception handling capability")
ROOT_BUILD_OPTION(explicitlink ${explicitlink_defvalue} "Explicitly link with all dependent libraries") ROOT_BUILD_OPTION(explicitlink ON "Explicitly link with all dependent libraries")
ROOT_BUILD_OPTION(fftw3 ON "Fast Fourier Transform support, requires libfftw3") ROOT_BUILD_OPTION(fftw3 ON "Fast Fourier Transform support, requires libfftw3")
ROOT_BUILD_OPTION(fitsio ON "Read images and data from FITS files, requires cfitsio") ROOT_BUILD_OPTION(fitsio ON "Read images and data from FITS files, requires cfitsio")
ROOT_BUILD_OPTION(fortran ${fortran_defvalue} "Enable the Fortran components of ROOT") ROOT_BUILD_OPTION(fortran ${fortran_defvalue} "Enable the Fortran components of ROOT")
set(gcctoolchain "" CACHE PATH "Path for the gcctoolchain in case not the system gcc is used to build clang/LLVM") set(gcctoolchain "" CACHE PATH "Path for the gcctoolchain in case not the system gcc is used to build clang/LLVM")
ROOT_BUILD_OPTION(gviz ON "Graphs visualization support, requires graphviz") ROOT_BUILD_OPTION(gviz ON "Graphs visualization support, requires graphviz")
ROOT_BUILD_OPTION(gdml ${gdml_defvalue} "GDML writer and reader") ROOT_BUILD_OPTION(gdml OFF "GDML writer and reader")
ROOT_BUILD_OPTION(geocad OFF "ROOT-CAD Interface") ROOT_BUILD_OPTION(geocad OFF "ROOT-CAD Interface")
ROOT_BUILD_OPTION(genvector ON "Build the new libGenVector library") ROOT_BUILD_OPTION(genvector ON "Build the new libGenVector library")
ROOT_BUILD_OPTION(gfal ON "GFAL support, requires libgfal") ROOT_BUILD_OPTION(gfal ON "GFAL support, requires libgfal")
...@@ -154,13 +108,13 @@ ROOT_BUILD_OPTION(globus OFF "Globus authentication support, requires Globus too ...@@ -154,13 +108,13 @@ ROOT_BUILD_OPTION(globus OFF "Globus authentication support, requires Globus too
ROOT_BUILD_OPTION(gnuinstall OFF "Perform installation following the GNU guidelines") ROOT_BUILD_OPTION(gnuinstall OFF "Perform installation following the GNU guidelines")
ROOT_BUILD_OPTION(gsl_shared OFF "Enable linking against shared libraries for GSL (default no)") ROOT_BUILD_OPTION(gsl_shared OFF "Enable linking against shared libraries for GSL (default no)")
ROOT_BUILD_OPTION(hdfs ON "HDFS support; requires libhdfs from HDFS >= 0.19.1") ROOT_BUILD_OPTION(hdfs ON "HDFS support; requires libhdfs from HDFS >= 0.19.1")
ROOT_BUILD_OPTION(http ${http_defvalue} "HTTP Server support") ROOT_BUILD_OPTION(http OFF "HTTP Server support")
ROOT_BUILD_OPTION(jemalloc OFF "Using the jemalloc allocator") ROOT_BUILD_OPTION(jemalloc OFF "Using the jemalloc allocator")
ROOT_BUILD_OPTION(krb5 ON "Kerberos5 support, requires Kerberos libs") ROOT_BUILD_OPTION(krb5 ON "Kerberos5 support, requires Kerberos libs")
ROOT_BUILD_OPTION(ldap ON "LDAP support, requires (Open)LDAP libs") ROOT_BUILD_OPTION(ldap ON "LDAP support, requires (Open)LDAP libs")
ROOT_BUILD_OPTION(mathmore ON "Build the new libMathMore extended math library, requires GSL (vers. >= 1.8)") ROOT_BUILD_OPTION(mathmore ON "Build the new libMathMore extended math library, requires GSL (vers. >= 1.8)")
ROOT_BUILD_OPTION(memstat ${memstat_defvalue} "A memory statistics utility, helps to detect memory leaks") ROOT_BUILD_OPTION(memstat ON "A memory statistics utility, helps to detect memory leaks")
ROOT_BUILD_OPTION(minuit2 ${minuit2_defvalue} "Build the new libMinuit2 minimizer library") ROOT_BUILD_OPTION(minuit2 OFF "Build the new libMinuit2 minimizer library")
ROOT_BUILD_OPTION(monalisa ON "Monalisa monitoring support, requires libapmoncpp") ROOT_BUILD_OPTION(monalisa ON "Monalisa monitoring support, requires libapmoncpp")
ROOT_BUILD_OPTION(mt OFF "Multi-threading support") ROOT_BUILD_OPTION(mt OFF "Multi-threading support")
ROOT_BUILD_OPTION(mysql ON "MySQL support, requires libmysqlclient") ROOT_BUILD_OPTION(mysql ON "MySQL support, requires libmysqlclient")
...@@ -173,12 +127,12 @@ ROOT_BUILD_OPTION(pythia6 ON "Pythia6 EG support, requires libPythia6") ...@@ -173,12 +127,12 @@ ROOT_BUILD_OPTION(pythia6 ON "Pythia6 EG support, requires libPythia6")
ROOT_BUILD_OPTION(pythia6_nolink OFF "Delayed linking of Pythia6 library") ROOT_BUILD_OPTION(pythia6_nolink OFF "Delayed linking of Pythia6 library")
ROOT_BUILD_OPTION(pythia8 ON "Pythia8 EG support, requires libPythia8") ROOT_BUILD_OPTION(pythia8 ON "Pythia8 EG support, requires libPythia8")
ROOT_BUILD_OPTION(python ON "Python ROOT bindings, requires python >= 2.2") ROOT_BUILD_OPTION(python ON "Python ROOT bindings, requires python >= 2.2")
ROOT_BUILD_OPTION(qt ${qt_defvalue} "Qt graphics backend, requires libqt >= 4.8") ROOT_BUILD_OPTION(qt OFF "Qt graphics backend, requires libqt >= 4.8")
ROOT_BUILD_OPTION(qtgsi ${qtgsi_defvalue} "GSI's Qt integration, requires libqt >= 4.8") ROOT_BUILD_OPTION(qtgsi OFF "GSI's Qt integration, requires libqt >= 4.8")
ROOT_BUILD_OPTION(roofit ${roofit_defvalue} "Build the libRooFit advanced fitting package") ROOT_BUILD_OPTION(roofit OFF "Build the libRooFit advanced fitting package")
ROOT_BUILD_OPTION(root7 ${root7_defvalue} "Build the ROOT 7 interface prototype, requires cxx14") ROOT_BUILD_OPTION(root7 OFF "Build the ROOT 7 interface prototype, requires cxx14")
ROOT_BUILD_OPTION(ruby OFF "Ruby ROOT bindings, requires ruby >= 1.8") ROOT_BUILD_OPTION(ruby OFF "Ruby ROOT bindings, requires ruby >= 1.8")
ROOT_BUILD_OPTION(r ${r_defvalue} "R ROOT bindings, requires R, Rcpp and RInside") ROOT_BUILD_OPTION(r OFF "R ROOT bindings, requires R, Rcpp and RInside")
ROOT_BUILD_OPTION(rfio ON "RFIO support, requires libshift from CASTOR >= 1.5.2") ROOT_BUILD_OPTION(rfio ON "RFIO support, requires libshift from CASTOR >= 1.5.2")
ROOT_BUILD_OPTION(rpath OFF "Set run-time library load path on executables and shared libraries (at installation area)") ROOT_BUILD_OPTION(rpath OFF "Set run-time library load path on executables and shared libraries (at installation area)")
ROOT_BUILD_OPTION(sapdb ON "MaxDB/SapDB support, requires libsqlod and libsqlrte") ROOT_BUILD_OPTION(sapdb ON "MaxDB/SapDB support, requires libsqlod and libsqlrte")
...@@ -189,17 +143,17 @@ ROOT_BUILD_OPTION(sqlite ON "SQLite support, requires libsqlite3") ...@@ -189,17 +143,17 @@ ROOT_BUILD_OPTION(sqlite ON "SQLite support, requires libsqlite3")
ROOT_BUILD_OPTION(srp ON "SRP support, requires SRP source tree") ROOT_BUILD_OPTION(srp ON "SRP support, requires SRP source tree")
ROOT_BUILD_OPTION(ssl ON "SSL encryption support, requires openssl") ROOT_BUILD_OPTION(ssl ON "SSL encryption support, requires openssl")
ROOT_BUILD_OPTION(tbb OFF "TBB multi-threading support, requires TBB") ROOT_BUILD_OPTION(tbb OFF "TBB multi-threading support, requires TBB")
ROOT_BUILD_OPTION(table ${table_defvalue} "Build libTable contrib library") ROOT_BUILD_OPTION(table OFF "Build libTable contrib library")
ROOT_BUILD_OPTION(tcmalloc OFF "Using the tcmalloc allocator") ROOT_BUILD_OPTION(tcmalloc OFF "Using the tcmalloc allocator")
ROOT_BUILD_OPTION(thread ON "Using thread library (cannot be disabled)") ROOT_BUILD_OPTION(thread ON "Using thread library (cannot be disabled)")
ROOT_BUILD_OPTION(tmva ON "Build TMVA multi variate analysis library") ROOT_BUILD_OPTION(tmva ON "Build TMVA multi variate analysis library")
ROOT_BUILD_OPTION(unuran ${unuran_defvalue} "UNURAN - package for generating non-uniform random numbers") ROOT_BUILD_OPTION(unuran OFF "UNURAN - package for generating non-uniform random numbers")
ROOT_BUILD_OPTION(vc ${vc_defvalue} "Vc adds a few new types for portable and intuitive SIMD programming") ROOT_BUILD_OPTION(vc OFF "Vc adds a few new types for portable and intuitive SIMD programming")
ROOT_BUILD_OPTION(vdt ON "VDT adds a set of fast and vectorisable mathematical functions") ROOT_BUILD_OPTION(vdt ON "VDT adds a set of fast and vectorisable mathematical functions")
ROOT_BUILD_OPTION(winrtdebug OFF "Link against the Windows debug runtime library") ROOT_BUILD_OPTION(winrtdebug OFF "Link against the Windows debug runtime library")
ROOT_BUILD_OPTION(xft ON "Xft support (X11 antialiased fonts)") ROOT_BUILD_OPTION(xft ON "Xft support (X11 antialiased fonts)")
ROOT_BUILD_OPTION(xml ON "XML parser interface") ROOT_BUILD_OPTION(xml ON "XML parser interface")
ROOT_BUILD_OPTION(x11 ${x11_defvalue} "X11 support") ROOT_BUILD_OPTION(x11 ON "X11 support")
ROOT_BUILD_OPTION(xrootd ON "Build xrootd file server and its client (if supported)") ROOT_BUILD_OPTION(xrootd ON "Build xrootd file server and its client (if supported)")
option(fail-on-missing "Fail the configure step if a required external package is missing" OFF) option(fail-on-missing "Fail the configure step if a required external package is missing" OFF)
...@@ -209,17 +163,52 @@ option(all "Enable all optional components" OFF) ...@@ -209,17 +163,52 @@ option(all "Enable all optional components" OFF)
option(testing "Enable testing with CTest" OFF) option(testing "Enable testing with CTest" OFF)
option(roottest "Include roottest, if roottest exists in root or if it is a sibling directory." OFF) option(roottest "Include roottest, if roottest exists in root or if it is a sibling directory." OFF)
#--- Minor chnages in defaults due to platform--------------------------------------------------
if(WIN32)
set(x11_defvalue OFF)
set(memstat_defvalue OFF)
set(davix_defvalue OFF)
elseif(APPLE)
set(x11_defvalue OFF)
set(cocoa_defvalue ON)
set(davix_defvalue OFF)
endif()
#--- The 'all' option swithes ON major options---------------------------------------------------
if(all)
set(gdml_defvalue ON)
set(http_defvalue ON)
set(qt_defvalue ON)
set(qtgsi_defvalue ON)
set(roofit_defvalue ON)
set(minuit2_defvalue ON)
set(r_defvalue ON)
set(root7_defvalue ON)
set(table_defvalue ON)
set(unuran_defvalue ON)
set(vc_defvalue ON)
endif()
#---VC does not support yet Arm and PPC processors----------------------------------------------
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
message(STATUS "A system not supported by Vc, ${CMAKE_SYSTEM_PROCESSOR}, was detected. Disabling Vc by default.")
set(vc_defvalue OFF)
endif()
#---Apply minimal or gminimal------------------------------------------------------------------ #---Apply minimal or gminimal------------------------------------------------------------------
foreach(opt ${root_build_options}) foreach(opt ${root_build_options})
if(NOT opt MATCHES "thread|cxx11|cling|builtin_llvm|builtin_ftgl|explicitlink") if(NOT opt MATCHES "thread|cxx11|cling|builtin_llvm|builtin_ftgl|explicitlink")
if(minimal) if(minimal)
set(${opt} OFF CACHE BOOL "" FORCE) set(${opt}_defvalue OFF)
elseif(gminimal AND NOT opt MATCHES "x11|cocoa") elseif(gminimal AND NOT opt MATCHES "x11|cocoa")
set(${opt} OFF CACHE BOOL "" FORCE) set(${opt}_defvalue OFF)
endif() endif()
endif() endif()
endforeach() endforeach()
#---Define at moment the options with the selected default values-----------------------------
ROOT_APPLY_OPTIONS()
#---Avoid creating dependencies to 'non-standard' header files ------------------------------- #---Avoid creating dependencies to 'non-standard' header files -------------------------------
include_regular_expression("^[^.]+$|[.]h$|[.]icc$|[.]hxx$|[.]hpp$") include_regular_expression("^[^.]+$|[.]h$|[.]icc$|[.]hxx$|[.]hpp$")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment