<commit_before># Top level Makefile for ROOT System
# Copyright (c) 2000 <NAME> and <NAME>
#
# Author: <NAME>, 29/2/2000


##### Include path/location macros (result of ./configure) #####
##### However, if we are building packages or cleaning,    #####
##### config/Makefile.config isn't made yet - the package  #####
##### scripts want's to make it them selves - so we don't  #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.config
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.config
endif

MAKE_VERSION_MAJOR := $(word 1,$(subst ., ,$(MAKE_VERSION)))
MAKE_VERSION_MINOR := $(shell echo $(word 2,$(subst ., ,$(MAKE_VERSION))) | \
                              sed 's/\([0-9][0-9]*\).*/\1/')
MAKE_VERSION_MAJOR ?= 0
MAKE_VERSION_MINOR ?= 0
ORDER_ := $(shell test $(MAKE_VERSION_MAJOR) -gt 3 || \
                  test $(MAKE_VERSION_MAJOR) -eq 3 && \
                  test $(MAKE_VERSION_MINOR) -ge 80 && echo '|')

##### Include compiler overrides specified via ./configure #####
##### However, if we are building packages or cleaning, we #####
##### don't include this file since it may screw up things #####
##### Included before Makefile.$ARCH only because of f77   #####
##### if case has to be processed                          #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.comp
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.comp
endif

##### Include machine dependent macros                     #####
##### However, if we are building packages or cleaning, we #####
##### don't include this file since it may screw up things #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.$(ARCH)
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.$(ARCH)
endif

##### Include compiler overrides specified via ./configure #####
##### However, if we are building packages or cleaning, we #####
##### don't include this file since it may screw up things #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.comp
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.comp
endif

##### Include library dependencies for explicit linking #####

MAKEFILEDEP = config/Makefile.depend
include $(MAKEFILEDEP)

##### Allow local macros #####

-include MyConfig.mk

##### Modules to build #####

MODULES       = build cint/cint core/metautils core/pcre core/utils core/base \
                core/cont core/meta io/io math/mathcore net/net core/zip \
                core/clib core/thread math/matrix core/newdelete hist/hist \
                tree/tree graf2d/freetype graf2d/graf graf2d/gpad graf3d/g3d \
                gui/gui math/minuit hist/histpainter tree/treeplayer \
                gui/ged tree/treeviewer math/physics graf2d/postscript \
                core/rint html montecarlo/eg \
                geom/geom geom/geompainter montecarlo/vmc \
                math/fumili math/mlp math/quadp net/auth gui/guibuilder io/xml \
                math/foam math/splot math/smatrix io/sql tmva \
                geom/geombuilder hist/spectrum hist/spectrumpainter \
                gui/fitpanel proof/proof proof/proofplayer \
                gui/sessionviewer gui/guihtml gui/recorder

ifeq ($(ARCH),win32)
MODULES      += core/winnt graf2d/win32gdk
MODULES      := $(filter-out core/newdelete,$(MODULES))
SYSTEML       = $(WINNTL)
SYSTEMO       = $(WINNTO)
SYSTEMDO      = $(WINNTDO)
else
ifeq ($(ARCH),win32gcc)
MODULES      += core/unix graf2d/x11 graf2d/x11ttf graf3d/x3d rootx
SYSTEML       = $(UNIXL)
SYSTEMO       = $(UNIXO)
SYSTEMDO      = $(UNIXDO)
else
MODULES      += core/unix graf2d/x11 graf2d/x11ttf graf3d/x3d rootx
SYSTEML       = $(UNIXL)
SYSTEMO       = $(UNIXO)
SYSTEMDO      = $(UNIXDO)
endif
endif
ifeq ($(BUILDGL),yes)
ifeq ($(BUILDFTGL),yes)
MODULES      += graf3d/ftgl
endif
MODULES      += graf3d/gl graf3d/eve
endif
ifeq ($(BUILDMYSQL),yes)
MODULES      += sql/mysql
endif
ifeq ($(BUILDORACLE),yes)
MODULES      += sql/oracle
endif
ifeq ($(BUILDPGSQL),yes)
MODULES      += sql/pgsql
endif
ifeq ($(BUILDSAPDB),yes)
MODULES      += sql/sapdb
endif
ifeq ($(BUILDODBC),yes)
MODULES      += sql/odbc
endif
ifeq ($(BUILDRFIO),yes)
MODULES      += io/rfio
endif
ifeq ($(BUILDCASTOR),yes)
MODULES      += io/castor
endif
ifeq ($(BUILDDCAP),yes)
MODULES      += io/dcache
endif
ifeq ($(BUILDGFAL),yes)
MODULES      += io/gfal
endif
ifeq ($(BUILDG4ROOT),yes)
MODULES      += montecarlo/g4root
endif
ifeq ($(BUILDGLITE),yes)
MODULES      += net/glite
endif
ifeq ($(BUILDCHIRP),yes)
MODULES      += io/chirp
endif
ifeq ($(BUILDMEMSTAT),yes)
MODULES      += misc/memstat
endif
ifeq ($(BUILDASIMAGE),yes)
MODULES      += graf2d/asimage
endif
ifeq ($(BUILDFPYTHIA6),yes)
MODULES      += montecarlo/pythia6
endif
ifeq ($(BUILDFPYTHIA8),yes)
MODULES      += montecarlo/pythia8
endif
ifeq ($(BUILDFFTW3),yes)
MODULES      += math/fftw
endif
ifeq ($(BUILDPYTHON),yes)
MODULES      += bindings/pyroot
endif
ifeq ($(BUILDRUBY),yes)
MODULES      += bindings/ruby
endif
ifeq ($(BUILDXML),yes)
MODULES      += io/xmlparser
endif
ifeq ($(BUILDQT),yes)
MODULES      += graf2d/qt gui/qtroot
endif
ifeq ($(BUILDQTGSI),yes)
MODULES      += gui/qtgsi
endif
ifeq ($(BUILDGENVECTOR),yes)
MODULES      += math/genvector
endif
ifeq ($(BUILDMATHMORE),yes)
MODULES      += math/mathmore
endif
ifeq ($(BUILDREFLEX),yes)
# put reflex right in front of CINT; CINT needs it
MODULES      := $(subst cint/cint,cint/reflex cint/cint,$(MODULES))
endif
ifeq ($(BUILDMINUIT2),yes)
MODULES      += math/minuit2
endif
ifeq ($(BUILDUNURAN),yes)
MODULES      += math/unuran
endif
ifeq ($(BUILDCINT7),yes)
MODULES      := $(subst cint/cint,cint/cint cint/cint7,$(MODULES))
endif
ifeq ($(BUILDCINTEX),yes)
MODULES      += cint/cintex
endif
ifeq ($(BUILDROOFIT),yes)
MODULES      += roofit/roofitcore roofit/roofit roofit/roostats
endif
ifeq ($(BUILDGDML),yes)
MODULES      += geom/gdml
endif
ifeq ($(BUILDTABLE),yes)
MODULES      += misc/table
endif
ifeq ($(BUILDSRPUTIL),yes)
MODULES      += net/srputils
endif
ifeq ($(BUILDKRB5),yes)
MODULES      += net/krb5auth
endif
ifeq ($(BUILDLDAP),yes)
MODULES      += net/ldap
endif
ifeq ($(BUILDMONALISA),yes)
MODULES      += net/monalisa
endif
ifeq ($(BUILDGLOBUS),yes)
MODULES      += net/globusauth
endif
ifneq ($(F77),)
MODULES      += misc/minicern hist/hbook
endif
ifeq ($(BUILDXRD),yes)
ifneq ($(XROOTDDIR),)
MODULES      += net/netx
else
MODULES      += net/xrootd net/netx
endif
endif
ifeq ($(BUILDALIEN),yes)
MODULES      += net/alien
endif
ifeq ($(BUILDCLARENS),yes)
MODULES      += proof/clarens
endif
ifeq ($(BUILDPEAC),yes)
MODULES      += proof/peac
endif
ifneq ($(ARCH),win32)
MODULES      += net/rpdutils net/rootd proof/proofd
endif
ifeq ($(BUILDXRD),yes)
ifeq ($(ARCH),win32)
MODULES      += proof/proofd
endif
MODULES      += proof/proofx
endif

-include MyModules.mk   # allow local modules

ifneq ($(findstring $(MAKECMDGOALS),distclean maintainer-clean),)
MODULES      += core/unix core/winnt graf2d/x11 graf2d/x11ttf \
                graf3d/gl graf3d/ftgl io/rfio io/castor \
                montecarlo/pythia6 montecarlo/pythia8 misc/table \
                sql/mysql sql/pgsql sql/sapdb net/srputils graf3d/x3d \
                rootx net/rootd io/dcache io/chirp hist/hbook graf2d/asimage \
                net/ldap net/krb5auth net/rpdutils net/globusauth \
                bindings/pyroot bindings/ruby io/gfal misc/minicern \
                graf2d/qt gui/qtroot gui/qtgsi net/xrootd net/netx net/alien \
                proof/proofd proof/proofx proof/clarens proof/peac \
                sql/oracle io/xmlparser math/mathmore cint/reflex cint/cintex \
                cint/cint7 roofit/roofitcore roofit/roofit roofit/roostats \
                math/minuit2 net/monalisa math/fftw sql/odbc math/unuran \
                geom/gdml graf3d/eve montecarlo/g4root net/glite misc/memstat \
                math/genvector
MODULES      := $(sort $(MODULES))   # removes duplicates
endif

MODULES      += main   # must be last, $(ALLLIBS) must be fully formed

##### ROOT libraries #####

LPATH         = lib

ifneq ($(PLATFORM),win32)
RPATH        := -L$(LPATH)
CINTLIBS     := -lCint
CINT7LIBS    := -lCint7 -lReflex
NEWLIBS      := -lNew
ROOTLIBS     := -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad \
                -lTree -lMatrix -lMathCore -lThread
BOOTLIBS     := -lCore -lCint -lMathCore
ifneq ($(ROOTDICTTYPE),cint)
ROOTLIBS     += -lCintex -lReflex
BOOTLIBS     += -lCintex -lReflex
endif
RINTLIBS     := -lRint
else
CINTLIBS     := $(LPATH)/libCint.lib
CINT7LIBS    := $(LPATH)/libCint7.lib $(LPATH)/libReflex.lib
NEWLIBS      := $(LPATH)/libNew.lib
ROOTLIBS     := $(LPATH)/libCore.lib $(LPATH)/libCint.lib \
                $(LPATH)/libRIO.lib $(LPATH)/libNet.lib \
                $(LPATH)/libHist.lib $(LPATH)/libGraf.lib \
                $(LPATH)/libGraf3d.lib $(LPATH)/libGpad.lib \
                $(LPATH)/libTree.lib $(LPATH)/libMatrix.lib \
                $(LPATH)/libMathcore.lib $(LPATH)/libThread.lib
BOOTLIBS     := $(LPATH)/libCore.lib $(LPATH)/libCint.lib \
                $(LPATH)/libMathcore.lib
ifneq ($(ROOTDICTTYPE),cint)
ROOTLIBS     += $(LPATH)/libCintex.lib $(LPATH)/libReflex.lib
BOOTLIBS     += $(LPATH)/libCintex.lib $(LPATH)/libReflex.lib
endif
RINTLIBS     := $(LPATH)/libRint.lib
endif

# ROOTLIBSDEP is intended to match the content of ROOTLIBS
ROOTLIBSDEP   = $(ORDER_) $(CORELIB) $(CINTLIB) $(IOLIB) $(NETLIB) $(HISTLIB) \
                $(GRAFLIB) $(G3DLIB) $(GPADLIB) $(TREELIB) $(MATRIXLIB) \
                $(MATHCORELIB)
BOOTLIBSDEP   = $(ORDER_) $(CORELIB) $(CINTLIB) $(MATHCORELIB)
ifneq ($(ROOTDICTTYPE),cint)
ROOTLIBSDEP  += $(CINTEXLIB) $(REFLEXLIB)
BOOTLIBSDEP  += $(CINTEXLIB) $(REFLEXLIB)
endif

# Force linking of not referenced libraries
ifeq ($(FORCELINK),yes)
ifeq ($(PLATFORM),aix5)
ROOTULIBS    := -Wl,-u,.G__cpp_setupG__Net      \
                -Wl,-u,.G__cpp_setupG__IO       \
                -Wl,-u,.G__cpp_setupG__Hist     \
                -Wl,-u,.G__cpp_setupG__Graf     \
                -Wl,-u,.G__cpp_setupG__G3D      \
                -Wl,-u,.G__cpp_setupG__GPad     \
                -Wl,-u,.G__cpp_setupG__Tree     \
                -Wl,-u,.G__cpp_setupG__Thread   \
                -Wl,-u,.G__cpp_setupG__Matrix
BOOTULIBS    := -Wl,-u,.G__cpp_setupG__MathCore
else
ROOTULIBS    := -Wl,-u,_G__cpp_setupG__Net      \
                -Wl,-u,_G__cpp_setupG__IO       \
                -Wl,-u,_G__cpp_setupG__Hist     \
                -Wl,-u,_G__cpp_setupG__Graf     \
                -Wl,-u,_G__cpp_setupG__G3D      \
                -Wl,-u,_G__cpp_setupG__GPad     \
                -Wl,-u,_G__cpp_setupG__Tree     \
                -Wl,-u,_G__cpp_setupG__Thread   \
                -Wl,-u,_G__cpp_setupG__Matrix
BOOTULIBS    := -Wl,-u,_G__cpp_setupG__MathCore
endif
endif
ifeq ($(PLATFORM),win32)
ROOTULIBS    := -include:_G__cpp_setupG__Net    \
                -include:_G__cpp_setupG__IO     \
                -include:_G__cpp_setupG__Hist   \
                -include:_G__cpp_setupG__Graf   \
                -include:_G__cpp_setupG__G3D    \
                -include:_G__cpp_setupG__GPad   \
                -include:_G__cpp_setupG__Tree   \
                -include:_G__cpp_setupG__Thread \
                -include:_G__cpp_setupG__Matrix
BOOTULIBS    := -include:_G__cpp_setupG__MathCore
endif

##### Compiler output option #####

CXXOUT ?= -o # keep whitespace after "-o"

##### gcc version #####

ifneq ($(findstring gnu,$(COMPILER)),)
GCC_MAJOR     := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f1)
GCC_MINOR     := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f2)
GCC_PATCH     := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f3)
GCC_VERS      := gcc-$(GCC_MAJOR).$(GCC_MINOR)
GCC_VERS_FULL := gcc-$(GCC_MAJOR).$(GCC_MINOR).$(GCC_PATCH)

##### CINT Stub Functions Generation #####
ifeq ($(NOSTUBS),yes)
ROOTCINTTMP   = export CXXFLAGS="$(CXXFLAGS)"; core/utils/src/rootcint_nostubs_tmp.sh -$(ROOTDICTTYPE)
CXXFLAGS     += -DG__NOSTUBS
CINTCXXFLAGS += -DG__NOSTUBS
ifeq ($(NOSTUBSTEST),yes)
CXXFLAGS     += -DG__NOSTUBSTEST
CINTCXXFLAGS += -DG__NOSTUBSTEST
endif
endif


# Precompiled headers for gcc
ifeq ($(GCC_MAJOR),4)
PCHSUPPORTED  := $(ENABLEPCH)
endif
ifeq ($(PCHSUPPORTED),yes)
PCHFILE        = include/precompile.h.gch
PCHCXXFLAGS    = -DUSEPCH -include precompile.h
PCHEXTRAOBJBUILD = $(CXX) $(CXXFLAGS) -DUSEPCH $(OPT) -x c++-header \
                   -c include/precompile.h $(CXXOUT)$(PCHFILE) \
                   && touch $(PCHEXTRAOBJ)
endif
endif

##### f77 options #####

ifneq ($(F77),)
F77LD        := $(F77)
endif
ifeq ($(F77OPT),)
F77OPT       := $(OPT)
endif
ifeq ($(F77LDFLAGS),)
F77LDFLAGS   := $(LDFLAGS)
endif

ifeq ($(GCC_MAJOR),3)
ifneq ($(GCC_MINOR),0)
ifeq ($(F77),g77)
LIBFRTBEGIN  := $(shell $(F77) -print-file-name=libfrtbegin.a)
F77LIBS      := $(LIBFRTBEGIN) $(F77LIBS)
endif
endif
endif
ifeq ($(GCC_MAJOR),4)
ifeq ($(F77),g77)
LIBFRTBEGIN  := $(shell $(F77) -print-file-name=libfrtbegin.a)
F77LIBS      := $(LIBFRTBEGIN) $(F77LIBS)
endif
endif

##### Store SVN revision number #####

ifeq ($(findstring $(MAKECMDGOALS),clean distclean maintainer-clean dist),)
ifeq ($(findstring clean-,$(MAKECMDGOALS)),)
ifeq ($(shell which svn 2>&1 | sed -ne "s@.*/svn@svn@p"),svn)
SVNREV  := $(shell bash build/unix/svninfo.sh)
endif
endif
endif

##### Utilities #####

MAKEDEP       = $(RMKDEP)
MAKELIB       = build/unix/makelib.sh $(MKLIBOPTIONS)
MAKEDIST      = build/unix/makedist.sh
MAKEDISTSRC   = build/unix/makedistsrc.sh
MAKEVERSION   = build/unix/makeversion.sh
MAKECOMPDATA  = build/unix/compiledata.sh
MAKECINTDLL   = build/unix/makecintdll.sh
MAKECHANGELOG = build/unix/makechangelog.sh
MAKEHTML      = build/unix/makehtml.sh
MAKELOGHTML   = build/unix/makeloghtml.sh
MAKERELNOTES  = build/unix/makereleasenotes.sh
MAKESTATIC    = build/unix/makestatic.sh
RECONFIGURE   = build/unix/reconfigure.sh
ifeq ($(PLATFORM),win32)
MAKELIB       = build/win/makelib.sh
MAKECOMPDATA  = build/win/compiledata.sh
endif

##### Compiler directives and run-control file #####

COMPILEDATA   = include/compiledata.h
ROOTRC        = etc/system.rootrc
ROOTMAP       = etc/system.rootmap

##### Extra libs needed for "static" target #####

STATICEXTRALIBS = $(PCRELDFLAGS) $(PCRELIB) \
                  $(FREETYPELDFLAGS) $(FREETYPELIB)

##### libCore #####

COREL         = $(BASEL1) $(BASEL2) $(BASEL3) $(CONTL) $(METAL) \
                $(SYSTEML) $(CLIBL) $(METAUTILSL)
COREO         = $(BASEO) $(CONTO) $(METAO) $(SYSTEMO) $(ZIPO) $(CLIBO) \
                $(METAUTILSO)
COREDO        = $(BASEDO) $(CONTDO) $(METADO) $(SYSTEMDO) $(CLIBDO) \
                $(METAUTILSDO)

CORELIB      := $(LPATH)/libCore.$(SOEXT)
COREMAP      := $(CORELIB:.$(SOEXT)=.rootmap)
ifneq ($(BUILTINZLIB),yes)
CORELIBEXTRA += $(ZLIBCLILIB)
STATICEXTRALIBS += -lz
endif

##### In case shared libs need to resolve all symbols (e.g.: aix, win32) #####

ifeq ($(EXPLICITLINK),yes)
MAINLIBS     := $(CORELIB) $(CINTLIB)
ifneq ($(ROOTDICTTYPE),cint)
MAINLIBS     += $(CINTEXLIB) $(REFLEXLIB)
endif
else
MAINLIBS      =
endif

##### pre-compiled header support #####

ifeq ($(PCHSUPPORTED),yes)
include config/Makefile.precomp
endif

##### all #####

ALLHDRS      :=
ALLLIBS      := $(CORELIB)
ALLMAPS      := $(COREMAP)
ALLEXECS     :=
INCLUDEFILES :=

##### RULES #####

.SUFFIXES: .cxx .d
.PRECIOUS: include/%.h

# special rules (need to be defined before generic ones)
G__%.o: G__%.cxx
	$(MAKEDEP) -R -f$(patsubst %.o,%.d,$@) -Y -w 1000 -- \
	   $(CXXFLAGS) -D__cplusplus -I$(CINTDIR)/lib/prec_stl \
	   -I$(CINTDIR)/stl -I$(CINTDIR)/inc -- $<
	$(CXX) $(NOOPT) $(CXXFLAGS) -I. -I$(CINTDIR)/inc  $(CXXOUT)$@ -c $<

G__c_%.o: G__c_%.c
	$(MAKEDEP) -R -f$(patsubst %.o,%.d,$@) -Y -w 1000 -- \
	   $(CFLAGS) -I$(CINTDIR)/lib/prec_stl \
	   -I$(CINTDIR)/stl -I$(CINTDIR)/inc -- $<
	$(CC) $(NOOPT) $(CFLAGS) -I. -I$(CINTDIR)/inc  $(CXXOUT)$@ -c $<

cint/cint/%.o: cint/cint/%.cxx
	$(MAKEDEP) -R -fcint/cint/$*.d -Y -w 1000 -- $(CINTCXXFLAGS) -I. -D__cplusplus -- $<
	$(CXX) $(OPT) $(CINTCXXFLAGS) -I. $(CXXOUT)$@ -c $<

cint/cint/%.o: cint/cint/%.c
	$(MAKEDEP) -R -fcint/cint/$*.d -Y -w 1000 -- $(CINTCFLAGS) -I. -- $<
	$(CC) $(OPT) $(CINTCFLAGS) -I. $(CXXOUT)$@ -c $<

cint/cint7/%.o: cint/cint7/%.cxx
	$(MAKEDEP) -R -fcint/cint7/$*.d -Y -w 1000 -- $(CINT7CXXFLAGS) -I. -D__cplusplus -- $<
	$(CXX) $(OPT) $(CINT7CXXFLAGS) -I. $(CXXOUT)$@ -c $<

cint/cint7/%.o: cint/cint7/%.c
	$(MAKEDEP) -R -fcint/cint7/$*.d -Y -w 1000 -- $(CINT7CFLAGS) -I. -- $<
	$(CC) $(OPT) $(CINT7CFLAGS) -I. $(CXXOUT)$@ -c $<

build/%.o: build/%.cxx
	$(CXX) $(OPT) $(CXXFLAGS) $(CXXOUT)$@ -c $<

build/%.o: build/%.c
	$(CC) $(OPT) $(CFLAGS) $(CXXOUT)$@ -c $<

%.o: %.cxx
	$(MAKEDEP) -R -f$*.d -Y -w 1000 -- $(CXXFLAGS) -D__cplusplus -- $<
	$(CXX) $(OPT) $(CXXFLAGS) $(PCHCXXFLAGS) $(CXXOUT)$@ -c $<

%.o: %.c
	$(MAKEDEP) -R -f$*.d -Y -w 1000 -- $(CFLAGS) -- $<
	$(CC) $(OPT) $(CFLAGS) $(CXXOUT)$@ -c $<

%.o: %.f
ifeq ($(F77),f2c)
	f2c -a -A $<
	$(CC) $(F77OPT) $(CFLAGS) $(CXXOUT)$@ -c $*.c
else
	$(F77) $(F77OPT) $(F77FLAGS) $(CXXOUT)$@ -c $<
endif

##### TARGETS #####
.PHONY:         all fast config rootcint rootlibs rootexecs dist distsrc \
                clean distclean maintainer-clean compiledata \
                version html changelog install uninstall showbuild \
                releasenotes static map debian redhat skip postbin

ifneq ($(findstring map, $(MAKECMDGOALS)),)
.NOTPARALLEL:
endif

all:            rootexecs postbin

fast:           rootexecs

skip:
		@true;

-include $(patsubst %,%/ModuleVars.mk,$(MODULES))
include $(patsubst %,%/Module.mk,$(MODULES))

-include MyRules.mk            # allow local rules

ifeq ($(findstring $(MAKECMDGOALS),clean distclean maintainer-clean dist \
      distsrc version install uninstall showbuild \
      changelog html debian redhat),)
ifeq ($(findstring clean-,$(MAKECMDGOALS)),)
ifeq ($(findstring skip,$(MAKECMDGOALS))$(findstring fast,$(MAKECMDGOALS)),)
-include $(INCLUDEFILES)
endif
ifeq ($(PCHSUPPORTED),yes)
INCLUDEPCHRULES = yes
include config/Makefile.precomp
endif
-include build/dummy.d          # must be last include
endif
endif

rootcint:       all-cint all-utils

rootlibs:       rootcint compiledata $(ALLLIBS) $(ALLMAPS)

rootexecs:      rootlibs $(ALLEXECS)<commit_msg>fix "all" target (failed because all was matching in "install" and "uninstall").<commit_after># Top level Makefile for ROOT System
# Copyright (c) 2000 <NAME> and <NAME>
#
# Author: <NAME>, 29/2/2000


##### Include path/location macros (result of ./configure) #####
##### However, if we are building packages or cleaning,    #####
##### config/Makefile.config isn't made yet - the package  #####
##### scripts want's to make it them selves - so we don't  #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.config
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.config
endif

MAKE_VERSION_MAJOR := $(word 1,$(subst ., ,$(MAKE_VERSION)))
MAKE_VERSION_MINOR := $(shell echo $(word 2,$(subst ., ,$(MAKE_VERSION))) | \
                              sed 's/\([0-9][0-9]*\).*/\1/')
MAKE_VERSION_MAJOR ?= 0
MAKE_VERSION_MINOR ?= 0
ORDER_ := $(shell test $(MAKE_VERSION_MAJOR) -gt 3 || \
                  test $(MAKE_VERSION_MAJOR) -eq 3 && \
                  test $(MAKE_VERSION_MINOR) -ge 80 && echo '|')

##### Include compiler overrides specified via ./configure #####
##### However, if we are building packages or cleaning, we #####
##### don't include this file since it may screw up things #####
##### Included before Makefile.$ARCH only because of f77   #####
##### if case has to be processed                          #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.comp
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.comp
endif

##### Include machine dependent macros                     #####
##### However, if we are building packages or cleaning, we #####
##### don't include this file since it may screw up things #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.$(ARCH)
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.$(ARCH)
endif

##### Include compiler overrides specified via ./configure #####
##### However, if we are building packages or cleaning, we #####
##### don't include this file since it may screw up things #####

ifeq ($(findstring $(MAKECMDGOALS), maintainer-clean debian redhat),)
include config/Makefile.comp
endif
ifeq ($(MAKECMDGOALS),clean)
include config/Makefile.comp
endif

##### Include library dependencies for explicit linking #####

MAKEFILEDEP = config/Makefile.depend
include $(MAKEFILEDEP)

##### Allow local macros #####

-include MyConfig.mk

##### Modules to build #####

MODULES       = build cint/cint core/metautils core/pcre core/utils core/base \
                core/cont core/meta io/io math/mathcore net/net core/zip \
                core/clib core/thread math/matrix core/newdelete hist/hist \
                tree/tree graf2d/freetype graf2d/graf graf2d/gpad graf3d/g3d \
                gui/gui math/minuit hist/histpainter tree/treeplayer \
                gui/ged tree/treeviewer math/physics graf2d/postscript \
                core/rint html montecarlo/eg \
                geom/geom geom/geompainter montecarlo/vmc \
                math/fumili math/mlp math/quadp net/auth gui/guibuilder io/xml \
                math/foam math/splot math/smatrix io/sql tmva \
                geom/geombuilder hist/spectrum hist/spectrumpainter \
                gui/fitpanel proof/proof proof/proofplayer \
                gui/sessionviewer gui/guihtml gui/recorder

ifeq ($(ARCH),win32)
MODULES      += core/winnt graf2d/win32gdk
MODULES      := $(filter-out core/newdelete,$(MODULES))
SYSTEML       = $(WINNTL)
SYSTEMO       = $(WINNTO)
SYSTEMDO      = $(WINNTDO)
else
ifeq ($(ARCH),win32gcc)
MODULES      += core/unix graf2d/x11 graf2d/x11ttf graf3d/x3d rootx
SYSTEML       = $(UNIXL)
SYSTEMO       = $(UNIXO)
SYSTEMDO      = $(UNIXDO)
else
MODULES      += core/unix graf2d/x11 graf2d/x11ttf graf3d/x3d rootx
SYSTEML       = $(UNIXL)
SYSTEMO       = $(UNIXO)
SYSTEMDO      = $(UNIXDO)
endif
endif
ifeq ($(BUILDGL),yes)
ifeq ($(BUILDFTGL),yes)
MODULES      += graf3d/ftgl
endif
MODULES      += graf3d/gl graf3d/eve
endif
ifeq ($(BUILDMYSQL),yes)
MODULES      += sql/mysql
endif
ifeq ($(BUILDORACLE),yes)
MODULES      += sql/oracle
endif
ifeq ($(BUILDPGSQL),yes)
MODULES      += sql/pgsql
endif
ifeq ($(BUILDSAPDB),yes)
MODULES      += sql/sapdb
endif
ifeq ($(BUILDODBC),yes)
MODULES      += sql/odbc
endif
ifeq ($(BUILDRFIO),yes)
MODULES      += io/rfio
endif
ifeq ($(BUILDCASTOR),yes)
MODULES      += io/castor
endif
ifeq ($(BUILDDCAP),yes)
MODULES      += io/dcache
endif
ifeq ($(BUILDGFAL),yes)
MODULES      += io/gfal
endif
ifeq ($(BUILDG4ROOT),yes)
MODULES      += montecarlo/g4root
endif
ifeq ($(BUILDGLITE),yes)
MODULES      += net/glite
endif
ifeq ($(BUILDCHIRP),yes)
MODULES      += io/chirp
endif
ifeq ($(BUILDMEMSTAT),yes)
MODULES      += misc/memstat
endif
ifeq ($(BUILDASIMAGE),yes)
MODULES      += graf2d/asimage
endif
ifeq ($(BUILDFPYTHIA6),yes)
MODULES      += montecarlo/pythia6
endif
ifeq ($(BUILDFPYTHIA8),yes)
MODULES      += montecarlo/pythia8
endif
ifeq ($(BUILDFFTW3),yes)
MODULES      += math/fftw
endif
ifeq ($(BUILDPYTHON),yes)
MODULES      += bindings/pyroot
endif
ifeq ($(BUILDRUBY),yes)
MODULES      += bindings/ruby
endif
ifeq ($(BUILDXML),yes)
MODULES      += io/xmlparser
endif
ifeq ($(BUILDQT),yes)
MODULES      += graf2d/qt gui/qtroot
endif
ifeq ($(BUILDQTGSI),yes)
MODULES      += gui/qtgsi
endif
ifeq ($(BUILDGENVECTOR),yes)
MODULES      += math/genvector
endif
ifeq ($(BUILDMATHMORE),yes)
MODULES      += math/mathmore
endif
ifeq ($(BUILDREFLEX),yes)
# put reflex right in front of CINT; CINT needs it
MODULES      := $(subst cint/cint,cint/reflex cint/cint,$(MODULES))
endif
ifeq ($(BUILDMINUIT2),yes)
MODULES      += math/minuit2
endif
ifeq ($(BUILDUNURAN),yes)
MODULES      += math/unuran
endif
ifeq ($(BUILDCINT7),yes)
MODULES      := $(subst cint/cint,cint/cint cint/cint7,$(MODULES))
endif
ifeq ($(BUILDCINTEX),yes)
MODULES      += cint/cintex
endif
ifeq ($(BUILDROOFIT),yes)
MODULES      += roofit/roofitcore roofit/roofit roofit/roostats
endif
ifeq ($(BUILDGDML),yes)
MODULES      += geom/gdml
endif
ifeq ($(BUILDTABLE),yes)
MODULES      += misc/table
endif
ifeq ($(BUILDSRPUTIL),yes)
MODULES      += net/srputils
endif
ifeq ($(BUILDKRB5),yes)
MODULES      += net/krb5auth
endif
ifeq ($(BUILDLDAP),yes)
MODULES      += net/ldap
endif
ifeq ($(BUILDMONALISA),yes)
MODULES      += net/monalisa
endif
ifeq ($(BUILDGLOBUS),yes)
MODULES      += net/globusauth
endif
ifneq ($(F77),)
MODULES      += misc/minicern hist/hbook
endif
ifeq ($(BUILDXRD),yes)
ifneq ($(XROOTDDIR),)
MODULES      += net/netx
else
MODULES      += net/xrootd net/netx
endif
endif
ifeq ($(BUILDALIEN),yes)
MODULES      += net/alien
endif
ifeq ($(BUILDCLARENS),yes)
MODULES      += proof/clarens
endif
ifeq ($(BUILDPEAC),yes)
MODULES      += proof/peac
endif
ifneq ($(ARCH),win32)
MODULES      += net/rpdutils net/rootd proof/proofd
endif
ifeq ($(BUILDXRD),yes)
ifeq ($(ARCH),win32)
MODULES      += proof/proofd
endif
MODULES      += proof/proofx
endif

-include MyModules.mk   # allow local modules

ifneq ($(findstring $(MAKECMDGOALS),distclean maintainer-clean),)
MODULES      += core/unix core/winnt graf2d/x11 graf2d/x11ttf \
                graf3d/gl graf3d/ftgl io/rfio io/castor \
                montecarlo/pythia6 montecarlo/pythia8 misc/table \
                sql/mysql sql/pgsql sql/sapdb net/srputils graf3d/x3d \
                rootx net/rootd io/dcache io/chirp hist/hbook graf2d/asimage \
                net/ldap net/krb5auth net/rpdutils net/globusauth \
                bindings/pyroot bindings/ruby io/gfal misc/minicern \
                graf2d/qt gui/qtroot gui/qtgsi net/xrootd net/netx net/alien \
                proof/proofd proof/proofx proof/clarens proof/peac \
                sql/oracle io/xmlparser math/mathmore cint/reflex cint/cintex \
                cint/cint7 roofit/roofitcore roofit/roofit roofit/roostats \
                math/minuit2 net/monalisa math/fftw sql/odbc math/unuran \
                geom/gdml graf3d/eve montecarlo/g4root net/glite misc/memstat \
                math/genvector
MODULES      := $(sort $(MODULES))   # removes duplicates
endif

MODULES      += main   # must be last, $(ALLLIBS) must be fully formed

##### ROOT libraries #####

LPATH         = lib

ifneq ($(PLATFORM),win32)
RPATH        := -L$(LPATH)
CINTLIBS     := -lCint
CINT7LIBS    := -lCint7 -lReflex
NEWLIBS      := -lNew
ROOTLIBS     := -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad \
                -lTree -lMatrix -lMathCore -lThread
BOOTLIBS     := -lCore -lCint -lMathCore
ifneq ($(ROOTDICTTYPE),cint)
ROOTLIBS     += -lCintex -lReflex
BOOTLIBS     += -lCintex -lReflex
endif
RINTLIBS     := -lRint
else
CINTLIBS     := $(LPATH)/libCint.lib
CINT7LIBS    := $(LPATH)/libCint7.lib $(LPATH)/libReflex.lib
NEWLIBS      := $(LPATH)/libNew.lib
ROOTLIBS     := $(LPATH)/libCore.lib $(LPATH)/libCint.lib \
                $(LPATH)/libRIO.lib $(LPATH)/libNet.lib \
                $(LPATH)/libHist.lib $(LPATH)/libGraf.lib \
                $(LPATH)/libGraf3d.lib $(LPATH)/libGpad.lib \
                $(LPATH)/libTree.lib $(LPATH)/libMatrix.lib \
                $(LPATH)/libMathcore.lib $(LPATH)/libThread.lib
BOOTLIBS     := $(LPATH)/libCore.lib $(LPATH)/libCint.lib \
                $(LPATH)/libMathcore.lib
ifneq ($(ROOTDICTTYPE),cint)
ROOTLIBS     += $(LPATH)/libCintex.lib $(LPATH)/libReflex.lib
BOOTLIBS     += $(LPATH)/libCintex.lib $(LPATH)/libReflex.lib
endif
RINTLIBS     := $(LPATH)/libRint.lib
endif

# ROOTLIBSDEP is intended to match the content of ROOTLIBS
ROOTLIBSDEP   = $(ORDER_) $(CORELIB) $(CINTLIB) $(IOLIB) $(NETLIB) $(HISTLIB) \
                $(GRAFLIB) $(G3DLIB) $(GPADLIB) $(TREELIB) $(MATRIXLIB) \
                $(MATHCORELIB)
BOOTLIBSDEP   = $(ORDER_) $(CORELIB) $(CINTLIB) $(MATHCORELIB)
ifneq ($(ROOTDICTTYPE),cint)
ROOTLIBSDEP  += $(CINTEXLIB) $(REFLEXLIB)
BOOTLIBSDEP  += $(CINTEXLIB) $(REFLEXLIB)
endif

# Force linking of not referenced libraries
ifeq ($(FORCELINK),yes)
ifeq ($(PLATFORM),aix5)
ROOTULIBS    := -Wl,-u,.G__cpp_setupG__Net      \
                -Wl,-u,.G__cpp_setupG__IO       \
                -Wl,-u,.G__cpp_setupG__Hist     \
                -Wl,-u,.G__cpp_setupG__Graf     \
                -Wl,-u,.G__cpp_setupG__G3D      \
                -Wl,-u,.G__cpp_setupG__GPad     \
                -Wl,-u,.G__cpp_setupG__Tree     \
                -Wl,-u,.G__cpp_setupG__Thread   \
                -Wl,-u,.G__cpp_setupG__Matrix
BOOTULIBS    := -Wl,-u,.G__cpp_setupG__MathCore
else
ROOTULIBS    := -Wl,-u,_G__cpp_setupG__Net      \
                -Wl,-u,_G__cpp_setupG__IO       \
                -Wl,-u,_G__cpp_setupG__Hist     \
                -Wl,-u,_G__cpp_setupG__Graf     \
                -Wl,-u,_G__cpp_setupG__G3D      \
                -Wl,-u,_G__cpp_setupG__GPad     \
                -Wl,-u,_G__cpp_setupG__Tree     \
                -Wl,-u,_G__cpp_setupG__Thread   \
                -Wl,-u,_G__cpp_setupG__Matrix
BOOTULIBS    := -Wl,-u,_G__cpp_setupG__MathCore
endif
endif
ifeq ($(PLATFORM),win32)
ROOTULIBS    := -include:_G__cpp_setupG__Net    \
                -include:_G__cpp_setupG__IO     \
                -include:_G__cpp_setupG__Hist   \
                -include:_G__cpp_setupG__Graf   \
                -include:_G__cpp_setupG__G3D    \
                -include:_G__cpp_setupG__GPad   \
                -include:_G__cpp_setupG__Tree   \
                -include:_G__cpp_setupG__Thread \
                -include:_G__cpp_setupG__Matrix
BOOTULIBS    := -include:_G__cpp_setupG__MathCore
endif

##### Compiler output option #####

CXXOUT ?= -o # keep whitespace after "-o"

##### gcc version #####

ifneq ($(findstring gnu,$(COMPILER)),)
GCC_MAJOR     := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f1)
GCC_MINOR     := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f2)
GCC_PATCH     := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f3)
GCC_VERS      := gcc-$(GCC_MAJOR).$(GCC_MINOR)
GCC_VERS_FULL := gcc-$(GCC_MAJOR).$(GCC_MINOR).$(GCC_PATCH)

##### CINT Stub Functions Generation #####
ifeq ($(NOSTUBS),yes)
ROOTCINTTMP   = export CXXFLAGS="$(CXXFLAGS)"; core/utils/src/rootcint_nostubs_tmp.sh -$(ROOTDICTTYPE)
CXXFLAGS     += -DG__NOSTUBS
CINTCXXFLAGS += -DG__NOSTUBS
ifeq ($(NOSTUBSTEST),yes)
CXXFLAGS     += -DG__NOSTUBSTEST
CINTCXXFLAGS += -DG__NOSTUBSTEST
endif
endif


# Precompiled headers for gcc
ifeq ($(GCC_MAJOR),4)
PCHSUPPORTED  := $(ENABLEPCH)
endif
ifeq ($(PCHSUPPORTED),yes)
PCHFILE        = include/precompile.h.gch
PCHCXXFLAGS    = -DUSEPCH -include precompile.h
PCHEXTRAOBJBUILD = $(CXX) $(CXXFLAGS) -DUSEPCH $(OPT) -x c++-header \
                   -c include/precompile.h $(CXXOUT)$(PCHFILE) \
                   && touch $(PCHEXTRAOBJ)
endif
endif

##### f77 options #####

ifneq ($(F77),)
F77LD        := $(F77)
endif
ifeq ($(F77OPT),)
F77OPT       := $(OPT)
endif
ifeq ($(F77LDFLAGS),)
F77LDFLAGS   := $(LDFLAGS)
endif

ifeq ($(GCC_MAJOR),3)
ifneq ($(GCC_MINOR),0)
ifeq ($(F77),g77)
LIBFRTBEGIN  := $(shell $(F77) -print-file-name=libfrtbegin.a)
F77LIBS      := $(LIBFRTBEGIN) $(F77LIBS)
endif
endif
endif
ifeq ($(GCC_MAJOR),4)
ifeq ($(F77),g77)
LIBFRTBEGIN  := $(shell $(F77) -print-file-name=libfrtbegin.a)
F77LIBS      := $(LIBFRTBEGIN) $(F77LIBS)
endif
endif

##### Store SVN revision number #####

ifeq ($(findstring $(MAKECMDGOALS),clean distclean maintainer-clean dist),)
ifeq ($(findstring clean-,$(MAKECMDGOALS)),)
ifeq ($(shell which svn 2>&1 | sed -ne "s@.*/svn@svn@p"),svn)
SVNREV  := $(shell bash build/unix/svninfo.sh)
endif
endif
endif

##### Utilities #####

MAKEDEP       = $(RMKDEP)
MAKELIB       = build/unix/makelib.sh $(MKLIBOPTIONS)
MAKEDIST      = build/unix/makedist.sh
MAKEDISTSRC   = build/unix/makedistsrc.sh
MAKEVERSION   = build/unix/makeversion.sh
MAKECOMPDATA  = build/unix/compiledata.sh
MAKECINTDLL   = build/unix/makecintdll.sh
MAKECHANGELOG = build/unix/makechangelog.sh
MAKEHTML      = build/unix/makehtml.sh
MAKELOGHTML   = build/unix/makeloghtml.sh
MAKERELNOTES  = build/unix/makereleasenotes.sh
MAKESTATIC    = build/unix/makestatic.sh
RECONFIGURE   = build/unix/reconfigure.sh
ifeq ($(PLATFORM),win32)
MAKELIB       = build/win/makelib.sh
MAKECOMPDATA  = build/win/compiledata.sh
endif

##### Compiler directives and run-control file #####

COMPILEDATA   = include/compiledata.h
ROOTRC        = etc/system.rootrc
ROOTMAP       = etc/system.rootmap

##### Extra libs needed for "static" target #####

STATICEXTRALIBS = $(PCRELDFLAGS) $(PCRELIB) \
                  $(FREETYPELDFLAGS) $(FREETYPELIB)

##### libCore #####

COREL         = $(BASEL1) $(BASEL2) $(BASEL3) $(CONTL) $(METAL) \
                $(SYSTEML) $(CLIBL) $(METAUTILSL)
COREO         = $(BASEO) $(CONTO) $(METAO) $(SYSTEMO) $(ZIPO) $(CLIBO) \
                $(METAUTILSO)
COREDO        = $(BASEDO) $(CONTDO) $(METADO) $(SYSTEMDO) $(CLIBDO) \
                $(METAUTILSDO)

CORELIB      := $(LPATH)/libCore.$(SOEXT)
COREMAP      := $(CORELIB:.$(SOEXT)=.rootmap)
ifneq ($(BUILTINZLIB),yes)
CORELIBEXTRA += $(ZLIBCLILIB)
STATICEXTRALIBS += -lz
endif

##### In case shared libs need to resolve all symbols (e.g.: aix, win32) #####

ifeq ($(EXPLICITLINK),yes)
MAINLIBS     := $(CORELIB) $(CINTLIB)
ifneq ($(ROOTDICTTYPE),cint)
MAINLIBS     += $(CINTEXLIB) $(REFLEXLIB)
endif
else
MAINLIBS      =
endif

##### pre-compiled header support #####

ifeq ($(PCHSUPPORTED),yes)
include config/Makefile.precomp
endif

##### all #####

ALLHDRS      :=
ALLLIBS      := $(CORELIB)
ALLMAPS      := $(COREMAP)
ALLEXECS     :=
INCLUDEFILES :=

##### RULES #####

.SUFFIXES: .cxx .d
.PRECIOUS: include/%.h

# special rules (need to be defined before generic ones)
G__%.o: G__%.cxx
	$(MAKEDEP) -R -f$(patsubst %.o,%.d,$@) -Y -w 1000 -- \
	   $(CXXFLAGS) -D__cplusplus -I$(CINTDIR)/lib/prec_stl \
	   -I$(CINTDIR)/stl -I$(CINTDIR)/inc -- $<
	$(CXX) $(NOOPT) $(CXXFLAGS) -I. -I$(CINTDIR)/inc  $(CXXOUT)$@ -c $<

G__c_%.o: G__c_%.c
	$(MAKEDEP) -R -f$(patsubst %.o,%.d,$@) -Y -w 1000 -- \
	   $(CFLAGS) -I$(CINTDIR)/lib/prec_stl \
	   -I$(CINTDIR)/stl -I$(CINTDIR)/inc -- $<
	$(CC) $(NOOPT) $(CFLAGS) -I. -I$(CINTDIR)/inc  $(CXXOUT)$@ -c $<

cint/cint/%.o: cint/cint/%.cxx
	$(MAKEDEP) -R -fcint/cint/$*.d -Y -w 1000 -- $(CINTCXXFLAGS) -I. -D__cplusplus -- $<
	$(CXX) $(OPT) $(CINTCXXFLAGS) -I. $(CXXOUT)$@ -c $<

cint/cint/%.o: cint/cint/%.c
	$(MAKEDEP) -R -fcint/cint/$*.d -Y -w 1000 -- $(CINTCFLAGS) -I. -- $<
	$(CC) $(OPT) $(CINTCFLAGS) -I. $(CXXOUT)$@ -c $<

cint/cint7/%.o: cint/cint7/%.cxx
	$(MAKEDEP) -R -fcint/cint7/$*.d -Y -w 1000 -- $(CINT7CXXFLAGS) -I. -D__cplusplus -- $<
	$(CXX) $(OPT) $(CINT7CXXFLAGS) -I. $(CXXOUT)$@ -c $<

cint/cint7/%.o: cint/cint7/%.c
	$(MAKEDEP) -R -fcint/cint7/$*.d -Y -w 1000 -- $(CINT7CFLAGS) -I. -- $<
	$(CC) $(OPT) $(CINT7CFLAGS) -I. $(CXXOUT)$@ -c $<

build/%.o: build/%.cxx
	$(CXX) $(OPT) $(CXXFLAGS) $(CXXOUT)$@ -c $<

build/%.o: build/%.c
	$(CC) $(OPT) $(CFLAGS) $(CXXOUT)$@ -c $<

%.o: %.cxx
	$(MAKEDEP) -R -f$*.d -Y -w 1000 -- $(CXXFLAGS) -D__cplusplus -- $<
	$(CXX) $(OPT) $(CXXFLAGS) $(PCHCXXFLAGS) $(CXXOUT)$@ -c $<

%.o: %.c
	$(MAKEDEP) -R -f$*.d -Y -w 1000 -- $(CFLAGS) -- $<
	$(CC) $(OPT) $(CFLAGS) $(CXXOUT)$@ -c $<

%.o: %.f
ifeq ($(F77),f2c)
	f2c -a -A $<
	$(CC) $(F77OPT) $(CFLAGS) $(CXXOUT)$@ -c $*.c
else
	$(F77) $(F77OPT) $(F77FLAGS) $(CXXOUT)$@ -c $<
endif

##### TARGETS #####
.PHONY:         all fast config rootcint rootlibs rootexecs dist distsrc \
                clean distclean maintainer-clean compiledata \
                version html changelog install uninstall showbuild \
                releasenotes static map debian redhat skip postbin

ifneq ($(findstring map, $(MAKECMDGOALS)),)
.NOTPARALLEL:
endif

all:            rootexecs postbin

fast:           rootexecs

skip:
		@true;

-include $(patsubst %,%/ModuleVars.mk,$(MODULES))
include $(patsubst %,%/Module.mk,$(MODULES))

-include MyRules.mk            # allow local rules

ifeq ($(findstring $(MAKECMDGOALS),clean distclean maintainer-clean dist \
      distsrc version showbuild \
      changelog html debian redhat),)
ifeq ($(findstring clean-,$(MAKECMDGOALS)),)
ifeq ($(findstring skip,$(MAKECMDGOALS))$(findstring fast,$(MAKECMDGOALS)),)
-include $(INCLUDEFILES)
endif
ifeq ($(PCHSUPPORTED),yes)
INCLUDEPCHRULES = yes
include config/Makefile.precomp
endif
-include build/dummy.d          # must be last include
endif
endif

rootcint:       all-cint all-utils

rootlibs:       rootcint compiledata $(ALLLIBS) $(ALLMAPS)

rootexecs:      rootlibs $(ALLEXECS)
{'fraction_non_alphanumeric': 0.1625586377070962, 'fraction_numerical': 0.012202066216546003, 'mean_word_length': 2.9271643062506656, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '839419', 'n_tokens_mistral': 14849, 'n_tokens_neox': 14023, 'n_words': 2904}