#-------------------------------------------------------------------------#
#-- pfmakerules - Common make rules for performer source --#
#-- example source. --#
#-------------------------------------------------------------------------#
#-- RCS version information --#
#-- $Revision: 1.1 $ --#
#-- $Date: 2000/11/21 21:39:32 $ --#
#-------------------------------------------------------------------------#
#-------------------------------------------------------------------------#
#-- The default make target makes the I386 OPENGL Dynamic Shared Object.--#
#-- The targets are: --#
#-- build debugging versions: dbg --#
#-- build optimized versions: opt --#
#-- build dynamic shared object versions: dso --#
#-- build debugging dynamic shared object versions: ddso --#
#-- remove all unneeded files after a build: clean --#
#-- remove all machine generated files: clobber --#
#-- --#
#-------------------------------------------------------------------------#
#--
#-- generic targets
#--
#-- make optimized dso version of program by default
default: dso
#-- include Makedepend file if it exists
#sinclude $(MKDEPFILE)
#-- synonym targets
debug: dbg
optimize: opt
#-- make all versions of program
all: dbg opt dso ddso
dso: $(TARGETS:=.dso) \
$(TARGET:=.dso) \
$(LIBRARY:=.dso)
opt: $(TARGETS:=.opt) \
$(TARGET:=.opt) \
$(LIBRARY:=.opt)
dbg: $(TARGETS:=.dbg) \
$(TARGET:=.dbg) \
$(LIBRARY:=.dbg)
ddso: $(TARGETS:=.ddso) \
$(TARGET:=.ddso) \
$(LIBRARY:=.ddso)
#-- clean up directories {remove junk}
clean:
if test -d DBG.$(PFABI); then cd DBG.$(PFABI) ; \
rm -f ${OBJECTS} Makedepend core so_locations; cd .. ; fi
if test -d OPT.$(PFABI); then cd OPT.$(PFABI) ; \
rm -f ${OBJECTS} Makedepend core so_locations; cd .. ; fi
#-- remove all machine-built files
clobber: clean
if test -d OPT.$(PFABI) ; then \
rm -rf OPT.$(PFABI) ; fi
if test -d DBG.$(PFABI) ; then \
rm -rf DBG.$(PFABI) ; fi
rm -f ${TARGETS} ${TARGET}
#--
#-- TARGETS targets
#--
$(TARGETS):
@ ${MAKE} $(subst ogl,,$@).dso
# for backwards compatability with pf2.2
oglall: all
ogldso: dso
oglddso: ddso
ogldbg: dbg
oglopt: opt
$(TARGETS:=.oglall):
@ echo "Target 'oglall' deprecated. Use 'all'."
@ ${MAKE} $(subst ogl,,$@)
$(TARGETS:=.ogldso):
@ echo "Target 'ogldso' deprecated. Use 'dso'."
@ ${MAKE} $(subst ogl,,$@)
$(TARGETS:=.oglddso):
@ echo "Target 'oglddso' deprecated. Use 'ddso'."
@ ${MAKE} $(subst ogl,,$@)
$(TARGETS:=.ogldbg):
@ echo "Target 'ogldbg' deprecated. Use 'dbg'."
@ ${MAKE} $(subst ogl,,$@)
$(TARGETS:=.oglopt):
@ echo "Target 'oglopt' deprecated. Use 'opt'."
@ ${MAKE} $(subst ogl,,$@)
# new pf targets
$(TARGETS:=.dbg):
@echo "Making DBG version of $@"
@if test ! -d DBG.$(PFABI) ; then \
mkdir -p DBG.$(PFABI) ; fi
@ rm -f $(subst .dbg,,$@)
@cd DBG.$(PFABI) ; \
${MAKE} -f ../GNUmakefile OPTIMIZER="-g -O" \
LIBRARIES='$(PFLIB) ${SYSTEM}' \
$(@)cmd ; cd ..
@echo "Making symbolic links to DBG versions"
ln -s DBG.$(PFABI)/$(@)cmd $(subst .dbg,,$@) ;
$(TARGETS:=.opt):
@echo "Making OPT version of $@"
@if test ! -d OPT.$(PFABI) ; then \
mkdir -p OPT.$(PFABI); fi
@ rm -f $(subst .opt,,$@)
@cd OPT.$(PFABI) ; \
${MAKE} -f ../GNUmakefile \
LIBRARIES='$(PFLIB) ${SYSTEM}' \
$(@)cmd ; cd ..
@echo "Making symbolic links to OPT versions"
ln -s OPT.$(PFABI)/$(@)cmd $(subst .opt,,$@) ;
$(TARGETS:=.dso):
@echo "Making DSO version of $@"
@if test ! -d OPT.$(PFABI) ; then \
mkdir -p OPT.$(PFABI); fi
@ rm -f $(subst .dso,,$@)
@cd OPT.$(PFABI); \
${MAKE} -f ../GNUmakefile \
LIBRARIES='$(PFLIB) ${SYSTEM}' \
$(@)cmd ; cd ..
@echo "Making symbolic links to DSO versions"
ln -s -f OPT.$(PFABI)/$(@)cmd $(subst .dso,,$@);
$(TARGETS:=.ddso):
@echo "Making DDSO version of $@"
@if test ! -d DBG.$(PFABI); then \
mkdir -p DBG.$(PFABI); fi
@ rm -f $(subst .ddso,,$@)
@cd DBG.$(PFABI); \
${MAKE} -f ../GNUmakefile OPTIMIZER="-g -O" \
LIBRARIES='$(PFLIB) ${SYSTEM}' \
$(@)cmd ; cd ..
@echo "Making symbolic links to DDSO versions"
ln -s DBG.$(PFABI)/$(@)cmd $(subst .ddso,,$@);
#--
#-- internal TARGETS targets
#--
.SUFFIXES: .dbgcmd .optcmd .dsocmd .ddsocmd
.o.dbgcmd:
${LINKERF} -o $@ $< $(DBGLINKS) ${LDOPTS} ${LIBRARIES}
.o.optcmd:
${LINKERF} -o $@ $< $(OPTLINKS) ${LDOPTS} ${LIBRARIES}
.o.dsocmd:
${LINKERF} -o $@ $< $(DSOLINKS) ${LDOPTS} ${LIBRARIES}
.o.ddsocmd:
${LINKERF} -o $@ $< $(DDSOLINKS) ${LDOPTS} ${LIBRARIES}
#--
#-- TARGET targets
#--
#-- make a debugging version of the program
$(TARGET:=.dbg):
@ echo "Making DBG version of ${TARGET}"
@ if test ! -d DBG.$(PFABI); then \
mkdir -p DBG.$(PFABI); fi
@ cd DBG.$(PFABI); \
${MAKE} -f ../GNUmakefile OPTIMIZER="-g -O"\
LIBRARIES='$(PFLIB) -Wl ${SYSTEM}' \
${TARGET}.DBG
@ rm -f ${TARGET}
ln -s DBG.$(PFABI)/${TARGET}.DBG ${TARGET}
#-- make an optimized version of the program
$(TARGET:=.opt):
@ echo "Making OPT version of ${TARGET}"
@ if test ! -d OPT.$(PFABI); then \
mkdir -p OPT.$(PFABI); fi
@ cd OPT.$(PFABI); ${MAKE} -f ../GNUmakefile \
LIBRARIES='$(PFLIB) -Wl ${SYSTEM}' \
${TARGET}.OPT
@ rm -f ${TARGET}
ln -s OPT.$(PFABI)/${TARGET}.OPT ${TARGET}
#-- make an optimized version of the program that uses DSOs
$(TARGET:=.dso):
@ echo "Making DSO version of ${TARGET}"
@ if test ! -d OPT.$(PFABI); then \
mkdir -p OPT.$(PFABI); fi
@ cd OPT.$(PFABI); ${MAKE} -f ../GNUmakefile \
LIBRARIES='$(PFLIB) -Wl ${SYSTEM}' \
${TARGET}.DSO
@ rm -f ${TARGET}
ln -s OPT.$(PFABI)/${TARGET}.DSO ${TARGET}
#-- make an optimized version of the program that uses DSOs
$(TARGET:=.ddso):
@ echo "Making DDSO version of ${TARGET}"
@ if test ! -d DBG.$(PFABI); then \
mkdir -p DBG.$(PFABI); fi
@ cd DBG.$(PFABI); ${MAKE} -f ../GNUmakefile OPTIMIZER="-g -O" \
LIBRARIES='$(PFLIB) -Wl ${SYSTEM}' \
${TARGET}.DDSO
@ rm -f ${TARGET}
ln -s DBG.$(PFABI)/${TARGET}.DDSO ${TARGET}
#--
#-- internal TARGET targets
#--
${TARGET}.DBG: ${OBJECTS}
${LINKERF} -o $@ ${OBJECTS} $(DBGLINKS) ${LDOPTS} ${LIBRARIES}
${TARGET}.OPT: ${OBJECTS}
${LINKERF} -o $@ ${OBJECTS} $(OPTLINKS) ${LDOPTS} ${LIBRARIES}
${TARGET}.DSO: ${OBJECTS}
${LINKERF} -o $@ ${OBJECTS} $(DSOLINKS) ${LDOPTS} ${LIBRARIES}
${TARGET}.DDSO: ${OBJECTS}
${LINKERF} -o $@ ${OBJECTS} $(DDSOLINKS) ${LDOPTS} ${LIBRARIES}
#--
#-- LIBRARY targets
#--
#-- make a debugging version of the library
$(LIBRARY:=.dbg):
@ echo "Making DBG version of ${LIBRARY}"
@ if test ! -d DBG.$(PFABI); then \
mkdir -p DBG.$(PFABI); fi
@ cd DBG.$(PFABI); \
${MAKE} -f ../GNUmakefile OPTIMIZER="-g -O" ${LIBRARY}.a
@ echo "${LIBRARY}.a done"
#-- make an optimized version of the library
$(LIBRARY:=.opt):
@ echo "Making OPT version of ${LIBRARY}"
@ if test ! -d OPT.$(PFABI); then \
mkdir -p OPT.$(PFABI); fi
@ cd OPT.$(PFABI); \
${MAKE} -f ../GNUmakefile ${LIBRARY}.a
@ echo "${LIBRARY}.a done"
#-- make an optimized version of the library that uses DSOs
$(LIBRARY:=.dso):
@ echo "Making DSO version of ${LIBRARY}"
@ if test ! -d OPT.$(PFABI); then \
mkdir -p OPT.$(PFABI); fi
@ cd OPT.$(PFABI); \
${MAKE} -f ../GNUmakefile ${LIBRARY}.so.${DSOVERSION}
@ echo "${LIBRARY}.so.${DSOVERSION} done"
#-- make an debugging version of the library that uses DSOs
$(LIBRARY:=.ddso):
@ echo "Making DDSO version of ${LIBRARY}"
@ if test ! -d DBG.$(PFABI); then \
mkdir -p DBG.$(PFABI); fi
@ cd DBG.$(PFABI); \
${MAKE} -f ../GNUmakefile OPTIMIZER="-g -O" ${LIBRARY}.so.${DSOVERSION}
@ echo "${LIBRARY}.so.${DSOVERSION} done"
#--
#-- internal LIBRARY targets
#--
${LIBRARY}.a: ${OBJECTS}
ar crv $@ $?
${LIBRARY}.so.$(DSOVERSION): ${OBJECTS}
ld -shared $(DSOREGFILE) $(DSOVERSIONOPT) $(LDOPTS) $(OBJECTS) -o $@
#-- look for sources in this directory when recursing
VPATH=..
#
#-- special rules for using pixie with profile
#
# create a pixie version of profile
profile.pixie:
$(TOOLROOT)/usr/bin/pixie profile
#-- runs prof -pixie on the using the data file produced by
#-- running profile.pixie
profit:
prof -procedures -i -l -pixie -quit 1% \
profile profile.Addrs profile.Counts
#-- a speciall c++ version that will de-mangle c++ names
#-- requires /usr/lib/c++/c++filt
profit_c++:
prof -procedures -i -l -pixie -quit 1% \
profile profile.Addrs profile.Counts | \
$(TOOLROOT)/usr/lib/c++/c++filt
.C.o:
$(CXXF) -c $<
%.o: %.cxx
$(CXXF) -c $<
%.o: %.cpp
$(CXXF) -c $<
%.o: %.c++
$(CXXF) -c $<
_COMPILER = $(CCF)
ifdef CXXFILES
_COMPILER = $(CXXF)
endif
%: %.o
$(_COMPILER) $(LDFLAGS) $< -o $@