#RULES.Db include $(CONFIG)/RULES ifdef T_A MAKEBPT = $(EPICS_BASE_HOST_BIN)/makeBpt$(HOSTEXE) DBEXPAND = $(EPICS_BASE_HOST_BIN)/dbExpand$(HOSTEXE) DBST = dbst MAKEDBDEPENDS = $(PERL) $(TOP)/configure/makeDbDepends.pl REPLACEVAR = $(PERL) $(TOP)/configure/replaceVAR.pl ifndef WIN32 TOUCH = touch else TOUCH = type NUL >> endif INSTALL_BPTS = $(BPTS:%= $(INSTALL_DBD)/%) INSTALL_DBS = $(DBDINSTALL:%= $(INSTALL_DBD)/%) INSTALL_DBDNAME = $(DBDNAME:%= $(INSTALL_DBD)/%) INSTALL_DATA=$(INSTALLDB:%=$(INSTALL_DB)/%) all: install inc: $(INSTALL_DBS) rebuild: clean install install: inc buildInstall buildInstall: build $(INSTALL_BPTS) $(INSTALL_DATA) clean:: @echo "Cleaning" @$(RM) $(DB) $(DBDNAME) *.template *.substitutions *.db.raw \ *.db-stamp *.edf esiread.cnf depends: ##################################################### "Foreign" templates TEMPLATE_LINKS = $(filter-out $(notdir $(USES_TEMPLATE)), $(USES_TEMPLATE)) TEMPLATE_FILES = $(filter $(notdir $(USES_TEMPLATE)), $(USES_TEMPLATE)) DB_STAMP = $(patsubst %.db, %.db-stamp, $(DB)) DB_REALTARGET = $(patsubst %.db-stamp, %.db, $@) ifneq '$(TEMPLATE_LINKS)' '' build: $(notdir $(TEMPLATE_LINKS)) endif build: $(INSTALL_DBDNAME) $(TEMPLATE_FILES) $(DB_STAMP) $(notdir $(TEMPLATE_LINKS)): %.template: ifndef WIN32 @$(RM) $(notdir $(TEMPLATE_LINKS)) ln -s $(TEMPLATE_LINKS) . else @$(RM) $(notdir $(TEMPLATE_LINKS)) $(CP) $(TEMPLATE_LINKS) . endif ##################################################### Inflated or plain databases $(INSTALL_DB)/%.db: %.db-stamp @echo "Installing database $@" @$(INSTALL) -d -m 644 $(patsubst %.db-stamp, %.db, $<) $(@D) # Must have DBDNAME defined to use dbst optimization ifndef DBDNAME DB_OPT = NO endif # dbst based database optimization ifeq '$(DB_OPT)' 'YES' .PRECIOUS: %.db.raw %.db-stamp: %.db.raw $(INSTALL_DBD)/$(DBDNAME) @echo "Optimizing database $@" $(DBST) $(INSTALL_DBD)/$(DBDNAME) $< -d > $(DB_REALTARGET) @$(TOUCH) $@ %.db-stamp: %.t.db.raw $(INSTALL_DBD)/$(DBDNAME) @echo "Optimizing database $@" $(DBST) $(INSTALL_DBD)/$(DBDNAME) $< -d > $(DB_REALTARGET) @$(TOUCH) $@ else # NO optimization => move it and keep a stamp %.db-stamp: %.db.raw @$(MV) $< $(DB_REALTARGET) @$(TOUCH) $@ @$(TOUCH) $< %.db-stamp: %.t.db.raw @$(MV) $< $(DB_REALTARGET) @$(TOUCH) $@ @$(TOUCH) $< endif %.t.db.raw: %.substitutions @echo "Inflating database from $<" @$(RM) $@ @$(MSI) -S $< > $@ ##################################################### CapFast filter %.edf: ../%.sch $(DEPSCHS) @if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi $(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $< ##################################################### Substitution files $(INSTALL_DB)/%.substitutions: %.substitutions @echo "Installing $@" @$(INSTALL) -d -m 644 $(@F) $(@D) %.substitutions: ../%.substitutions @$(CP) $< $@ ifdef CREATESUBSTITUTIONS %.substitutions: @$(CREATESUBSTITUTIONS) $* endif # Better make it PRECIOUS (to get around make bug) .PRECIOUS: %.substitutions ##################################################### Template databases # Installed template files (dbLoadTemplate() on IOC side) $(INSTALL_DB)/%.template: %.template @echo "Installing $@" @$(INSTALL) -d -m 644 $(@F) $(@D) %.template: ../%.template @$(CP) $< $@ %.template: %.edf $(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $< @$(REPLACEVAR) < $@.VAR > $@ @$(RM) $@.VAR ##################################################### Flat databases %.db.raw: ../%.db $(CP) $< $@ %.db.raw: %.edf $(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) -n $@.VAR $< @$(REPLACEVAR) < $@.VAR > $@ @$(RM) $@.VAR ##################################################### DBD stuff $(INSTALL_DBD)/%: % @echo "Installing $@" @$(INSTALL) -d -m 644 $< $(@D) $(INSTALL_DBD)/%: ../% @echo "Installing $@" @$(INSTALL) -d -m 644 $< $(@D) bpt%.dbd: ../bpt%.data $(RM) $@ $(MAKEBPT) $< ifdef DBDEXPAND $(DBDNAME): ../$(DBDEXPAND) @echo "Expanding dbd" @$(RM) $@ $(DBEXPAND) $(USR_DBDFLAGS) $< > $@ endif ##################################################### Dependencies DEPENDS: $(filter $(patsubst %.db, %.substitutions, $(DB)), $(wildcard *.substitutions)) @echo "Making template database dependencies" @$(MAKEDBDEPENDS) $^ -include DEPENDS endif