# make same trick as in C includes to avoid multiple include ifndef Dabc_Makefile_config Dabc_Makefile_config = true #rules which does not require any dependency checks FASTRULES = package clean clean-svn .PHONY: all libs exes apps $(FASTRULES) ifeq ($(findstring $(MAKECMDGOALS), $(FASTRULES)),) -include $(DABCSYS)/config/Makefile.gener else # this definitions required anyway DABC_OS = "Linux" DABC_ARCH = $(shell uname -m) BLD_DIR = $(DABC_ARCH) endif ### dabc pathes: ifndef DABCSYS $(error "DABCSYS is not set correctly") endif ifdef DABCMAINMAKE DABCDLLPATH = lib DABCINCPATH = include DABCBINPATH = bin TGTDLLPATH = lib TGTBINPATH = bin else DABCDLLPATH = $(DABCSYS)/lib DABCINCPATH = $(DABCSYS)/include DABCBINPATH = $(DABCSYS)/bin TGTDLLPATH = $(BLD_DIR)/$(_topdir_)lib TGTBINPATH = $(BLD_DIR)/$(_topdir_)bin endif #in this variable one should put directories, which should be created/destroyed by make CREATE_DIRS = $(TGTDLLPATH) #list of directories with different tests APPLICATIONS_DIRS = #### File suffixes: ### ObjSuf = o SrcSuf = cxx CSuf = c HedSuf = h ExeSuf = DllSuf = so DepSuf = d ArSuf = a OutPutOpt = -o ##### prefixes LIB_PREFIX = lib #### Linker definitions: ### LD = g++ LDFLAGS = -Wl,--no-as-needed $(LDDIRS:%=-Wl,-rpath,%) $(LDDIRS:%=-L%) SOFLAGS = -shared -Wl,-soname, AR = ar ARFLAGS = cr #### File system operations: ### LN = ln -sf RM = rm -f MV = mv #### Compilers: ## CXX = g++ CC = gcc #### Version number ### DABC_VERSION = 2.3.0 ## This two compiler flags are alternative ## When DOOPTIMIZATION = false, first is used otherwise second DEBUGMODE = -g OPTIMIZEMODE = -O2 # switch on optimization for all object files DOOPTIMIZATION = true DEFINITIONS = INCLUDES = C_INCLUDES = C_DEFINITIONS = ifdef debug DEFINITIONS += DEBUGLEVEL=$(debug) DOOPTIMIZATION = false endif WARNINGS = -Wall OPTIONS = -fPIC ifeq ($(shell uname -m),x86_64) OPTIONS += -m64 DABC_64BIT = TRUE endif #### Combine compilers flags in one variable: ### CXXFLAGS = $(WARNINGS) $(OPTIONS) $(DEFINITIONS:%=-D%) $(INCLUDES:%=-I%) -I$(DABCINCPATH) CFLAGS = $(OPTIONS) $(C_DEFINITIONS:%=-D%) $(C_INCLUDES:%=-I%) # build scripts MakeDepend = $(DABCSYS)/build/depend.sh $(ObjSuf) $(DepSuf) "$(BLD_DIR)" MakeLib = $(DABCSYS)/build/makelib.sh $(LD) "$(RM)" $(MV) "$(LN)" "$(LDFLAGS)" "$(SOFLAGS)" $(DllSuf) CleanLib = $(DABCSYS)/build/cleanlib.sh "$(DABC_OS)" $(DllSuf) $(VERSSUF) # libs DABCBASE_LIBNAME = $(LIB_PREFIX)DabcBase DABCBASE_LIB = $(DABCDLLPATH)/$(DABCBASE_LIBNAME).$(DllSuf) DABCBASE_SLIB = $(DABCDLLPATH)/$(DABCBASE_LIBNAME).$(ArSuf) DABCSOCKET_LIBNAME = $(LIB_PREFIX)DabcSocket DABCSOCKET_LIB = $(DABCDLLPATH)/$(DABCSOCKET_LIBNAME).$(DllSuf) DABCSOCKET_SLIB = $(DABCDLLPATH)/$(DABCSOCKET_LIBNAME).$(ArSuf) DABCSCTRL_LIBNAME = $(LIB_PREFIX)DabcSctrl DABCSCTRL_LIB = $(DABCDLLPATH)/$(DABCSCTRL_LIBNAME).$(DllSuf) DABCSCTRL_SLIB = $(DABCDLLPATH)/$(DABCSCTRL_LIBNAME).$(ArSuf) #################### This is generation of Makefile.gener file ########################### ifdef DABCMAINMAKE ifndef DABC_Configured DABC_OS = "Linux" DABC_ARCH = $(shell uname -m) BLD_DIR = $(DABC_ARCH) LIBS_SYSSET = -lpthread -ldl LIBS_CORESET = -L$(DABCDLLPATH) -lDabcBase ifdef ROOTSYS DABC_ISROOT = true DABC_ROOTBIN = $(ROOTSYS)/bin/ DABC_ROOTSYS = $(ROOTSYS) else ifneq ($(shell which root-config 2>/dev/null),) DABC_ISROOT = true DABC_ROOTSYS:=$(shell root-config --prefix) DABC_ROOTBIN:=$(shell root-config --exec-prefix)/bin/ $(warning define ROOT binaries in $(DABC_ROOTBIN)) endif endif ifdef DABC_ISROOT DABC_ROOTINCDIR = $(shell $(DABC_ROOTBIN)root-config --incdir) DABC_ROOTLIBS = $(shell $(DABC_ROOTBIN)root-config --libs) endif $(DABCSYS)/config/Makefile.gener : $(DABCSYS)/config/Makefile.config @rm -f $@ @echo "#### Generated file, change with care ###" >> $@ @echo "DABC_Configured = true" >> $@ @echo "DABC_OS = $(DABC_OS)" >> $@ @echo "DABC_ARCH = $(DABC_ARCH)" >> $@ @echo "BLD_DIR = $(BLD_DIR)" >> $@ @echo "LIBS_SYSSET = $(LIBS_SYSSET)" >> $@ @echo "LIBS_CORESET = $(LIBS_CORESET)" >> $@ ifdef DABC_ISROOT @echo "" >> $@ @echo "DABC_ISROOT = $(DABC_ISROOT)" >> $@ @echo "DABC_ROOTSYS = $(DABC_ROOTSYS)" >> $@ @echo "DABC_ROOTBIN = $(DABC_ROOTBIN)" >> $@ @echo "DABC_ROOTINCDIR = $(DABC_ROOTINCDIR)" >> $@ @echo "DABC_ROOTLIBS = $(DABC_ROOTLIBS)" >> $@ endif endif endif #################### End of generation of Makefile.gener file ########################### ifdef DABC_ISROOT ROOTCINTDABC = echo "Generating dictionary $@ ..."; if [ "$$ROOTSYS" = "" ]; then export ROOTSYS=$(DABC_ROOTSYS); fi; $(DABC_ROOTBIN)rootcint -f $@ -c -p $(INCLUDES:%=-I%) -I$(DABCSYS)/include $(DEFINITIONS:%=-D%) endif all: libs exes apps libs:: exes:: clean:: endif