# 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: ### lddiropt = $(1:%=-Wl,-rpath,%) $(1:%=-L%) LD = g++ LDFLAGS = -Wl,--no-as-needed $(call lddiropt,$(DABC_FULLDLLPATH) $(LDDIRS)) SOFLAGS = -shared -Wl,-soname, AR = ar ARFLAGS = cr LIBS_CORESET = -L$(DABCDLLPATH) -lDabcBase #### File system operations: ### LN = ln -sf RM = rm -f MV = mv #### Compilers: ## CXX = g++ CC = gcc #### Version number ### DABC_VERSION = 2.6.7 ## 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) #################### 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 -lrt DABC_FULLDLLPATH = $(CURDIR)/$(DABCDLLPATH) DABC_FULLBINPATH = $(CURDIR)/$(DABCBINPATH) DABC_FULLINCPATH = $(CURDIR)/$(DABCINCPATH) ### detect ROOT ifndef noroot 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 endif ifdef DABC_ISROOT DABC_ROOTINCDIR = $(shell $(DABC_ROOTBIN)root-config --incdir) DABC_ROOTLIBDIR = $(shell $(DABC_ROOTBIN)root-config --libdir) DABC_ROOTLIBS = $(shell $(DABC_ROOTBIN)root-config --libs) ifneq ($(wildcard $(DABC_ROOTLIBDIR)/libASImage.*),) DABC_ROOT_ASIMAGE = true DABC_ROOTLIBS += -lASImage else DABC_ROOT_ASIMAGE = false endif ifneq ($(wildcard $(DABC_ROOTLIBDIR)/libRHTTP.*),) #ignore ROOT classes for a while DABC_ROOT_RHHTP = false else DABC_ROOT_RHHTP = false endif endif ### detect FASTCGI ifndef DABC_FASTCGI ifneq ($(wildcard /usr/include/fastcgi/fcgiapp.h),) DABC_FASTCGI = true DABC_FASTCGI_INC = /usr/include/fastcgi DABC_FASTCGI_LIB = -lfcgi else ifneq ($(wildcard /usr/include/fcgiapp.h),) DABC_FASTCGI = true DABC_FASTCGI_LIB = -lfcgi endif endif endif ### detect ZLIB ifndef DABC_ZLIB ifneq ($(wildcard /usr/include/zlib.h),) DABC_ZLIB = true DABC_ZLIB_INC = DABC_ZLIB_LIB = -lz endif endif ### detect EPICS ifndef noepics ifndef DABC_EPICS ifndef DABC_EPICS_LIBDIR ifdef DABC_64BIT DABC_EPICS_LIBDIR = $(EPICS_EXTENSIONS)/lib/linux-x86_64 else DABC_EPICS_LIBDIR = $(EPICS_EXTENSIONS)/lib/linux-x86 endif endif ifneq ($(wildcard $(DABC_EPICS_LIBDIR)/libezca.*),) DABC_EPICS = true DABC_EPICS_INCDIR = $(EPICS_BASE)/include $(EPICS_BASE)/include/os/Linux $(EPICS_EXTENSIONS)/include endif endif endif ### detect DIM ifndef nodim ifndef DABC_DIM ifdef DIMDIR ifneq ($(wildcard $(DIMDIR)/linux/libdim.*),) ifneq ($(wildcard $(DIMDIR)/dim/dim.h),) DABC_DIM = true DABC_DIMDIR = $(DIMDIR) DABC_DIM_LIBDIR = $(DIMDIR)/linux DABC_DIM_INCDIR = $(DIMDIR)/dim endif endif endif endif endif ############ detect FESA ############## ifndef nofesa ifndef DABC_FESA ifndef RDA_HOME RDA_HOME = /opt/fesa/fesa-3rdparty/1.0.0 endif ifneq ($(wildcard $(RDA_HOME)/*),) DABC_FESA = true DABC_FESA_INCDIR = $(RDA_HOME)/include DABC_FESA_LIBS = -lomniORB4 -lomnithread -lcrypto -lcurl -lpthread DABC_FESA_SLIBS = $(RDA_HOME)/lib/x86_64/libcmw-rda.a \ $(RDA_HOME)/lib/x86_64/libcmw-rbac.a \ $(RDA_HOME)/lib/x86_64/libcmw-directory-client.a \ $(RDA_HOME)/lib/x86_64/libcmw-serializer.a \ $(RDA_HOME)/lib/x86_64/libcmw-log-stomp.a \ $(RDA_HOME)/lib/x86_64/libcmw-stomp.a \ $(RDA_HOME)/lib/x86_64/libcmw-log.a \ $(RDA_HOME)/lib/x86_64/libcmw-util.a \ $(RDA_HOME)/lib/x86_64/libiceutil.a endif endif 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 "DABC_FULLDLLPATH = $(DABC_FULLDLLPATH)" >> $@ @echo "DABC_FULLBINPATH = $(DABC_FULLBINPATH)" >> $@ @echo "DABC_FULLINCPATH = $(DABC_FULLINCPATH)" >> $@ 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_ROOTLIBDIR = $(DABC_ROOTLIBDIR)" >> $@ @echo "DABC_ROOTLIBS = $(DABC_ROOTLIBS)" >> $@ @echo "DABC_ROOT_ASIMAGE = $(DABC_ROOT_ASIMAGE)" >> $@ @echo "DABC_ROOT_RHHTP = $(DABC_ROOT_RHHTP)" >> $@ endif ifdef DABC_FASTCGI @echo "" >> $@ @echo "DABC_FASTCGI = $(DABC_FASTCGI)" >> $@ @echo "DABC_FASTCGI_INC = $(DABC_FASTCGI_INC)" >> $@ @echo "DABC_FASTCGI_LIB = $(DABC_FASTCGI_LIB)" >> $@ endif ifdef DABC_ZLIB @echo "" >> $@ @echo "DABC_ZLIB = $(DABC_ZLIB)" >> $@ @echo "DABC_ZLIB_INC = $(DABC_ZLIB_INC)" >> $@ @echo "DABC_ZLIB_LIB = $(DABC_ZLIB_LIB)" >> $@ endif ifdef DABC_EPICS @echo "" >> $@ @echo "DABC_EPICS = $(DABC_EPICS)" >> $@ @echo "DABC_EPICS_LIBDIR = $(DABC_EPICS_LIBDIR)" >> $@ @echo "DABC_EPICS_INCDIR = $(DABC_EPICS_INCDIR)" >> $@ endif ifdef DABC_DIM @echo "" >> $@ @echo "DABC_DIM = $(DABC_DIM)" >> $@ @echo "DABC_DIM_LIBDIR = $(DABC_DIM_LIBDIR)" >> $@ @echo "DABC_DIM_INCDIR = $(DABC_DIM_INCDIR)" >> $@ endif ifdef DABC_FESA @echo "" >> $@ @echo "DABC_FESA = $(DABC_FESA)" >> $@ @echo "DABC_FESA_INCDIR = $(DABC_FESA_INCDIR)" >> $@ @echo "DABC_FESA_LIBS = $(DABC_FESA_LIBS)" >> $@ @echo "DABC_FESA_SLIBS = $(DABC_FESA_SLIBS)" >> $@ endif endif endif #################### End of generation of Makefile.gener file ########################### # 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) DABCMBS_LIBNAME = $(LIB_PREFIX)DabcMbs DABCMBS_LIB = $(DABCDLLPATH)/$(DABCMBS_LIBNAME).$(DllSuf) DABCHADAQ_LIBNAME = $(LIB_PREFIX)DabcHadaq DABCHADAQ_LIB = $(DABCDLLPATH)/$(DABCHADAQ_LIBNAME).$(DllSuf) DABCVERBS_LIBNAME = $(LIB_PREFIX)DabcVerbs DABCVERBS_LIB = $(DABCDLLPATH)/$(DABCVERBS_LIBNAME).$(DllSuf) ifdef noroot DABC_ISROOT:= endif ifdef DABC_ISROOT DABC_ROOTVERSION = $(shell $(DABC_ROOTBIN)root-config --version) DABC_ROOTIVERSION = $(subst /,,$(subst .,,$(DABC_ROOTVERSION))) DABC_ROOTMAJORVER = $(firstword $(subst ., ,$(DABC_ROOTVERSION))) DABCROOT_LIBNAME = $(LIB_PREFIX)DabcRoot DABCROOT_LIB = $(TGTDLLPATH)/$(DABCROOT_LIBNAME).$(DllSuf) DABCROOT_MAP = $(TGTDLLPATH)/$(DABCROOT_LIBNAME).rootmap DABC_ROOTCINT = @$(DABCSYS)/build/makedict.sh $(DABC_ROOTMAJORVER) $(DABC_ROOTSYS) $(DABC_ROOTBIN) "$(INCLUDES:%=-I%) -I$(DABCSYS)/include $(DEFINITIONS:%=-D%)" $@ DABC_ROOTMAP = @$(DABCSYS)/build/makemap.sh $(DABC_ROOTMAJORVER) $(DABC_ROOTSYS) $(DABC_ROOTBIN) "$(INCLUDES:%=-I%) -I$(DABCSYS)/include $(DEFINITIONS:%=-D%)" $@ else DABC_ROOTCINT = echo "ROOT is not configured - disctionary $@ cannot be generated"; endif all: libs exes apps libs:: exes:: clean:: endif