Temporarily adding makedefs.new and makerules.new to keep them

separate from current makedefs/makerules files.  Will eventually
remove all makedefs.* and makerules.* and replace only makedefs
and makerules with makedefs.new and makedefs.new
This commit is contained in:
Don BURNS
2002-03-26 21:24:04 +00:00
parent 651a22453a
commit fc036a28ce
2 changed files with 265 additions and 0 deletions

79
Make/makedefs.new Normal file
View File

@@ -0,0 +1,79 @@
# TOPDIR needs to be redefined for every Makefile
TOPDIR ?= ../
THISDIR = .
MAKEDEPEND = Makedepend
SHELL = /bin/sh
OSTYPE := $(shell uname)
OS := $(shell uname)
INC = -I$(TOPDIR)/include
DEF =
#### SUN OS Specific definitions
ifeq ($(OS),SunOS)
C++ = CC
DEPFLAGS = -xM1
INC +=
DEF += -features=extensions
OPTF = -xO2
DBGF = -g
SHARED = -G
ARCHARGS =
LINKERARGS =
DYNAMICLIBRARYLIB = -ldl
OSG_LIBS = -losgGLUT -losgDB -losgUtil -losg
GLUT_LIB = -lglut
GL_LIBS = -lGLU -lGL
X_LIBS = -lXext -lXmu -lXi -lX11
SOCKET_LIBS = -lsocket -lnsl
OTHER_LIBS = -lCstd
endif
#### IRIX Specific definitions
ifeq ($(OS),IRIX)
C++ = CC
CXXFLAGS = $(DOF) $(INC) -LANG:std -OPT:Olimit=0 -DEBUG:wof=1682 -DEBUG:woff=3303
LDFLAGS = $(DOF) -L$(TOPDIR)/lib -LANG:std
DEPFLAGS = -MDupdate $(MAKEFILE)
endif
#### Linux specific definitions
ifeq ($(OS),Linux)
C++ = g++
CXXFLAGS = $(DOF) -W -Wall $(INC)
LDFLAGS = $(DOF) -W -Wall -L/usr/X11R6/lib -L$(TOPDIR)/lib
DEPFLAGS = -M
endif
OBJS = $(C++FILES:.cpp=.o) $(CXXFILES:.cpp=.o) $(CFILES:.c=.o) $(YACCFILES:.y=.o) $(LEXFILES:.l=.o)
DOF = $(OPTF)
CXXFLAGS = $(DOF) $(DEF) $(INC)
INC +=
DEBUGDIR = $(OS).Debug
OPTDIR = $(OS).Opt
BININST = bin
LIBINST = lib
PLUGININST = lib/osgPlugins
LIBS =
LDFLAGS = $(DOF) -L$(TOPDIR)/lib
ALL_TARGETS = \
opt\
debug\
clean\
cleandbg\
cleanopt\
clobber\
beautify\
docs\
depend\
VPATH=..

186
Make/makerules.new Normal file
View File

@@ -0,0 +1,186 @@
default : opt
opt : $(EXEC:=.opt)\
$(LIB:=.opt)\
$(PLUGIN:=.opt)\
debug : $(EXEC:=.dbg)\
$(LIB:=.dbg)\
$(PLUGIN:=.dbg)\
clean : cleanopt cleandbg
rm -f $(MAKEDEPEND)
cleanopt :
@[ -d $(OPTDIR) ] && cd $(OPTDIR); rm -f $(OBJS)
cleandbg :
@[ -d $(DEBUGDIR) ] && cd $(DEBUGDIR); rm -f $(OBJS)
clobberopt :
rm -rf $(OPTDIR)
clobberdbg :
rm -rf $(DEBUGDIR)
clobber : clobberdbg clobberopt
rm -rf $(MAKEDEPEND)
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 $@
$(LIB) $(PLUGIN) : $(OBJS)
$(C++) $(LDFLAGS) $(SHARED) $(OBJS) $(LIBS) -o $@
$(EXEC:=.dbg) :
@[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR)
@cd $(DEBUGDIR); \
$(MAKE) -f ../Makefile DOF=$(DBGF) TOPDIR=../${TOPDIR} \
THISDIR=../$(THISDIR)\
MAKEDEPEND=../$(MAKEDEPEND) $(EXEC)
@$(MAKE) LNSRC=$(DEBUGDIR)/$(EXEC) LNDEST=$(BININST)/$(EXEC) __link
$(LIB:=.dbg) :
@[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR)
@cd $(DEBUGDIR); \
$(MAKE) -f ../Makefile DOF=$(DBGF) TOPDIR=../${TOPDIR} \
THISDIR=../$(THISDIR)\
MAKEDEPEND=../$(MAKEDEPEND) $(LIB)
@$(MAKE) LNSRC=$(DEBUGDIR)/$(LIB) LNDEST=$(LIBINST)/$(LIB) __link
$(PLUGIN:=.dbg) :
@[ -d $(DEBUGDIR) ] || mkdir $(DEBUGDIR)
@cd $(DEBUGDIR); \
$(MAKE) -f ../Makefile 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 ../Makefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \
THISDIR=../$(THISDIR)\
MAKEDEPEND=../$(MAKEDEPEND) $(EXEC)
@$(MAKE) LNSRC=$(OPTDIR)/$(EXEC) LNDEST=$(BININST)/$(EXEC) __link
$(LIB:=.opt) :
@[ -d $(OPTDIR) ] || mkdir $(OPTDIR)
@cd $(OPTDIR); \
$(MAKE) -f ../Makefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \
THISDIR=../$(THISDIR)\
MAKEDEPEND=../$(MAKEDEPEND) $(LIB)
@$(MAKE) LNSRC=$(OPTDIR)/$(LIB) LNDEST=$(LIBINST)/$(LIB) __link
$(PLUGIN:=.opt) :
@[ -d $(OPTDIR) ] || mkdir $(OPTDIR)
@cd $(OPTDIR); \
$(MAKE) -f ../Makefile DOF=$(OPTF) TOPDIR=../${TOPDIR} \
THISDIR=../$(THISDIR)\
MAKEDEPEND=../$(MAKEDEPEND) $(PLUGIN)
@$(MAKE) LNSRC=$(OPTDIR)/$(PLUGIN) LNDEST=$(PLUGININST)/$(PLUGIN) __link
#
#$(MAKEDEPEND) : $(C++FILES) $(CXXFILES)
# $(C++) $(INC) $(CXXDEPFLAGS) $^ > $(MAKEDEPEND)
#
# Handle Make dependencies in the next target
# This improves performance drastically, by building Makedepend only for
# files that have changed.
.SUFFIXES: .cpp .o
.cpp.o:
$(C++) $(CXXFLAGS) -c $<
# @$(C++) $(INC) $(DEPFLAGS) $? > .temp.dep
# @if [ -f $(MAKEDEPEND) ] ; \
# then \
# grep -v $? $(MAKEDEPEND) > .temp.dep1;\
# else \
# touch .temp.dep1; \
# fi
# @cat .temp.dep1 .temp.dep > $(MAKEDEPEND)
# @rm -f .temp.dep1 .temp.dep
depend :
$(C++) $(INC) $(DEPFLAGS) $(CXXFILES) > $(MAKEDEPEND)
########################################################################################
#
# Ok.. If you are looking hard at the following lines of gnarled code, you deserve an
# explanation. This target makes a link from the installed directories (Assumed to be
# rooted at $(TOPDIR), usually $(TOPDIR)/bin or $(TOPDIR)/lib) to a just-built target.
# Both LNSRC (Link source) and LNDEST (Link destination) must be defined before calling
# 'make __link'.
#
# The first four lines check to see that both LNSRC and LNDEST have been defined.
#
# The (very long) following 'if' statement reads in speudo-code like this:
#
## if the current link is not pointing to the intended destination
# then
# announce (echo) intentions to reset link
# compute the link path by the following steps
# a) define SRCDIR as the current absolute directory
# appended by the directory of the intended source of the link
# b) define DESTDIR as the absolute path of $(ROOT) appended by
# the directory of the intended destination of the link
# c) define a temproary variable T to be the absolute path of
# the destination directory less the prefix of the absolute
# path of $(ROOT)
# e.g. /root/work/thisdir/bin/ - /root/work/thisdir/ = bin/
# d) Run a loop, truncating the path represented by T until 'dirname'
# returns '.'. On each iteration increment PFX (Prefix) by '../'
# This will define the prefix for the path of the link.
# e.g. If DESTDIR is lib/osgPlugins, PFX is ../../
# e) Define the link as a concatenation of PFX and the absolute path
# of the source directory less the absolute path of $(ROOT)
#
# Change directories in to the link destination directory
# run the link command
#
########################################################################################
__link :
@echo LNSRC is $(LNSRC) ... LNDEST is $(LNDEST)
@[ -n "$(LNSRC)" ] || echo "Internal error (LNSRC definition)"
@[ -n "$(LNSRC)" ] && echo > /dev/null
@[ -n "$(LNDEST)" ] || echo "Internal error (LNDEST definition)"
@[ -n "$(LNDEST)" ] && echo > /dev/null
@if diff -s $(TOPDIR)/$(LNDEST) $(LNSRC) >/dev/null 2>&1;\
then\
echo " =====> $(LNSRC) and $(TOPDIR)/$(LNDEST) are already in sync";\
else\
echo " =====> resetting $(TOPDIR)/$(LNDEST) to point to $(LNSRC)";\
SRCDIR=`pwd`/`dirname $(LNSRC)`;\
cd $(TOPDIR);\
ROOTDIR=`pwd`;\
DESTDIR=`dirname $$ROOTDIR/$(LNDEST)`;\
T=`echo $$DESTDIR $$ROOTDIR | awk '{print substr($$1,length($$2)+2,512)}'`;\
while [ "$$T" != "." ]; do T=`dirname $$T`;PFX=../"$$PFX";done;\
LINK="$$PFX"`echo $$SRCDIR $$ROOTDIR | \
awk '{ print substr($$1,length($$2)+2,512) }'`/`basename $(LNDEST)`;\
cd `dirname $(LNDEST)`;\
rm -f `basename $(LNDEST)`;\
ln -sf $$LINK `basename $(LNDEST)`;\
fi
sinclude $(MAKEDEPEND)