# $Id$ INCREC +=$(RECTYPES) $(MENUS) INSTALL_PROD = $(PROD:%= $(INSTALL_BIN)/%) INSTALL_LIBS = $(LIBNAME:%= $(INSTALL_BIN)/%) INSTALL_LIBS_CXX = $(LIBNAME_CXX:%= $(INSTALL_BIN)/%) INSTALL_INC = $(INC:%= $(INSTALL_INCLUDE)/%) INSTALL_OSINCLUDE = $(INSTALL_INCLUDE)/os/vxWorks INSTALL_OSINC = $(OSINC:%= $(INSTALL_OSINCLUDE)/%) INSTALL_INCREC = $(INCREC:%= $(INSTALL_INCLUDE)/%) MANLIST = 1 2 3 4 5 6 7 8 9 INSTALL_MANS = $(foreach n, \ $(MANLIST),$(INSTALL_MAN)/man$(n) $(MAN$(n):%= $(INSTALL_MAN)/man$(n)/%)) INSTALL_DOCS = $(DOCS:%= $(INSTALL_DOC)/%) INSTALL_SCRIPTS = $(SCRIPTS:%= $(INSTALL_BIN)/%) INSTALL_INSTALLS = $(INSTALLS:%= $(INSTALL_BIN)/%) INSTALL_BPTS = $(BPTS:%= $(INSTALL_DBD)/%) INSTALL_DBS = $(DBDINSTALL:%= $(INSTALL_DBD)/%)\ $(RECTYPES:%.h= $(INSTALL_DBD)/%.dbd)\ $(MENUS:%.h= $(INSTALL_DBD)/%.dbd) INSTALL_DBDNAME = $(DBDNAME:%= $(INSTALL_DBD)/%) MAN_DIRECTORY_TARGETS = $(foreach n, $(MANLIST),$(INSTALL_MAN)/man$(n)) DIRECTORY_TARGETS = $(INSTALL_INCLUDE) $(INSTALL_DOC) $(INSTALL_DBD) \ $(INSTALL_OSINCLUDE) $(INSTALL_INCLUDE)/os \ $(INSTALL_LOCATION_BIN) $(INSTALL_BIN) \ $(MAN_DIRECTORY_TARGETS) $(INSTALL_MAN) all:: install rebuild:: clean install pre_build:: build:: pre_build $(MENUS) $(RECTYPES) $(BPTS)\ $(LIBNAME) $(LIBNAME_CXX) $(TARGETS) $(PROD) $(DBDNAME) inc:: $(INSTALL_INCLUDE) $(INSTALL_INC) $(INSTALL_INCLUDE)/os \ $(INSTALL_OSINCLUDE) $(INSTALL_OSINC) install:: inc buildInstall buildInstall :: build $(INSTALL_INCREC)\ $(INSTALL_LOCATION_BIN) \ $(INSTALL_BIN) $(INSTALL_LIBS) $(INSTALL_LIBS_CXX) \ $(TARGETS) $(INSTALL_PROD) \ $(INSTALL_MAN) $(INSTALL_MANS)\ $(INSTALL_DOC) $(INSTALL_DOCS) \ $(INSTALL_SCRIPTS) $(INSTALL_INSTALLS)\ $(INSTALL_DBD) $(INSTALL_DBS) $(INSTALL_BPTS) \ $(INSTALL_DBDNAME) ifdef BIN_INSTALLS buildInstall :: binInstalls endif depends:: $(SRCS.c) $(SRCS.cc) ifdef SRCS echo you have a SRCS in your Makefile exit 2 endif ifdef SRCS.c $(DEPENDS_RULE.c) endif ifdef SRCS.cc $(DEPENDS_RULE.cc) endif clean:: @echo "Cleaning" @$(RM) *.i *.o *.a $(TARGETS) $(PROD) $(LIBNAME) $(INC) \ $(DBDINSTALL) $(MENUS) $(RECTYPES) $(BPTS) $(DBDNAME) $(DIRECTORY_TARGETS) : @$(MKDIR) $@ # The order of the following dependencies is # VERY IMPORTANT !!!! %: %.o $(RM) $@ $(LINK.c) $@ $< $(LDLIBS) #$(PROD): $(OBJS) # $(RM) $@ # $(LINK.c) $@ $(OBJS) %.o: %.c $(RM) $@ $(COMPILE.c) $< %.o: ../%.c $(RM) $@ $(COMPILE.c) $< %.o: %.cc $(RM) $@ $(COMPILE.cc) $< %.o: ../%.cc $(RM) $@ $(COMPILE.cc) $< # # rename the y.tab.h file only if we # are creating it # %.h %.c: ../%.y $(RM) $*.c y.tab.c ifeq ($(findstring -d, $(YACCOPT)),-d) $(RM) $*.h y.tab.h endif $(YACC) $(YACCOPT) $< $(MV) y.tab.c $*.c ifeq ($(findstring -d, $(YACCOPT)),-d) $(MV) y.tab.h $*.h endif %.c: ../%.l $(RM) lex.yy.c $(LEX) $(LEXOPT) $< $(RM) $@ $(MV) lex.yy.c $@ #state notation language rules %.c: ../%.st @echo "preprocessing $*.st" @$(RM) $*.i $(CPP) $(CPPFLAGS) $< $*.i @echo "converting $*.i" @$(RM) $@ $(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.i %.c: %.stt @echo "converting $< @$(RM) $@ $(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $< # Capfast Rules: %.db: %.edf $(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) $< %.db: ../%.edf $(E2DB) $(E2DB_SYSFLAGS) $(E2DB_FLAGS) $< %.edf: ../%.sch $(DEPSCHS) @if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi $(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $< # Mangen Rule: %.1:% $(RM) $( $@ $(LIBNAME): $(LIBOBJS) @echo Building library $@ @$(RM) $@ $(LINK.c) $@ $(LIBOBJS) $(LDLIBS) $(LIBNAME_CXX): $(LIBOBJS_CXX) @echo Building CXX library $@ @$(RM) $@ $(LINK.cc) $@ $(LIBOBJS_CXX) $(CXXLDLIBS) $(INSTALL_BIN)/%: % @echo "Installing $@" @$(INSTALL) -m 555 $< $(INSTALL_BIN) $(INSTALL_BIN)/%: ../% @echo "Installing $@" @$(INSTALL) -m 555 $< $(INSTALL_BIN) # # avoid confusing circular dependency message when # INSTALL_BIN and EPICS_BASE_BIN are the same (in base) # ifneq ($(INSTALL_BIN),$(EPICS_BASE_BIN)) $(INSTALL_BIN)/%: $(EPICS_BASE_BIN)/% @echo "Installing $@" @$(INSTALL) -m 555 $< $(INSTALL_BIN) endif $(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : % @echo "Installing $@" @$(INSTALL) -m 644 $< $(@D) $(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : ../% @echo "Installing $@" @$(INSTALL) -m 644 $< $(@D) $(INSTALL_INCLUDE)/%: % @echo "Installing $@" @$(INSTALL) -m 644 $< $(@D) $(INSTALL_INCLUDE)/%: ../% @echo "Installing $@" @$(INSTALL) -m 644 $< $(@D) $(INSTALL_DOC)/%: % @echo "Installing $@" @$(INSTALL) -m 644 $< $(INSTALL_DOC) $(INSTALL_DOC)/%: ../% @echo "Installing $@" @$(INSTALL) -m 644 $< $(INSTALL_DOC) .PRECIOUS: %.o %.c .PHONY:: all inc depends build install pre_build clean rebuild buildInstall binInstalls -include .DEPENDS ifneq (,$(wildcard ../baseLIBOBJS)) $(LIBNAME): ../baseLIBOBJS endif $(LIBNAME): ../Makefile.Vx $(DBDNAME): ../base.dbd $(RECTYPES:%.h=../%.dbd)