260 lines
7.7 KiB
Plaintext
260 lines
7.7 KiB
Plaintext
|
|
default: opt
|
|
|
|
opt: \
|
|
$(EXEC:=.opt) \
|
|
$(LIB:=.opt) \
|
|
$(WRAPPER:=.opt) \
|
|
$(PLUGIN:=.opt) \
|
|
|
|
debug: \
|
|
$(EXEC:=.dbg) \
|
|
$(LIB:=.dbg) \
|
|
$(WRAPPER:=.dbg) \
|
|
$(PLUGIN:=.dbg) \
|
|
|
|
static: \
|
|
$(LIB:.$(LIB_EXT)=.static) \
|
|
$(PLUGIN:.$(PLUGIN_EXT)=.static) \
|
|
|
|
staticdebug: \
|
|
$(LIB:.$(LIB_EXT)=.staticdbg) \
|
|
$(PLUGIN:.$(LIB_EXT)=.staticdbg) \
|
|
|
|
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)$(EXE_EXT) $(LIB) ${WRAPPER} $(PLUGIN)
|
|
|
|
cleantargetdbg:
|
|
@[ -d $(DEBUGDIR) ] && cd $(DEBUGDIR); rm -f $(EXEC)$(EXE_EXT) $(LIB) ${WRAPPER} $(PLUGIN)
|
|
|
|
clean: cleanopt cleandbg
|
|
|
|
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)
|
|
|
|
|
|
beautify:
|
|
for f in *.cpp ; do mv $$f $$f.bak; bcpp $$f.bak $$f; rm $$f.bak; done
|
|
for f in *.h ; do mv $$f $$f.bak; bcpp $$f.bak $$f; rm $$f.bak; done
|
|
|
|
docs:
|
|
[ "$(TARGET_BASENAME)" != "" ] && \
|
|
mkdir -p $(TOPDIR)/doc/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 $@
|
|
|
|
$(WRAPPER) $(PLUGIN): $(OBJS)
|
|
$(C++) $(LDFLAGS) -bundle $(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) ${WRAPPER} : $(OBJS)
|
|
$(C++) $(LDFLAGS) $(SHARED) $(OBJS) $(LIBS) -Wl,+h -Wl,$@ -o $@
|
|
|
|
else
|
|
|
|
$(LIB) $(PLUGIN) ${WRAPPER} : $(OBJS)
|
|
$(C++) $(LDFLAGS) $(SHARED) $(OBJS) $(LIBS) -o $@
|
|
|
|
$(STATICLIB) $(STATICPLUGIN): $(OBJS)
|
|
ar rv $@ $?
|
|
|
|
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)/$(EXEC)$(EXE_EXT) __link
|
|
|
|
$(LIB:=.dbg) :
|
|
@[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR)
|
|
@cd $(DEBUGDIR); \
|
|
$(MAKE) -f ../GNUmakefile "DOF=$(DBGF)" TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend $(LIB)
|
|
@$(MAKE) LNSRC=$(DEBUGDIR)/$(LIB) LNDEST=$(LIBINST)/$(LIB) __link
|
|
ifdef IMP_LIB_EXT
|
|
@$(MAKE) LNSRC=$(DEBUGDIR)/lib$(TARGET_BASENAME).$(IMP_LIB_EXT) LNDEST=$(IMP_LIBINST)/lib$(TARGET_BASENAME).$(IMP_LIB_EXT) __link
|
|
endif
|
|
|
|
$(LIB:.$(LIB_EXT)=.staticdbg) :
|
|
@[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR)
|
|
@cd $(DEBUGDIR); \
|
|
$(MAKE) -f ../GNUmakefile "DOF=$(DBGF)" TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend $(STATICLIB)
|
|
@$(MAKE) LNSRC=$(DEBUGDIR)/$(STATICLIB) LNDEST=$(LIBINST)/$(OS)$(ARCH)/$(STATICLIB) __link
|
|
|
|
$(WRAPPER:=.dbg) :
|
|
@[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR)
|
|
@cd $(DEBUGDIR); \
|
|
$(MAKE) -f ../GNUmakefile "DOF=$(DBGF)" TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend $(WRAPPER)
|
|
@$(MAKE) LNSRC=$(DEBUGDIR)/$(WRAPPER) LNDEST=$(PLUGININST)/$(WRAPPER) __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
|
|
ifdef IMP_LIB_EXT
|
|
@$(MAKE) LNSRC=$(DEBUGDIR)/lib$(TARGET_BASENAME)$(IMP_LIB_EXT) LNDEST=$(IMP_PLUGININST)/lib$(TARGET_BASENAME).$(IMP_LIB_EXT) __link
|
|
endif
|
|
|
|
$(PLUGIN:.$(PLUGIN_EXT)=.staticdbg) :
|
|
@[ -d $(DEBUGDIR) ] || mkdir -p $(DEBUGDIR)
|
|
@cd $(DEBUGDIR); \
|
|
$(MAKE) -f ../GNUmakefile "DOF=$(DBGF)" TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend STATICPLUGIN=$(PLUGIN:.$(PLUGIN_EXT)=.a) $(STATICPLUGIN)
|
|
@$(MAKE) LNSRC=$(DEBUGDIR)/$(STATICPLUGIN) LNDEST=$(PLUGININST)/$(STATICPLUGIN) __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)/$(EXEC)$(EXE_EXT) __link
|
|
|
|
|
|
$(LIB:=.opt) :
|
|
@[ -d $(OPTDIR) ] || mkdir -p $(OPTDIR)
|
|
@cd $(OPTDIR); \
|
|
$(MAKE) -f ../GNUmakefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend $(LIB)
|
|
@$(MAKE) LNSRC=$(OPTDIR)/$(LIB) LNDEST=$(LIBINST)/$(LIB) __link
|
|
ifdef IMP_LIB_EXT
|
|
@$(MAKE) LNSRC=$(OPTDIR)/lib$(TARGET_BASENAME).$(IMP_LIB_EXT) LNDEST=$(IMP_LIBINST)/lib$(TARGET_BASENAME).$(IMP_LIB_EXT) __link
|
|
endif
|
|
|
|
$(LIB:.$(LIB_EXT)=.static) :
|
|
[ -d $(OPTDIR) ] || mkdir $(OPTDIR)
|
|
cd $(OPTDIR); \
|
|
$(MAKE) -f ../GNUmakefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend $(STATICLIB)
|
|
@$(MAKE) LNSRC=$(OPTDIR)/$(STATICLIB) LNDEST=$(LIBINST)/$(OS)$(ARCH)/$(STATICLIB) __link
|
|
|
|
$(WRAPPER:=.opt) :
|
|
@[ -d $(OPTDIR) ] || mkdir -p $(OPTDIR)
|
|
@cd $(OPTDIR); \
|
|
$(MAKE) -f ../GNUmakefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend $(WRAPPER)
|
|
@$(MAKE) LNSRC=$(OPTDIR)/$(WRAPPER) LNDEST=$(PLUGININST)/$(WRAPPER) __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
|
|
ifdef IMP_LIB_EXT
|
|
@$(MAKE) LNSRC=$(OPTDIR)/lib$(TARGET_BASENAME).$(IMP_LIB_EXT) LNDEST=$(IMP_PLUGININST)/lib$(TARGET_BASENAME).$(IMP_LIB_EXT) __link
|
|
endif
|
|
|
|
$(PLUGIN:.$(PLUGIN_EXT)=.static) :
|
|
@[ -d $(OPTDIR) ] || mkdir -p $(OPTDIR)
|
|
@cd $(OPTDIR); \
|
|
$(MAKE) -f ../GNUmakefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \
|
|
THISDIR=../$(THISDIR) \
|
|
MAKEDEPEND=Makedepend STATICPLUGIN=$(PLUGIN:.$(PLUGIN_EXT)=.a) $(STATICPLUGIN)
|
|
@$(MAKE) LNSRC=$(OPTDIR)/$(STATICPLUGIN) LNDEST=$(PLUGININST)/$(STATICPLUGIN) __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
|
|
|
|
|
|
.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)
|
|
|