# this makefile used to discover go4 environment and # generate Makefile.gener file # also some other files can be generated here # move it out of Makefile.config while it is not used in user code # this is required to load existing configuration and do not try to re-discover old one -include $(GO4SYS)/build/Makefile.gener ########## This is discovery of configuration when Makefile.gener not exists ######### ifndef GO4_Configured ifndef GO4_OS ifneq ($(findstring CYGWIN, $(shell uname)),) GO4_OS := Win32 else GO4_OS := $(shell uname) endif endif ifneq ($(GO4_OS),Win32) ifdef prefix ifneq ($(wildcard $(prefix)),) GO4PREFIX = $(prefix) endif endif endif ifdef GO4PREFIX GO4TOPPATH = $(GO4PREFIX)/share/go4 GO4EXEPATH = $(GO4PREFIX)/bin GO4LIBPATH = $(GO4PREFIX)/lib GO4INCPATH = $(GO4PREFIX)/include/go4 else GO4TOPPATH = $(CURDIR) GO4EXEPATH = $(CURDIR)/bin GO4LIBPATH = $(CURDIR)/lib GO4INCPATH = $(CURDIR)/include endif ifdef rpath GO4WITHRPATH = $(rpath) endif ifndef GO4WITHRPATH GO4WITHRPATH = true endif ## one can exclude dependency generation, calling "make nodepend=1" ifdef nodep GO4WITHOUTDEPEND = true endif ifdef nodepend GO4WITHOUTDEPEND = true endif ifndef DOOPTIMIZATION ifdef debug DOOPTIMIZATION = false else DOOPTIMIZATION = true endif endif ifdef ROOTSYS CFG_ROOT_BIN = $(ROOTSYS)/bin/ else ifneq ($(shell which root-config 2>/dev/null),) CFG_ROOT_BIN := $(shell root-config --exec-prefix)/bin/ else ifeq ($(DOING_FASTRULE),) $(error "No ROOT configured found") endif endif endif ifneq ($(CFG_ROOT_BIN),) ROOTVERSION := $(shell $(CFG_ROOT_BIN)root-config --version) ROOTEXEPATH := $(shell $(CFG_ROOT_BIN)root-config --exec-prefix) ROOTINCPATH := $(shell $(CFG_ROOT_BIN)root-config --incdir) ROOTLIBPATH := $(shell $(CFG_ROOT_BIN)root-config --libdir) ROOTCFLAGS := $(shell $(CFG_ROOT_BIN)root-config --cflags) ROOTLIBS := $(shell $(CFG_ROOT_BIN)root-config --libs) ROOTGLIBS := $(shell $(CFG_ROOT_BIN)root-config --glibs) ifeq ($(firstword $(subst ., ,$(ROOTVERSION))),6) ISROOT6 = true endif ifeq ($(ISROOT6),true) # configure X11 compilation ifndef nox11 ifneq ($(shell $(CFG_ROOT_BIN)root-config --has-x11),no) GO4_X11 = true endif endif # configure WebGui compilation ifndef noweb ifeq ($(shell $(CFG_ROOT_BIN)root-config --has-qt5web),yes) GO4_WEB = true endif endif ifeq ($(GO4_OS),Win32) # workaround, exclude MultiProc and -include directives from libs, should be solved by Bertrand soon FILTER_OUT = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v))) # ROOTLIBS := $(call FILTER_OUT,-include, $(ROOTLIBS)) # ROOTGLIBS := $(call FILTER_OUT,-include,$(ROOTGLIBS)) ROOTLIBS := $(call FILTER_OUT,MultiProc, $(ROOTLIBS)) ROOTGLIBS := $(call FILTER_OUT,MultiProc,$(ROOTGLIBS)) endif else # in case of ROOT5 enable only X11 part - not really tested GO4_X11 = true endif ifdef designer GO4_DESIGNER = true endif ifneq ($(wildcard $(ROOTLIBPATH)/libSpectrum.*),) USESPECTRUM = true endif ifneq ($(wildcard $(ROOTLIBPATH)/libXMLIO.*),) USEXMLIO = true endif ifneq ($(GO4_X11),) ifneq ($(wildcard $(ROOTLIBPATH)/libASImage.*),) USEASIMAGE = true endif ifneq ($(wildcard $(ROOTLIBPATH)/libGed.*),) USEGEDEDITOR = true endif endif ROOTBVERSION = $(subst .,,$(subst /,,$(ROOTVERSION))) myeval = $(shell if [ $(1) -gt $(2) ] ; then echo gt ; else echo lt ; fi) # detecting right ROOT version to compile HTTP support ifneq ($(wildcard $(ROOTLIBPATH)/libRHTTP.*),) ifeq ($(ISROOT6),true) ifeq ($(call myeval,$(ROOTBVERSION),60303),gt) USEHTTPSERVER = true endif else ifeq ($(call myeval,$(ROOTBVERSION),53429),gt) USEHTTPSERVER = true endif endif endif endif ifneq ($(withdabc),no) ifdef DABCSYS USEDABC = true DABCLIBPATH = $(DABCSYS)/lib DABCBINPATH = $(DABCSYS)/bin DABCINCPATH = $(DABCSYS)/include endif endif # set this to HDF5 installation, or redefine environment before building go4 #HDF5INSTALL = /misc/adamczew/Go4user/hdf5 ifdef HDF5INSTALL USEHDF5 = true HDF5LIBPATH = $(HDF5INSTALL)/lib HDF5INCLUDEPATH=$(HDF5INSTALL)/include endif #try to detect which QT version is configured if any # when building WebEngine, Qt5 is required ifdef GO4_WEB ifndef QTDIR withqt=5 endif endif ifndef WITHQT ifdef withqt WITHQT=$(withqt) endif endif ifeq ($(WITHQT),no) CFG_WITHOUT_QT = true endif ifeq ($(GO4_OS),Win32) ifndef QTDIR CFG_WITHOUT_QT = true endif endif ifndef CFG_WITHOUT_QT ifeq ($(WITHQT),6) ifneq ($(shell pkg-config --exists Qt6Core --print-errors),) CFG_WITHOUT_QT = true endif else ifeq ($(WITHQT),5) ifneq ($(shell pkg-config --exists Qt5Core Qt5Network --print-errors),) CFG_WITHOUT_QT = true endif else ifdef QTDIR QTPATH = $(QTDIR) QMAKE = $(QTPATH)/bin/qmake QTCXXFLAGS = -DQT_SHARED ifneq ($(shell $(QTDIR)/bin/qmake --version 2>&1 | grep "Qt version 5."),) GO4_QT = 5 else GO4_QT = 6 endif ifeq ($(GO4_OS),Win32) QTCXXFLAGS += -I$(shell cygpath -w $(QTDIR)/include) else QTCXXFLAGS += -I$(QTDIR)/include endif else ifeq ($(shell pkg-config --exists Qt5Core Qt5Network --print-errors),) WITHQT = 5 else ifeq ($(shell pkg-config --exists Qt6Core --print-errors),) WITHQT = 6 else CFG_WITHOUT_QT = true endif endif endif endif endif endif ifndef CFG_WITHOUT_QT ifeq ($(WITHQT), 5) GO4_QT = 5 QTPATH = $(shell pkg-config --variable=prefix Qt5Core) QTCXXFLAGS = $(shell pkg-config --cflags Qt5Core) ifneq ($(wildcard $(QTPATH)/bin/qmake-qt5),) QMAKE = $(QTPATH)/bin/qmake-qt5 else QMAKE = $(QTPATH)/bin/qmake endif endif ifeq ($(WITHQT), 6) GO4_QT = 6 QTPATH = $(shell pkg-config --variable=prefix Qt6Core) QTCXXFLAGS = $(shell pkg-config --cflags Qt6Core) ifneq ($(wildcard $(QTPATH)/bin/qmake6),) QMAKE = $(QTPATH)/bin/qmake6 else QMAKE = $(QTPATH)/bin/qmake-qt6 endif endif endif endif #################### end of configuration discovery ################################# go4login: Makefile @rm -f $@ @echo '########## Automatically generated login file ########' >> $@ @echo '' >> $@ @echo 'case "$$-" in *i*) # Shell is interactive' >> $@ @echo " echo Configure Go4 v$(MAJOR).$(MINOR) at $(GO4TOPPATH)" >> $@ @echo 'esac' >> $@ @echo '' >> $@ @echo '##### ROOT-related settings ###########' >> $@ ifdef ROOTSYS @echo 'export ROOTSYS=$(ROOTSYS)' >> $@ endif @echo 'export PATH=$(ROOTEXEPATH)/bin:$$PATH' >> $@ ifeq ($(GO4_OS),Darwin) @echo 'export DYLD_LIBRARY_PATH=$(ROOTLIBPATH):$$DYLD_LIBRARY_PATH' >> $@ else @echo 'export LD_LIBRARY_PATH=$(ROOTLIBPATH):$$LD_LIBRARY_PATH' >> $@ endif @echo 'export ROOT_INCLUDE_PATH=$(GO4TOPPATH):$(GO4INCPATH):$(ROOTINCPATH):$$ROOT_INCLUDE_PATH' >> $@ @echo 'export PYTHONPATH=$(ROOTLIBPATH):$$PYTHONPATH' >> $@ @echo '' >> $@ ifdef USEDABC @echo '##### DABC-related settings ###########' >> $@ @echo 'export DABCSYS=$(DABCSYS)' >> $@ @echo 'export PATH=$(DABCBINPATH):$$PATH' >> $@ ifeq ($(GO4_OS),Darwin) @echo 'export DYLD_LIBRARY_PATH=$(DABCLIBPATH):$$DYLD_LIBRARY_PATH' >> $@ else @echo 'export LD_LIBRARY_PATH=$(DABCLIBPATH):$$LD_LIBRARY_PATH' >> $@ endif @echo '' >> $@ endif ifdef USEHDF5 @echo '##### HDF5-related settings ###########' >> $@ ifeq ($(GO4_OS),Darwin) @echo 'export DYLD_LIBRARY_PATH=$(HDF5LIBPATH):$$DYLD_LIBRARY_PATH' >> $@ else @echo 'export LD_LIBRARY_PATH=$(HDF5LIBPATH):$$LD_LIBRARY_PATH' >> $@ endif @echo '' >> $@ endif ifdef QTDIR ifeq ($(QTDIR),$(QTPATH)) @echo '##### qt-relevant settings ###########' >> $@ @echo 'export QTDIR=$(QTDIR)' >> $@ @echo 'export PATH=$(QTDIR)/bin:$$PATH' >> $@ ifeq ($(GO4_OS),Darwin) @echo 'export DYLD_LIBRARY_PATH=$(QTDIR)/lib:$$DYLD_LIBRARY_PATH' >> $@ else @echo 'export LD_LIBRARY_PATH=$(QTDIR)/lib:$$LD_LIBRARY_PATH' >> $@ endif @echo '' >> $@ endif endif @echo '##### Go4-related settings ###########' >> $@ @echo 'export GO4SYS=$(GO4TOPPATH)' >> $@ ifeq ($(GO4_OS),Darwin) @echo 'export PATH=$(GO4EXEPATH):$(GO4EXEPATH)/go4.app/Contents/MacOS:$$PATH' >> $@ @echo 'export DYLD_LIBRARY_PATH=.:$(GO4LIBPATH):$$DYLD_LIBRARY_PATH' >> $@ else @echo 'export PATH=$(GO4EXEPATH):$$PATH' >> $@ @echo 'export LD_LIBRARY_PATH=.:$(GO4LIBPATH):$$LD_LIBRARY_PATH' >> $@ endif @echo 'export PYTHONPATH=$(GO4TOPPATH)/python:$$PYTHONPATH' >> $@ @chmod 755 $@ go4login.bat: @rm -f $@ @echo ':: ########## Automatically generated win login file ########' >> $@ @echo '' >> $@ @echo "@echo Configure Go4 v$(MAJOR).$(MINOR) at $(shell cygpath -w $(GO4TOPPATH))" >> $@ @echo '' >> $@ @echo ':: ##### ROOT-relevant settings ###########' >> $@ ifdef ROOTSYS @echo '@set ROOTSYS=$(shell cygpath -w $(ROOTSYS))' >> $@ endif @echo '@set PATH=$(shell cygpath -w $(ROOTEXEPATH)/bin);%PATH%' >> $@ @echo '@set LIB=$(shell cygpath -w $(ROOTLIBPATH));%LIB%' >> $@ @echo '' >> $@ ifdef QTDIR ifeq ($(QTDIR),$(QTPATH)) @echo ':: ##### qt-relevant settings ###########' >> $@ @echo '@set QTDIR=$(shell cygpath -w $(QTDIR))' >> $@ @echo '@set PATH=$(shell cygpath -w $(QTDIR)/bin);%PATH%' >> $@ @echo '@set LIB=$(shell cygpath -w $(QTDIR)/lib);%LIB%' >> $@ @echo '' >> $@ endif endif @echo ':: ##### go4-relevant settings ###########' >> $@ @echo '@set GO4SYS=$(shell cygpath -w $(GO4TOPPATH))' >> $@ @echo '@set PATH=$(shell cygpath -w $(GO4EXEPATH));%PATH%' >> $@ @echo '@set LIB=.;$(shell cygpath -w $(GO4LIBPATH));%LIB%' >> $@ @echo '' >> $@ @echo ':: ##### set correct pathes to MS VC and SDK for analysis compilation ###########' >> $@ ifdef VC_PATH @echo '@set VC_PATH=$(VC_PATH)' >> $@ else @echo '@set VC_PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC' >> $@ endif ifdef SDK_PATH @echo '@set SDK_PATH=$(SDK_PATH)' >> $@ else @echo '@set SDK_PATH=C:\Program Files\Microsoft SDKs\Windows\v6.0A' >> $@ endif ifdef IDE_PATH @echo '@set IDE_PATH=$(IDE_PATH)' >> $@ else @echo '@set IDE_PATH=C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE' >> $@ endif @echo '@set INCLUDE=%VC_PATH%\include;%SDK_PATH%\include;%INCLUDE%' >> $@ @echo '@set LIB=%LIB%;%VC_PATH%\lib;%SDK_PATH%\Lib' >> $@ @echo '@set PATH=%PATH%;%VC_PATH%\bin;%SDK_PATH%\bin;%IDE_PATH%' >> $@ @chmod 755 $@ go4.bat: Makefile @rm -f $@ @echo ':: ########## Automatically generated go4 gui startup file ########' >> $@ @echo '' >> $@ @echo "@echo Starting Go4 v$(MAJOR).$(MINOR) from $(shell cygpath -w $(GO4TOPPATH))" >> $@ @echo '' >> $@ @echo ':: ##### ROOT-relevant settings ###########' >> $@ ifdef ROOTSYS @echo '@set ROOTSYS=$(shell cygpath -w $(ROOTSYS))' >> $@ endif @echo '@set PATH=$(shell cygpath -w $(ROOTEXEPATH)/bin);%PATH%' >> $@ @echo '@set LIB=$(shell cygpath -w $(ROOTLIBPATH));%LIB%' >> $@ @echo '' >> $@ ifdef QTDIR ifeq ($(QTDIR),$(QTPATH)) @echo ':: ##### qt-relevant settings ###########' >> $@ @echo '@set QTDIR=$(shell cygpath -w $(QTDIR))' >> $@ @echo '@set PATH=$(shell cygpath -w $(QTDIR)/bin);%PATH%' >> $@ @echo '@set LIB=$(shell cygpath -w $(QTDIR)/lib);%LIB%' >> $@ @echo '' >> $@ endif endif @echo ':: ##### go4-relevant settings ###########' >> $@ @echo '@set GO4SYS=$(shell cygpath -w $(GO4TOPPATH))' >> $@ @echo '@set PATH=$(shell cygpath -w $(GO4EXEPATH));%PATH%' >> $@ @echo '@set LIB=.;$(shell cygpath -w $(GO4LIBPATH));%LIB%' >> $@ @echo '' >> $@ @echo 'start go4.exe' >> $@ @chmod 755 $@ # generate file only if we do not do something simple like clean $(GO4SYS)/build/Makefile.gener: Makefile @rm -f $@ @echo "#### Generated file, not change ###" >> $@ @echo "GO4_Configured = true" >> $@ @echo "GO4_OS = $(GO4_OS)" >> $@ ifdef GO4_X11 @echo "GO4_X11 = true" >> $@ endif ifdef GO4_WEB @echo "GO4_WEB = true" >> $@ endif ifdef GO4_DESIGNER @echo "GO4_DESIGNER = true" >> $@ endif @echo "GO4PREFIX = $(GO4PREFIX)" >> $@ @echo "GO4TOPPATH = $(GO4TOPPATH)" >> $@ @echo "GO4EXEPATH = $(GO4EXEPATH)" >> $@ @echo "GO4LIBPATH = $(GO4LIBPATH)" >> $@ @echo "GO4INCPATH = $(GO4INCPATH)" >> $@ @echo "GO4WITHRPATH = $(GO4WITHRPATH)" >> $@ @echo "DOOPTIMIZATION = $(DOOPTIMIZATION)" >> $@ ifdef GO4WITHOUTDEPEND @echo "GO4WITHOUTDEPEND = $(GO4WITHOUTDEPEND)" >> $@ endif @echo "" >> $@ @echo "#### ROOT configigurations from root-config" >> $@ @echo "ROOTVERSION = $(ROOTVERSION)" >> $@ @echo "ROOTEXEPATH = $(ROOTEXEPATH)" >> $@ @echo "ROOTINCPATH = $(ROOTINCPATH)" >> $@ @echo "ROOTLIBPATH = $(ROOTLIBPATH)" >> $@ @echo "ROOTCFLAGS = $(ROOTCFLAGS)" >> $@ @echo "ROOTLIBS = $(ROOTLIBS)" >> $@ @echo "ROOTGLIBS = $(ROOTGLIBS)" >> $@ @echo "" >> $@ @echo "#### Available ROOT components" >> $@ ifdef ISROOT6 @echo "ISROOT6 = true" >> $@ endif ifdef USEASIMAGE @echo "USEASIMAGE = true" >> $@ endif ifdef USESPECTRUM @echo "USESPECTRUM = true" >> $@ endif ifdef USEGEDEDITOR @echo "USEGEDEDITOR = true" >> $@ endif ifdef USEXMLIO @echo "USEXMLIO = true" >> $@ endif ifdef USEHTTPSERVER @echo "USEHTTPSERVER = true" >> $@ endif @echo "" >> $@ @echo "### some other packets" >> $@ @echo "" >> $@ ifdef USEDABC @echo "USEDABC = true" >> $@ @echo "DABCLIBPATH = $(DABCLIBPATH)" >> $@ @echo "DABCBINPATH = $(DABCBINPATH)" >> $@ @echo "DABCINCPATH = $(DABCINCPATH)" >> $@ @echo "" >> $@ endif ifdef USEHDF5 @echo "USEHDF5 = true" >> $@ @echo "HDF5LIBPATH = $(HDF5LIBPATH)" >> $@ @echo "HDF5INCLUDEPATH = $(HDF5INCLUDEPATH)" >> $@ endif ifndef CFG_WITHOUT_QT @echo "### Qt relevant settings" >> $@ @echo "GO4_QT = $(GO4_QT)" >> $@ @echo "QTPATH = $(QTPATH)" >> $@ @echo "QTCXXFLAGS = $(QTCXXFLAGS)" >> $@ @echo "QMAKE = $(QMAKE)" >> $@ endif