# Makefile.tail -- see Makefile.head for usage information ASSRCS := $(ASFILES:%=%.S) CSRCS := $(CFILES:%=%.c) CXXSRCS := $(CXXFILES:%=%.cc) ASOBJS := $(ASFILES:%=$(BUILDDIR)/%.o) GENASOBJS := $(GENASFILES:%=$(BUILDDIR)/%.o) COBJS := $(CFILES:%=$(BUILDDIR)/%.o) GENCOBJS := $(GENCFILES:%=$(BUILDDIR)/%.o) CXXOBJS := $(CXXFILES:%=$(BUILDDIR)/%.o) GENCXXOBJS := $(GENCXXFILES:%=$(BUILDDIR)/%.o) # ASOBJS must come first, so that the kernel entry code can be # at the beginning of the output image. FILES := $(ASFILES) $(CFILES) $(CXXFILES) OBJS := $(ASOBJS) $(COBJS) $(CXXOBJS) $(GENASOBJS) $(GENCOBJS) $(GENCXXOBJS) GENSRCS := $(GENASFILES:%=$(BUILDDIR)/%.S) $(GENCFILES:%=$(BUILDDIR)/%.c) \ $(GENCXXFILES:%=$(BUILDDIR)/%.cc) SRCS := $(ASFILES:%=%.S) $(CFILES:%=%.c) $(CXXFILES:%=%.cc) BUILDCOBJS := $(BUILDCFILES:%=$(BUILDDIR)/%.o) BUILDGENCOBJS := $(BUILDGENCFILES:%=$(BUILDDIR)/%.o) BUILDCXXOBJS := $(BUILDCXXFILES:%=$(BUILDDIR)/%.o) BUILDGENCXXOBJS := $(BUILDGENCXXFILES:%=$(BUILDDIR)/%.o) BUILDOBJS := $(BUILDCOBJS) $(BUILDCXXOBJS) $(BUILDGENCOBJS) $(BUILDGENCXXOBJS) BUILDGENSRCS := $(BUILDGENCFILES:%=$(BUILDDIR)/%.c) $(BUILDGENCXXFILES:%=$(BUILDDIR)/%.cc) BUILDSRCS := $(BUILDCFILES:%=%.c) $(BUILDCXXFILES:%=%.cc) $(ASOBJS): $(BUILDDIR)/%.o: %.S @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(CC) $(ASFLAGS) -c -o "$@" "$<" $(COBJS): $(BUILDDIR)/%.o: %.c @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(CC) $(CFLAGS) -c -o "$@" "$<" $(CXXOBJS): $(BUILDDIR)/%.o: %.cc @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(CXX) $(CXXFLAGS) -c -o "$@" "$<" $(GENASOBJS): %.o: %.S @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(CC) $(ASFLAGS) -c -o "$@" "$<" $(GENCOBJS): %.o: %.c @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(CC) $(CFLAGS) -c -o "$@" "$<" $(GENCXXOBJS): %.o: %.cc @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(CXX) $(CXXFLAGS) -c -o "$@" "$<" $(BUILDCOBJS): $(BUILDDIR)/%.o: %.c @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(BUILDCC) $(BUILDCFLAGS) -c -o "$@" "$<" $(BUILDCXXOBJS): $(BUILDDIR)/%.o: %.cc @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(BUILDCXX) $(BUILDCXXFLAGS) -c -o "$@" "$<" $(BUILDGENCOBJS): %.o: %.c @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(BUILDCC) $(BUILDCFLAGS) -c -o "$@" "$<" $(BUILDGENCXXOBJS): %.o: %.cc @echo $(COMP): "$<" @$(MKDIR) $(dir $@) @$(BUILDCXX) $(BUILDCXXFLAGS) -c -o "$@" "$<" clean: $(EXTRACLEAN) $(RM) $(foreach dir,$(DIRS),$(BUILDDIR)/$(dir)*.o) $(RMDIR) $(BUILDDIR)/include/servers $(RMDIR) $(TARGETS) $(GENSRCS) $(BUILDGENSRCS) distclean: clean $(EXTRADISTCLEAN) $(RM) .gdb_history $(RMDIR) $(BUILDDIR) # Every .o file which has a corresponding .cdl file will # depend on the server stubs. SERVERS := $(wildcard $(FILES:%=%.cdl)) SERVERS := $(SERVERS:%.cdl=%) $(SERVERS:%=$(SERVERDIR)/%): $(SERVERDIR)/%: %.cdl $(IFACES) @echo $(COMP): "$<" @$(RMDIR) "$@" @if ! $(IDLC) -t $(ARCH) -l c++ -r -i "$(IFACES)" -o "$@" "$<"; then \ $(RMDIR) "$@"; \ false; \ fi .DELETE_ON_ERROR: $(SERVERS:%=$(SERVERDIR)/%) $(SERVERS:%=%.cc): %.cc: $(SERVERDIR)/% servers: $(SERVERS:%=$(SERVERDIR)/%) ifneq ($(NODEPS),y) dep: servers $(PREDEP) @echo $(COMP): Generating dependencies @$(RM) "$(BUILDDIR)"/.depend @$(MKDIR) "$(BUILDDIR)" @$(TOUCH) "$(BUILDDIR)"/.depend @for i in $(SRCS); do if [ -f "$$i" ]; then \ OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \ $(CXX) $(CXXFLAGS) -DMAKEDEP -M -MT "$(BUILDDIR)/$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \ fi; done @for i in $(GENSRCS); do if [ -f "$$i" ]; then \ OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \ $(CXX) $(CXXFLAGS) -DMAKEDEP -M -MT "$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \ fi; done @for i in $(BUILDSRCS); do if [ -f "$$i" ]; then \ OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \ $(BUILDCXX) $(BUILDCXXFLAGS) -DMAKEDEP -M -MT "$(BUILDDIR)/$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \ fi; done @for i in $(BUILDGENSRCS); do if [ -f "$$i" ]; then \ OBJ=`echo "$$i" | sed s/\\.\[^.\]*$$//`.o; \ $(BUILDCXX) $(BUILDCXXFLAGS) -DMAKEDEP -M -MT "$$OBJ" "$$i" >> "$(BUILDDIR)"/.depend; \ fi; done @for i in $(SERVERS); do \ $(IDLC) -M -l c++ -r -i "$(IFACES)" -o "$(SERVERDIR)/$$i" \ "$$i.cdl" >> "$(BUILDDIR)"/.depend; \ done depend: dep ifeq ($(BUILDDIR)/.depend,$(wildcard $(BUILDDIR)/.depend)) include $(BUILDDIR)/.depend default: $(TARGETS) else rerun: dep @$(MAKE) default: rerun endif else dep: depend: default: $(TARGETS) endif