default: opt opt: $(EXEC:=.opt)\ $(LIB:=.opt)\ $(PLUGIN:=.opt) debug: $(EXEC:=.dbg)\ $(LIB:=.dbg)\ $(PLUGIN:=.dbg) cleandepend: cleandependopt cleandependdbg cleandependopt: @[ -d $(OPTDIR) ] && cd $(OPTDIR); rm -f Makedepend; rm -rf .depend cleandependdbg: @[ -d $(DEBUGDIR) ] && cd $(DEBUGDIR); rm -f Makedepend; rm -rf .depend cleantarget: cleantargetopt cleantargetdbg cleantargetopt: @[ -d $(OPTDIR) ] && cd $(OPTDIR); rm -f $(EXEC) $(LIB) $(PLUGIN) cleantargetdbg: @[ -d $(DEBUGDIR) ] && cd $(DEBUGDIR); rm -f $(EXEC) $(LIB) $(PLUGIN) clean: cleanopt cleandbg cleantmp cleandepend cleanopt: @[ -d $(OPTDIR) ] && cd $(OPTDIR); rm -f $(OBJS) Makedepend; rm -rf .depend cleandbg: @[ -d $(DEBUGDIR) ] && cd $(DEBUGDIR); rm -f $(OBJS) Makedepend; rm -rf .depend clobber: clobberdbg clobberopt clobberopt: rm -rf $(OPTDIR) clobberdbg: rm -rf $(DEBUGDIR) cleanlib: rm -rf $(TOPDIR)/lib/* cleanbin: rm -rf $(TOPDIR)/bin/* cleandoc: rm -rf $(TOPDIR)/doc/* cleantmp: @for f in * ; do [ -d $$f ]||rm -f $$f~; done docs: [ "$(TARGET_BASENAME)" != "" ] && \ mkdir -p $(TOPDIR)/doc/$(TARGET_BASENAME) && \ doc++ -d $(TOPDIR)/doc/doc++/$(TARGET_BASENAME) -H -A \ $(TOPDIR)/include/$(TARGET_BASENAME)/* && \ echo "$(TARGET_BASENAME) HTML documentation created in "\ "$(TOPDIR)/doc/doc++/$(TARGET_BASENAME)" $(EXEC): $(OBJS) $(C++) $(LDFLAGS) $(OBJS) $(LIBS) -o $@ ## Mac OSX makes the distinction between -dynamiclib and -bundle ## causing us to have to make a special case here, rather than ## just redefining the SHARED argument. ifeq ($(OS),Darwin) $(LIB): $(OBJS) $(C++) $(LDFLAGS) $(LIBVERSION) -dynamiclib $(OBJS) $(LIBS) -o $@ $(PLUGIN): $(OBJS) $(C++) $(LDFLAGS) -bundle $(OBJS) $(LIBS) -o $@ else ifeq ($(OS),HP-UX) # we need to explicitly tell the linker the library name - else it will # include paths like ../../../libosg.sl into executables $(LIB) $(PLUGIN) : $(OBJS) $(C++) $(LDFLAGS) $(SHARED) $(OBJS) $(LIBS) -Wl,+h -Wl,$@ -o $@ else $(LIB) $(PLUGIN) : $(OBJS) $(C++) $(LDFLAGS) $(SHARED) $(OBJS) $(LIBS) -o $@ endif # not HP-UX endif # not Darwin $(EXEC:=.dbg) : @[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR) @cd $(DEBUGDIR); \ $(MAKE) -f ../GNUmakefile "DOF=$(DBGF)" TOPDIR=../${TOPDIR} \ THISDIR=../$(THISDIR)\ MAKEDEPEND=Makedepend $(EXEC) @$(MAKE) LNSRC=$(DEBUGDIR)/$(EXEC)$(EXE_EXT) LNDEST=$(BININST)/$(OS)$(ARCH)/$(EXEC)$(EXE_EXT) __link $(LIB:=.dbg) : $(PLUGIN:=.dbg) @[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR) @[ -d "$(TOPDIR)/lib/$(OS)$(ARCH)" ] || mkdir -p $(TOPDIR)/lib/$(OS)$(ARCH) @cd $(DEBUGDIR);\ $(MAKE) -f ../GNUmakefile "DOF=$(DBGF)" TOPDIR=../${TOPDIR} \ THISDIR=../$(THISDIR)\ MAKEDEPEND=Makedepend $(LIB) @$(MAKE) LNSRC=$(DEBUGDIR)/$(LIB) LNDEST=$(LIBINST)/$(OS)$(ARCH)/$(LIB) __link $(PLUGIN:=.dbg) : @[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR) @cd $(DEBUGDIR); \ $(MAKE) -f ../GNUmakefile "DOF=$(DBGF)" TOPDIR=../${TOPDIR} \ THISDIR=../$(THISDIR)\ MAKEDEPEND=Makedepend $(PLUGIN) @$(MAKE) LNSRC=$(DEBUGDIR)/$(PLUGIN) LNDEST=$(PLUGININST)/$(PLUGIN) __link $(EXEC:=.opt) : @[ -d $(OPTDIR) ] || mkdir $(OPTDIR) @cd $(OPTDIR); \ $(MAKE) -f ../GNUmakefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \ THISDIR=../$(THISDIR)\ MAKEDEPEND=Makedepend $(EXEC) @$(MAKE) LNSRC=$(OPTDIR)/$(EXEC)$(EXE_EXT) LNDEST=$(BININST)/$(OS)$(ARCH)/$(EXEC)$(EXE_EXT) __link $(LIB:=.opt) : @[ -d $(OPTDIR) ] || mkdir -p $(OPTDIR) @[ -d "$(TOPDIR)/lib/$(OS)$(ARCH)" ] || mkdir -p $(TOPDIR)/lib/$(OS)$(ARCH) @cd $(OPTDIR);\ $(MAKE) -f ../GNUmakefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \ THISDIR=../$(THISDIR)\ MAKEDEPEND=Makedepend $(LIB) @$(MAKE) LNSRC=$(OPTDIR)/$(LIB) LNDEST=$(LIBINST)/$(OS)$(ARCH)/$(LIB) __link $(PLUGIN:=.opt) : @[ -d $(OPTDIR) ] || mkdir -p $(OPTDIR) @cd $(OPTDIR); \ $(MAKE) -f ../GNUmakefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \ THISDIR=../$(THISDIR)\ MAKEDEPEND=Makedepend $(PLUGIN) @$(MAKE) LNSRC=$(OPTDIR)/$(PLUGIN) LNDEST=$(PLUGININST)/$(PLUGIN) __link ## Revamped method for making Makedepend files ## Under this method, Makedepend simply includes ## all dependency files which are built for each ## individual source file. At update, only the individual ## dependency file is updated rather than the whole of Makedepend Makedepend : $(CXXFILES) $(CFILES) ifeq ($(OS),IRIX) touch $@ else @ touch $@ @if [ ! -d .depend ] ; then \ mkdir .depend;\ depfiles="$+";\ else\ depfiles="$?";\ fi;\ if [ ! -z "$$depfiles" ]; then \ for f in $$depfiles; do \ echo "$(C++) $(DEPARG) $(INC) $$f pipeto .depend/`basename $$f`"; \ $(C++) $(DEPARG) $(INC) $$f > .depend/`basename $$f`; \ grep $$f $@ || echo include .depend/`basename $$f` >> Makedepend ;\ done;\ fi endif ifeq (0,1) ##### OLD WAY : Keep until we've proven that this doesn't trip up ##### on other OS's. Makedepend : $(CXXFILES) $(CFILES) ifeq ($(OS),IRIX) touch $@ else $(C++) $(INC) $(DEPARG) $^ > $(MAKEDEPEND) endif endif .SUFFIXES: .cpp .o .cpp.o: $(C++) $(CXXFLAGS) -c $< depend : $(MAKEDEPEND) __link : @sh $(TOPDIR)/Make/dolink.sh $(TOPDIR) $(LNSRC) $(LNDEST) "$(LINK)" __instfiles : @echo $(INSTFILES) sinclude $(MAKEDEPEND)