diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index eccf8a4..abae23a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,4 +15,4 @@ jobs: steps: - uses: actions/checkout@v2 - - run: cd NanoCORE && mv MakefileCI Makefile && make testpy3 -j8 + - run: cd NanoCORE && make testpy3 -j8 diff --git a/NanoCORE/Makefile b/NanoCORE/Makefile index bd7465c..48130cc 100755 --- a/NanoCORE/Makefile +++ b/NanoCORE/Makefile @@ -1,6 +1,9 @@ include Makefile.arch -SOURCES=$(wildcard *.cc) $(wildcard Tools/*.cc) $(wildcard Tools/btagsf/*.cc) $(wildcard Tools/jetcorr/PhysicsTools/NanoAODTools/src/*.cc) +SOURCES=$(wildcard *.cc) $(wildcard Tools/*.cc) $(wildcard Tools/btagsf/*.cc) +ifdef CMSSW_BASE +SOURCES+=$(wildcard Tools/jetcorr/PhysicsTools/NanoAODTools/src/*.cc) +endif OBJECTS=$(SOURCES:.cc=.o) LIB=NANO_CORE.so diff --git a/NanoCORE/Makefile.arch b/NanoCORE/Makefile.arch index f5c7dc3..cd14984 100755 --- a/NanoCORE/Makefile.arch +++ b/NanoCORE/Makefile.arch @@ -6,279 +6,152 @@ # # Author: Fons Rademakers, 29/2/2000 -ARCH := $(shell root-config --arch) -PLATFORM := $(shell root-config --platform) +RC := root-config +ifneq ($(shell which $(RC) 2>&1 | sed -ne "s@.*/$(RC)@$(RC)@p"),$(RC)) +ifneq ($(ROOTSYS),) +RC1 := $(ROOTSYS)/bin/root-config +ifneq ($(shell which $(RC1) 2>&1 | sed -ne "s@.*/$(RC)@$(RC)@p"),$(RC)) +$(error Please make sure $(RC1) can be found in path) +else +RC := $(RC1) +endif +else +$(error Please make sure $(RC) can be found in path) +endif +endif -CXX = +ARCH := $(shell $(RC) --arch) +PLATFORM := $(shell $(RC) --platform) +ALTCC := $(shell $(RC) --cc) +ALTCXX := $(shell $(RC) --cxx) +ALTF77 := $(shell $(RC) --f77) +ALTLD := $(shell $(RC) --ld) + +#CXX = ObjSuf = o SrcSuf = cxx ExeSuf = DllSuf = so OutPutOpt = -o # keep whitespace after "-o" -ROOTCFLAGS := $(shell root-config --cflags) -ROOTLDFLAGS := -#$(shell root-config --ldflags) -ROOTLIBS := $(shell root-config --libs) -ROOTGLIBS := $(shell root-config --glibs) -HASTHREAD := $(shell root-config --has-thread) +ifeq (debug,$(findstring debug,$(ROOTBUILD))) +OPT = -g +OPT2 = -g +else +OPT = -O +OPT2 = -O2 +endif + +ROOTCFLAGS := $(shell $(RC) --cflags) +ROOTLDFLAGS := $(shell $(RC) --ldflags) +ROOTLIBS := $(shell $(RC) --libs) +ROOTGLIBS := $(shell $(RC) --glibs) +ROOTCLING := rootcling + +ifeq ($(PLATFORM),macosx) +ROOTLIBDIR := $(shell $(RC) --libdir) +MACOSX_MAJOR := $(strip $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 1)) +MACOSX_MINOR := $(strip $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)) +ifeq ($(MACOSX_DEPLOYMENT_TARGET),) +MACOSXTARGET := $(MACOSX_MAJOR).$(MACOSX_MINOR) +else +MACOSXTARGET := $(MACOSX_DEPLOYMENT_TARGET) +endif +endif ifeq ($(ARCH),hpuxacc) # HP-UX 10.x with aCC CXX = aCC -CXXFLAGS = -O4 +Z +CXXFLAGS = $(OPT) +Z LD = aCC -LDFLAGS = -O2 -z +LDFLAGS = $(OPT) -z SOFLAGS = -b endif ifeq ($(ARCH),hpuxia64acc) # HP-UX 11i 1.5 (IA-64) with aCC CXX = aCC -CXXFLAGS = +DD64 -O +Z +CXXFLAGS = +DD64 $(OPT) +Z LD = aCC -LDFLAGS = +DD64 -O -z +LDFLAGS = +DD64 $(OPT) -z SOFLAGS = -b endif -ifeq ($(ARCH),hpuxegcs) +ifeq ($(ARCH),hpuxgcc) # HP-UX 10.x with g++ -CXXFLAGS = -O -fPIC +CXXFLAGS = $(OPT) -fPIC CXX = g++ LD = g++ -LDFLAGS = -O +LDFLAGS = $(OPT) SOFLAGS = -fPIC -shared endif ifeq ($(ARCH),hurddeb) # GNU/Hurd CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC +CXXFLAGS = $(OPT2) -Wall -fPIC LD = g++ -LDFLAGS = -O2 +LDFLAGS = $(OPT2) SOFLAGS = -shared endif -ifeq ($(ARCH),aix) -# IBM AIX xlC 4.x -CXX = xlC -CXXFLAGS = -O -LD = xlC -LDFLAGS = -O -SOFLAGS = -ROOTLIBS := $(shell root-config --nonew --libs) -ROOTGLIBS := $(shell root-config --nonew --glibs) -endif - ifeq ($(ARCH),aix5) -# IBM AIX xlC 5.x +# IBM AIX >5.x xlC CXX = xlC -CXXFLAGS = -O +CXXFLAGS = $(OPT) LD = xlC -LDFLAGS = -O -SOFLAGS = -ROOTLIBS := $(shell root-config --nonew --libs) -ROOTGLIBS := $(shell root-config --nonew --glibs) +LDFLAGS = $(OPT) +SOFLAGS = +DllSuf = a endif -ifeq ($(ARCH),aixegcs) -# IBM AIX with GCC +ifeq ($(ARCH),aixgcc) +# IBM AIX >5.x with GCC CXX = g++ -CXXFLAGS = -O2 +CXXFLAGS = $(OPT) LD = g++ -LDFLAGS = -O2 +LDFLAGS = $(OPT) SOFLAGS = -shared +DllSuf = a +EXPLLINKLIBS = $(ROOTGLIBS) endif ifeq ($(ARCH),solaris) # Solaris CC CXX = /opt/SUNWspro/bin/CC -CXXFLAGS = -O2 -KPIC +CXXFLAGS = $(OPT) -KPIC LD = /opt/SUNWspro/bin/CC -LDFLAGS = -O +LDFLAGS = $(OPT) SOFLAGS = -G endif ifeq ($(ARCH),solarisCC5) # Solaris CC 5.0 CXX = CC -CXXFLAGS = -O2 -KPIC +CXXFLAGS = $(OPT) -KPIC LD = CC -LDFLAGS = -O2 +LDFLAGS = $(OPT) SOFLAGS = -G endif -ifeq ($(ARCH),solarisgcc) -# Solaris gcc -CXX = g++ -CXXFLAGS = -O2 -fPIC -LD = g++ -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),solariskcc) -# Solaris kcc -CXX = KCC --one_instantiation_per_object -CXXFLAGS = -O4 -KPIC -LD = KCC -LDFLAGS = -O4 -SOFLAGS = -endif - -ifeq ($(ARCH),solarisx86) -# Solaris CC on Intel +ifeq ($(ARCH),solaris64CC5) +# Solaris CC 5.0 64-bit CXX = CC -CXXFLAGS = -O4 -KPIC +CXXFLAGS = $(OPT) -KPIC LD = CC -LDFLAGS = -O4 +LDFLAGS = $(OPT) SOFLAGS = -G endif -ifeq ($(ARCH),sgicc) -# SGI -CXX = CC -n32 -I/usr/include/CC.sgi -CXXFLAGS = -O2 -LD = CC -n32 -LANG:std -I/usr/include/CC.sgi -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),sgicc64) -# SGI -CXX = CC -64 -I/usr/include/CC.sgi -CXXFLAGS = -O2 -LD = CC -64 -LANG:std -I/usr/include/CC.sgi -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),sgiegcs) -# SGI 6.x with EGCS -CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -LD = g++ -LDFLAGS = -O2 -Wl,-u,__builtin_new -Wl,-u,__builtin_delete -Wl,-u,__nw__FUiPv -SOFLAGS = -shared -endif - -ifeq ($(ARCH),sgin32egcs) -# SGI 6.x with EGCS for n32 ABI -CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -LD = g++ -LDFLAGS = -O2 -L/usr/lib32 -Wl,-woff,134 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),sgikcc) -# SGI with KCC -CXX = KCC -n32 --one_instantiation_per_object -CXXFLAGS = -O2 -LD = KCC -n32 -LDFLAGS = -O2 -SOFLAGS = -endif - -ifeq ($(ARCH),alphaegcs) -# Alpha/OSF with egcs -CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -LD = g++ -LDFLAGS = -O2 -SOFLAGS = -Wl,-expect_unresolved,* -shared -endif - -ifeq ($(ARCH),alphakcc) -# Alpha/OSF with kai compiler (not yet valid) -CXX = KCC --one_instantiation_per_object -CXXFLAGS = -O2 -fPIC -LD = KCC -LDFLAGS = -O2 -SOFLAGS = -Wl,-expect_unresolved,* -shared -endif - -ifeq ($(ARCH),alphacxx6) -# Alpha/OSF with cxx6 -CXX = cxx -CXXFLAGS = -O2 -LD = cxx -LDFLAGS = -O2 -SOFLAGS = -shared -nocxxstd -Wl,-expect_unresolved,*,-msym -endif - -ifeq ($(ARCH),linuxrh51) -# Linux with gcc 2.7.2.x -CXX = g++ -CXXFLAGS = -O2 -Wall -W -Woverloaded-virtual -fPIC -Wshadow -LD = g++ -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),linuxrh42) -# Linux with gcc 2.7.2.x (RedHat 4.2) -CXX = g++ -CXXFLAGS = -O2 -Wall -W -Woverloaded-virtual -fPIC -Wshadow -LD = g++ -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),linuxdeb) -# Linux with gcc 2.7.2.x -CXX = g++ -CXXFLAGS = -O1 -Wall -W -Woverloaded-virtual -fPIC -Wshadow -LD = g++ -LDFLAGS = -O1 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),linuxdeb2) -# Linux with gcc 2.7.2.x -CXX = g++ -CXXFLAGS = -O2 -Wall -W -Woverloaded-virtual -fPIC -Wshadow -LD = g++ -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),linuxdeb2ppc) -# Debian/Linux on the PowerPC -CXX = g++ -CXXFLAGS = -O2 -Wall -W -Woverloaded-virtual -fPIC -Wshadow -LD = g++ -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),linuxsuse6) -# Linux with gcc 2.7.2.x -CXX = g++ -CXXFLAGS = -O2 -Wall -W -Woverloaded-virtual -fPIC -Wshadow -LD = g++ -LDFLAGS = -O2 -SOFLAGS = -shared -endif - ifeq ($(ARCH),linux) -# Linux with egcs, gcc 2.9x, gcc 3.x (>= RedHat 5.2) +# Linux with egcs, gcc 2.9x, gcc 3.x CXX = g++ -CXXFLAGS = -ggdb -O -pipe -Wall -W -Wunused -Woverloaded-virtual -fPIC -Wshadow +CXXFLAGS = $(OPT2) -Wall -fPIC LD = g++ -LDFLAGS = -O +LDFLAGS = $(OPT2) SOFLAGS = -shared endif -ifeq ($(ARCH),linuxkcc) -# Linux with the KAI compiler -CXX = KCC --one_instantiation_per_object -CXXFLAGS = -O -fPIC +K0 -LD = KCC -LDFLAGS = -O $(shell root-config --cflags) -SOFLAGS = -endif - ifeq ($(ARCH),linuxicc) # Linux with Intel icc compiler ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ @@ -286,41 +159,27 @@ ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ cut -d'.' -f2) CXX = icc -CXXFLAGS = -O -fPIC -wd1476 +CXXFLAGS = $(OPT) -fPIC -wd1476 LD = icpc -LDFLAGS = -O +LDFLAGS = $(OPT) SOFLAGS = -shared -ifeq ($(ICC_MAJOR),8) -ifneq ($(ICC_MINOR),0) -CXXFLAGS += -wd1572 -endif -endif endif -ifeq ($(ARCH),linuxppcegcs) -# MkLinux with egcs/glibc +ifeq ($(ARCH),linuxppcgcc) +# PPC Linux with gcc and glibc CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -Wshadow -Woverloaded-virtual +CXXFLAGS = $(OPT2) -Wall -fPIC LD = g++ -LDFLAGS = -O2 +LDFLAGS = $(OPT2) SOFLAGS = -shared endif ifeq ($(ARCH),linuxia64gcc) # Itanium Linux with gcc 2.9x CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -Wshadow -Woverloaded-virtual +CXXFLAGS = $(OPT2) -Wall -fPIC LD = g++ -LDFLAGS = -O2 -SOFLAGS = -shared -endif - -ifeq ($(ARCH),linuxia64sgi) -# Itanium Linux with sgiCC -CXX = sgiCC -CXXFLAGS = -O -Wall -fPIC -Wshadow -Woverloaded-virtual -LD = gsgiCC -LDFLAGS = -O +LDFLAGS = $(OPT2) SOFLAGS = -shared endif @@ -331,223 +190,178 @@ ICC_MAJOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ ICC_MINOR := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \ cut -d'.' -f2) CXX = icc -CXXFLAGS = -O -fPIC -Wshadow -wd1476 +CXXFLAGS = $(OPT) -fPIC -wd1476 -ftz LD = icpc -LDFLAGS = -O +LDFLAGS = $(OPT) SOFLAGS = -shared -ifeq ($(ICC_MAJOR),8) -ifneq ($(ICC_MINOR),0) -CXXFLAGS += -wd1572 -endif -endif endif ifeq ($(ARCH),linuxx8664gcc) # AMD Opteron and Intel EM64T (64 bit mode) Linux with gcc 3.x -#CXX = g++4 CXX = g++ -CXXFLAGS = -g -O2 -Wall -fPIC -Wshadow -Woverloaded-virtual -#LD = g++4 +CXXFLAGS = $(OPT2) -Wall -fPIC LD = g++ -LDFLAGS = -g -O2 -SOFLAGS = -g -shared +LDFLAGS = $(OPT2) +SOFLAGS = -shared endif ifeq ($(ARCH),linuxppc64gcc) # PPC64 Linux with gcc 3.x CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -Wshadow -Woverloaded-virtual +CXXFLAGS = $(OPT) -Wall -fPIC LD = g++ -LDFLAGS = -O2 +LDFLAGS = $(OPT) SOFLAGS = -shared endif ifeq ($(ARCH),linuxx8664icc) # AMD Opteron and Intel EM64T (64 bit mode) Linux with Intel icc compiler CXX = icc -CXXFLAGS = -O2 -fPIC -Wshadow -wd1476 -wd1572 +CXXFLAGS = $(OPT) -fPIC -wd1476 -wd1572 LD = icpc -LDFLAGS = -O2 +LDFLAGS = $(OPT) SOFLAGS = -shared endif -ifeq ($(ARCH),linuxalphaegcs) -# Alpha Linux with egcs +ifeq ($(ARCH),linuxhppa) +# GNU/Linux on hppa with gcc CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -Wshadow -Woverloaded-virtual +CXXFLAGS = $(OPT2) -Wall -fPIC LD = g++ -LDFLAGS = -O2 +LDFLAGS = $(OPT2) SOFLAGS = -shared endif ifeq ($(ARCH),linuxarm) # ARM Linux with egcs CXX = g++ -CXXFLAGS = -O -Wall -fPIC -Wshadow -Woverloaded-virtual +CXXFLAGS = $(OPT) -Wall -fPIC LD = g++ -LDFLAGS = -O +LDFLAGS = $(OPT) SOFLAGS = -shared endif -ifeq ($(ARCH),mklinux) -# MkLinux with libc5 +ifeq ($(ARCH),linuxarm64) +# ARMv8-A (AArch64) Linux with gcc and glibc CXX = g++ -CXXFLAGS = -O2 -Wall -fPIC -Wshadow -Woverloaded-virtual +CXXFLAGS = $(OPT) -Wall -fPIC LD = g++ -LDFLAGS = -O2 +LDFLAGS = $(OPT) SOFLAGS = -shared endif -ifeq ($(ARCH),freebsd) -# FreeBSD with libc5 +ifeq ($(ARCH),freebsd4) +# FreeBSD with glibc CXX = g++ -CXXFLAGS = -O2 -pipe -W -Wall -fPIC -Wshadow -Woverloaded-virtual -LD = g++ -LDFLAGS = -O2 +CXXFLAGS = $(OPT) -W -Wall -fPIC +LD = $(CXX) +LDFLAGS = $(OPT) SOFLAGS = -shared -Wl,-x endif -ifeq ($(ARCH),freebsd4) +ifeq ($(ARCH),freebsd5) # FreeBSD with glibc CXX = g++ -CXXFLAGS = -O2 -pipe -W -Wall -fPIC -Wshadow -Woverloaded-virtual -LD = g++ -LDFLAGS = -O2 +CXXFLAGS = $(OPT) -W -Wall -fPIC +LD = $(CXX) +LDFLAGS = $(OPT) +SOFLAGS = -shared -Wl,-x +endif + +ifeq ($(ARCH),freebsd7) +# FreeBSD with libc +CXX = g++ +CXXFLAGS = $(OPT) -W -Wall -fPIC +LD = $(CXX) +LDFLAGS = $(OPT) SOFLAGS = -shared -Wl,-x endif ifeq ($(ARCH),openbsd) # OpenBSD with libc CXX = g++ -CXXFLAGS = -O -pipe -W -Wall -fPIC -Wshadow -Woverloaded-virtual +CXXFLAGS = $(OPT) -pipe -W -Wall -fPIC LD = g++ -LDFLAGS = -O +LDFLAGS = $(OPT) SOFLAGS = -shared -Wl,-x endif ifeq ($(ARCH),macosx) # MacOS X with cc (GNU cc 2.95.2 and gcc 3.3) -MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) -CXX = c++ -CXXFLAGS = -O2 -pipe -Wall -W -Woverloaded-virtual -Wshadow -LDFLAGS = -O2 -bind_at_load -# The SOFLAGS will be used to create the .dylib, -# the .so will be created separately -DllSuf = dylib -ifeq ($(subst $(MACOSX_MINOR),,12),12) -UNDEFOPT = dynamic_lookup -LD = MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR) c++ -else -UNDEFOPT = suppress -LD = c++ -endif -SOFLAGS = -dynamiclib -single_module -undefined $(UNDEFOPT) +CXX = g++ +CXXFLAGS = $(OPT2) -pipe -Wall -W -Woverloaded-virtual +LD = g++ +LDFLAGS = $(OPT2) -mmacosx-version-min=$(MACOSXTARGET) +EXPLLINKLIBS = $(ROOTGLIBS) +DllSuf = so +SOFLAGS = -dynamiclib -single_module -install_name $(CURDIR)/ endif ifeq ($(ARCH),macosxicc) -# MacOS X with cc (GNU cc 2.95.2 and gcc 3.3) -MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) -CXX = c++ -CXXFLAGS = -O2 -pipe -Wall -W -Woverloaded-virtual -Wshadow -LDFLAGS = -O2 -bind_at_load -# The SOFLAGS will be used to create the .dylib, -# the .so will be created separately -DllSuf = dylib -ifeq ($(subst $(MACOSX_MINOR),,12),12) -UNDEFOPT = dynamic_lookup -LD = MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR) c++ -else -UNDEFOPT = suppress -LD = c++ -endif -SOFLAGS = -dynamiclib -single_module -undefined $(UNDEFOPT) +# MacOS X with Intel icc compiler +CXX = icc +CXXFLAGS = $(OPT) -fPIC -wd1476 +LD = icpc +LDFLAGS = $(OPT2) -mmacosx-version-min=$(MACOSXTARGET) +EXPLLINKLIBS = $(ROOTGLIBS) +DllSuf = so +SOFLAGS = -dynamiclib -single_module -install_name $(CURDIR)/ endif ifeq ($(ARCH),macosx64) # MacOS X >= 10.4 with gcc 64 bit mode (GNU gcc 4.*) -MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) -CXX = c++ -CXXFLAGS = -m64 -O2 -pipe -Wall -W -Woverloaded-virtual -Wshadow -LDFLAGS = -m64 -O2 -bind_at_load -# The SOFLAGS will be used to create the .dylib, -# the .so will be created separately -DllSuf = dylib -ifeq ($(subst $(MACOSX_MINOR),,12),12) -LD = MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR) c++ -SOFLAGS = -m64 -dynamiclib -single_module -undefined dynamic_lookup -endif -endif - -ifeq ($(ARCH),macosxxlc) -# MacOS X with IBM xlC compiler -MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2) -CXX = xlC -CXXFLAGS = -O -LDFLAGS = -O -Wl,-bind_at_load -# The SOFLAGS will be used to create the .dylib, -# the .so will be created separately -DllSuf = dylib -ifeq ($(MACOSX_MINOR),4) -UNDEFOPT = dynamic_lookup -LD = MACOSX_DEPLOYMENT_TARGET=10.4 xlC -else -ifeq ($(MACOSX_MINOR),3) -UNDEFOPT = dynamic_lookup -LD = MACOSX_DEPLOYMENT_TARGET=10.3 xlC -else -UNDEFOPT = suppress -LD = xlC -endif +# Only specific option (-m64) comes from root-config +CXX = g++ +CXXFLAGS = $(OPT2) -pipe -Wall -W -Woverloaded-virtual +LD = g++ +LDFLAGS = $(OPT2) -mmacosx-version-min=$(MACOSXTARGET) -Wl,-rpath,$(ROOTLIBDIR) +EXPLLINKLIBS = $(ROOTGLIBS) +DllSuf = so +SOFLAGS = -dynamiclib -single_module -install_name $(CURDIR)/ endif -SOFLAGS = -qmkshrobj -single_module -undefined $(UNDEFOPT) + +ifeq ($(ARCH),macosxarm64) +# Apple Silicon running macOS 11.x. +CXX = g++ +CXXFLAGS = $(OPT2) -pipe -Wall -W -Woverloaded-virtual +LD = g++ +LDFLAGS = $(OPT2) -mmacosx-version-min=$(MACOSXTARGET) -Wl,-rpath,$(ROOTLIBDIR) +EXPLLINKLIBS = $(ROOTGLIBS) +DllSuf = so +SOFLAGS = -dynamiclib -single_module -install_name $(CURDIR)/ endif ifeq ($(ARCH),win32) # Windows with the VC++ compiler +VC_MAJOR := $(shell unset VS_UNICODE_OUTPUT; cl.exe 2>&1 | awk '{ if (NR==1) print $$(NF-2) }' | \ + cut -d'.' -f1) ObjSuf = obj SrcSuf = cxx ExeSuf = .exe DllSuf = dll OutPutOpt = -out: CXX = cl +ifeq (debug,$(findstring debug,$(ROOTBUILD))) +CXXOPT = -Z7 +LDOPT = -debug +else CXXOPT = -O2 -#CXXOPT = -Z7 -CXXFLAGS = $(CXXOPT) -G5 -GR -GX -MD -DWIN32 -D_WINDOWS -nologo \ - -DVISUAL_CPLUSPLUS -D_X86_=1 -D_DLL -LD = link LDOPT = -opt:ref -#LDOPT = -debug -LDFLAGS = $(LDOPT) -pdb:none -nologo -SOFLAGS = -DLL - -ROOTLIBS := $(shell root-config --nonew --libs) -ROOTGLIBS := $(shell root-config --nonew --glibs) -EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS) endif - -ifeq ($(ARCH),win32old) -# Windows with the VC++ compiler -ObjSuf = obj -SrcSuf = cxx -ExeSuf = .exe -DllSuf = dll -OutPutOpt = -out: -CXX = cl -CXXOPT = -O2 -#CXXOPT = -Z7 -CXXFLAGS = $(CXXOPT) -G5 -GR -GX -MD -DWIN32 -D_WINDOWS -nologo \ - -DVISUAL_CPLUSPLUS -D_X86_=1 -D_DLL +ROOTINCDIR := -I$(shell cygpath -m `$(RC) --incdir`) +CXXFLAGS = $(CXXOPT) -nologo $(ROOTINCDIR) -FIw32pragma.h LD = link -LDOPT = -opt:ref -#LDOPT = -debug -LDFLAGS = $(LDOPT) -pdb:none -nologo +LDFLAGS = $(LDOPT) -nologo SOFLAGS = -DLL - - -ROOTLIBS := $(shell root-config --nonew --libs) -ROOTGLIBS := $(shell root-config --nonew --glibs) -EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS) +EXPLLINKLIBS = $(ROOTGLIBS) +ifneq (,$(findstring $(VC_MAJOR),14 15)) +MT_EXE = mt -nologo -manifest $@.manifest -outputresource:$@\;1; rm -f $@.manifest +MT_DLL = mt -nologo -manifest $@.manifest -outputresource:$@\;2; rm -f $@.manifest +else +MT_EXE = +MT_DLL = +endif endif ifeq ($(ARCH),win32gcc) @@ -555,12 +369,14 @@ ifeq ($(ARCH),win32gcc) DllSuf = dll ExeSuf = .exe CXX = g++ -CXXFLAGS = -O -pipe -Wall -Woverloaded-virtual -I/usr/X11R6/include +CXXFLAGS = $(OPT) -pipe -Wall -Woverloaded-virtual -I/usr/X11R6/include LD = g++ -LDFLAGS = -O -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc \ - -L/usr/X11R6/lib -SOFLAGS = -shared -D_DLL -Wl,--export-all-symbols -EXPLLINKLIBS = $(ROOTLIBS) $(ROOTGLIBS) +LDFLAGS = $(OPT) -Wl,--enable-auto-import \ + -Wl,--enable-runtime-pseudo-reloc \ + -L/usr/X11R6/lib +SOFLAGS = -shared -Wl,--enable-auto-image-base \ + -Wl,--export-all-symbols +EXPLLINKLIBS = $(ROOTGLIBS) endif ifeq ($(CXX),) @@ -569,5 +385,23 @@ endif CXXFLAGS += $(ROOTCFLAGS) LDFLAGS += $(ROOTLDFLAGS) -LIBS = $(ROOTLIBS) $(SYSLIBS) -GLIBS = $(ROOTGLIBS) $(SYSLIBS) +LIBS = $(ROOTLIBS) +GLIBS = $(ROOTGLIBS) + +ifneq ($(ALTCC),) + CC = $(ALTCC) +endif +ifneq ($(ALTCXX),) + CXX = $(ALTCXX) +endif +ifneq ($(ALTF77),) + F77 = $(ALTF77) +endif +ifneq ($(ALTLD),) + LD = $(ALTLD) +endif + +ifneq ($(findstring g++, $(CXX)),) +GCC_MAJOR := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f1) +GCC_MINOR := $(shell $(CXX) -dumpversion 2>&1 | cut -d'.' -f2) +endif diff --git a/NanoCORE/MakefileCI b/NanoCORE/MakefileCI deleted file mode 100644 index 54441df..0000000 --- a/NanoCORE/MakefileCI +++ /dev/null @@ -1,28 +0,0 @@ -include Makefile.arch - -SOURCES=$(wildcard *.cc) $(wildcard Tools/*.cc) $(wildcard Tools/btagsf/*.cc) -OBJECTS=$(SOURCES:.cc=.o) -LIB=NANO_CORE.so - -$(LIB): $(OBJECTS) - $(LD) $(LDFLAGS) $(SOFLAGS) $(OBJECTS) $(ROOTLIBS) -lTMVA -lEG -lGenVector -lXMLIO -lMLP -lTreePlayer -o $@ - ln -sf $(LIB) lib$(LIB) - -%.o: %.cc - $(CXX) $(CXXFLAGS) -c $< -o $@ -fno-var-tracking - -test: all - python Tools/unit_tests/tests.py - -testpy3: all - python3 Tools/unit_tests/tests.py - -all: $(LIB) -clean: - rm -f *.o \ - rm -f *.d \ - rm -f *.so \ - rm -f Tools/*.o \ - rm -f Tools/*.d \ - rm -f Tools/*.so -