From 12043abd40709e3746d84a2bf76a67e779079897 Mon Sep 17 00:00:00 2001 From: Don BURNS Date: Tue, 2 Apr 2002 06:58:18 +0000 Subject: [PATCH] Oops forgot to add makedefs and makerules --- Make/makedefs | 243 +++++++++++++++++++++++++++++++++++++++++++++++++ Make/makerules | 220 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 463 insertions(+) create mode 100644 Make/makedefs create mode 100644 Make/makerules diff --git a/Make/makedefs b/Make/makedefs new file mode 100644 index 000000000..80a070cf0 --- /dev/null +++ b/Make/makedefs @@ -0,0 +1,243 @@ +SHELL = /bin/sh +OS := $(shell uname) + +## We don't care about architectural distinguishers in the OS +## such as IRIX64, IRIX32, etc. so we truncate IRIX?? to IRIX +ifeq ($(findstring IRIX,$(OS)),IRIX) +OS := IRIX +endif + +# TOPDIR needs to be redefined for every Makefile +TOPDIR ?= ../ +THISDIR = . +MAKEDEPEND = ignore + +INC = -I$(TOPDIR)/include +DEF = + +CXXFLAGS = $(ARCHARGS) $(DOF) $(DEF) $(INC) +LDFLAGS = $(ARCHARGS) $(DOF) $(LINKARGS) -L$(TOPDIR)/lib +OBJS = $(C++FILES:.cpp=.o) \ + $(CXXFILES:.cpp=.o) \ + $(CFILES:.c=.o) \ + +DOF = $(OPTF) +DEBUGDIR = $(OS)$(ARCH).Debug +OPTDIR = $(OS)$(ARCH).Opt +BININST = bin +LIBINST = lib +PLUGININST = lib/osgPlugins + +INST_DEMOS = /usr/share/OpenSceneGraph/bin +INST_LIBS = /usr/lib$(ARCH) +INST_PLUGINS = /usr/lib$(ARCH)/osgPlugins +INST_INCLUDE = /usr/include +INST_DEMO_SRC = /usr/share/OpenSceneGraph/src/demos +INST_DATA = /usr/share/OpenSceneGraph/data + +LINK = ln -sf +INSTBIN = install -m 755 +INSTDEV = install -m 644 +INSTLINKBIN = $(LINK) +INSTLINKDEV = $(LINK) + + +ALL_TARGETS = \ + opt\ + debug\ + clean\ + cleandbg\ + cleanopt\ + clobber\ + beautify\ + docs\ + depend\ + +#### SUN OS Specific definitions +ifeq ($(OS),SunOS) + + C++ = CC + DEPARG = -xM1 + INC += + DEF += -features=extensions + OPTF = -xO2 + DBGF = -g + SHARED = -G +ifeq ($(ARCH),64) + ARCHARGS = -xarch=v9 +else + ARCHARGS = +endif + LINKARGS = + DYNAMICLIBRARYLIB = -ldl + OSG_LIBS = -losgGLUT -losgDB -losgUtil -losg + FREETYPE_LIB = -lfreetype + GLUT_LIB = -lglut + GL_LIBS = -lGLU -lGL + X_LIBS = -lXext -lXmu -lXi -lX11 + SOCKET_LIBS = -lsocket -lnsl + OTHER_LIBS = -lCstd + SO_EXT = so + PLUGIN_EXT = so + TIFF_LIB = -ltiff + +INSTBIN = cp +INSTDEV = cp + +endif + +#### IRIX Specific definitions +ifeq ($(OS),IRIX) + + C++ = CC + DEPFLAGS = -M + INC += + DEF += -LANG:std -OPT:Olimit=0 \ + -DEBUG:wof=1682 -DEBUG:woff=3303\ + -MDupdate $(MAKEDEPEND) + OPTF = -O2 + DBGF = -g + SHARED = -shared + ARCH = 32 +ifeq ($(ARCH),64) + ARCHARGS = -64 +else + ARCHARGS = -n32 +endif + LINKARGS = -LANG:std -OPT:Olimit=0 + DYNAMICLIBRARYLIB = -ldl + OSG_LIBS = -losgGLUT -losgDB -losgUtil -losg + FREETYPE_LIB = -lfreetype + GLUT_LIB = -lglut + GL_LIBS = -lGLU -lGL + X_LIBS = -lXext -lXi -lXmu -lX11 + SOCKET_LIBS = + OTHER_LIBS = -lm + SO_EXT = so + PLUGIN_EXT = so + +# INSTLINKBIN = install -t -m 755 +# INSTLINKDEV = install -t -m 644 + +endif + +#### Linux specific definitions +ifeq ($(OS),Linux) + C++ = g++ + DEPARG = -MM + INC += + DEF += -W -Wall + OPTF = -O2 + DBGF = -g + SHARED = -shared + ARCHARGS = + LINKARGS = -L/usr/X11R6/lib + DYNAMICLIBRARYLIB = -ldl + OSG_LIBS = -losgGLUT -losgDB -losgUtil -losg + FREETYPE_LIB = -lfreetype + GLUT_LIB = -lglut + GL_LIBS = -lGLU -lGL + X_LIBS = -lXmu -lX11 + SOCKET_LIBS = + OTHER_LIBS = + SO_EXT = so + PLUGIN_EXT = so +endif + +#### FreeBSD specific definitions +ifeq ($(OS),FreeBSD) + C++ = g++ + DEPARG = -MM + INC += -I/usr/local/include -I/usr/X11R6/include + DEF += -W -Wall + OPTF = -O2 + DBGF = -g + SHARED = -shared + ARCHARGS = + LINKARGS = -L/usr/X11R6/lib -L/usr/local/lib -rpath /usr/local/lib + DYNAMICLIBRARYLIB = + OSG_LIBS = -losgGLUT -losgDB -losgUtil -losg + FREETYPE_LIB = -lfreetype + GLUT_LIB = -lglut + GL_LIBS = -lGLU -lGL + X_LIBS = -lXmu -lX11 + SOCKET_LIBS = + OTHER_LIBS = + SO_EXT = so + PLUGIN_EXT = so +endif + +#### Mac OSX specific definitions +ifeq ($(OS),Darwin) + C++ = cc + INC += -I/usr/include -I/sw/include + DEF += -Wall -D__DARWIN_OSX__ + OPTF = -O2 + DBGF = -g + DEPARG = -M $(DEF) + SHARED = -shared + ARCHARGS = + LINKARGS = -L/usr/lib -L/sw/lib + DYNAMICLIBRARYLIB = + OSG_LIBS = -losgGLUT -losgDB -losgUtil -losg + FREETYPE_LIB = -lfreetype + GLUT_LIB = -framework GLUT + CARBON_LIB = -framework Carbon + GL_LIBS = -framework OpenGL $(CARBON_LIB) + X_LIBS = + SOCKET_LIBS = + OTHER_LIBS = -lm -ldl -lstdc++ -lobjc + SO_EXT = dylib + PLUGIN_EXT = so + QUICKTIME_LIB = -framework QuickTime + TIFF_LIB = -ltiff + +endif + +#### Cygwin/Mingw specific definitions +ifeq ($(OS),CYGWIN_NT-5.0) + C++ = c++ + DEPARG = -M + INC += + DEF += -DWIN32 -W -Wall + OPTF = -O2 + DBGF = -g + SHARED = -shared\ + -Wl,--export-all-symbols \ + -Wl,--output-def,lib$$TARGET_BASENAME.def \ + -Wl,--out-implib,$(TOPDIR)/lib/lib$$TARGET_BASENAME.a \ + + ARCHARGS = + LINKARGS = -W -Wall + DYNAMICLIBRARYLIB = + + OSG_LIBS = -losgGLUT -losgDB -losgUtil -losg + GL_LIBS = -lglu32 -lopengl32 + GLUT_LIB = -lglut32 $(GL_LIBS) + X_LIBS = -lgdi32 -luser32 + OSGDB_LIBS = -losgdb_3ds \ + -losgdb_bmp \ + -losgdb_dw \ + -losgdb_flt \ + -losgdb_jpg \ + -losgdb_lwo \ + -losgdb_obj \ + -losgdb_osg \ + -losgdb_osgtgz \ + -losgdb_pic \ + -losgdb_png \ + -losgdb_rgb \ + -losgdb_tga \ + -losgdb_tgz \ + -losgdb_tiff \ + -losgdb_zip + SOCKET_LIBS = + OTHER_LIBS = $(GL_LIBS) + SO_EXT = dll + PLUGIN_EXT = dll + LINK = cp -f +endif + + +VPATH=.. + diff --git a/Make/makerules b/Make/makerules new file mode 100644 index 000000000..f1af43ed1 --- /dev/null +++ b/Make/makerules @@ -0,0 +1,220 @@ + +default : opt + +opt : $(EXEC:=.opt)\ + $(LIB:=.opt)\ + $(PLUGIN:=.opt)\ + +debug : $(EXEC:=.dbg)\ + $(LIB:=.dbg)\ + $(PLUGIN:=.dbg)\ + +cleanlite : cleanliteopt cleanlitedbg + +cleanliteopt : + @[ -d $(OPTDIR) ] && cd $(OPTDIR); rm -f $(EXEC) $(LIB) $(PLUGIN) + +cleanlitedbg : + @[ -d $(DEBUGDIR) ] && cd $(DEBUGDIR); rm -f $(EXEC) $(LIB) $(PLUGIN) + +clean : cleanopt cleandbg + +cleanopt : + @[ -d $(OPTDIR) ] && cd $(OPTDIR); rm -f $(OBJS) $(MAKEDEPEND) + +cleandbg : + @[ -d $(DEBUGDIR) ] && cd $(DEBUGDIR); rm -f $(OBJS) $(MAKEDEPEND) + +clobberopt : + rm -rf $(OPTDIR) + +clobberdbg : + rm -rf $(DEBUGDIR) + +clobber : clobberdbg clobberopt + + +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 + +$(LIB) $(PLUGIN) : $(OBJS) + TARGET_BASENAME=`echo $@ | sed 's/.$(PLUGIN_EXT)//' | sed 's/lib//'`;\ + $(C++) $(LDFLAGS) $(SHARED) $(OBJS) $(LIBS) -o $@ + +endif + +$(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 : $(CXXFILES) $(CFILES) +ifeq ($(OS),IRIX) + touch $@ +else + $(C++) $(INC) $(DEPARG) $? > $(MAKEDEPEND) +endif + + +.SUFFIXES: .cpp .o +.cpp.o: + $(C++) $(CXXFLAGS) -c $< + +## This is an attempt at updating Makedepend file for each source +## file compiled rather than all files each time a source file changes +## Doesn't work too well, but leave the code here for later evaulation +ifeq (0,1) +ifneq ($(OS),IRIX) + $(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 +endif +endif + + +depend : $(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 pseudo-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 $(TOPDIR) 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 $(TOPDIR) +# 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 +# $(TOPDIR) +# +# Change directories in to the link destination directory +# run the link command +# +############################################################################### + +__link : + @[ -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 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)`;\ + $(LINK) $$LINK `basename $(LNDEST)`;\ + fi + + +sinclude $(MAKEDEPEND) +