177 lines
4.2 KiB
Plaintext
177 lines
4.2 KiB
Plaintext
#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
|