693a889ece
o Object files now go in subdirectories named $(OS)$(ARCH).Opt and $(OS)$(ARCH).Debug for OS's that support both architectures. eg. Linux32.Opt and Linux32.Debug o Libraries links are now placed in lib/$(OS)$(ARCH) eg. lib/Linux32/ o Binaries are now placed in bin/$(OS)$(ARCH) eg. bin/Linux32 o 'make install' and 'make instlinks' now place files/links in /usr/local/{include,lib,share/OpenSceneGraph} by default on most systems (Solaris still goes in /opt/OpenSceneGraph). Rather than having the somwehat confusing INST_SYS_PREFIX and INST_SHARE_PREFX, you can override these with just INST_LOCATION For example, make INST_LOCATION=/usr will place files at /usr/include, /usr/lib, /usr/share/OpenSceneGraph.
189 lines
4.9 KiB
Plaintext
189 lines
4.9 KiB
Plaintext
|
|
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
|
|
|
|
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) -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) LNDEST=$(BININST)/$(OS)$(ARCH)/$(EXEC) __link
|
|
|
|
$(LIB:=.dbg) : $(PLUGIN:=.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)/$(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) LNDEST=$(BININST)/$(OS)$(ARCH)/$(EXEC) __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)/$(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)
|
|
|