[BACK]Return to so_commonrules CVS log [TXT][DIR] Up to [Development] / inventor / make

File: [Development] / inventor / make / Attic / so_commonrules (download)

Revision 1.1.1.1 (vendor branch), Tue Aug 15 12:56:29 2000 UTC (17 years, 2 months ago) by naaman
Branch: sgi
CVS Tags: start
Changes since 1.1: +0 -0 lines

Initial check-in based on 2.1.5 (SGI IRIX) source tree.

#
# Copyright (C) 1990,1991  Silicon Graphics, Inc.
#
#_______________________________________________________________________
#______________  S I L I C O N   G R A P H I C S   I N C .  ____________
#
#   usr/src/toolkits/Inventor/make/so_commonrules
#   $Revision: 1.1.1.1 $
#
#   Description:
#      Inventor common rules for Makefiles in source directories.
#   Normally included as SO_COMMONRULES, which is defined in
#   so_commondefs. Include this file after including so_commondefs.
#
#   Author(s):	David Mott
#
#______________  S I L I C O N   G R A P H I C S   I N C .  ____________
#_______________________________________________________________________
#
#


# Set COMMONPREF so we can over-ride some of the SGI commonrules
# (specifically, clean and clobber; see below)

COMMONPREF=so
include $(COMMONRULES)

# NOTE: this garbage is here so we can suffix our files with .C instead of
#   .c++

C++FILES_TMP = ${C++FILES:.C=.o}
OBJECTS= ${ASFILES:.s=.o} ${C++FILES_TMP:.c++=.o} ${CFILES:.c=.o} ${EFILES:.e=.o} \
         ${FFILES:.f=.o} ${LFILES:.l=.o} ${PFILES:.p=.o} ${RFILES:.r=.o} \
         ${YFILES:.y=.o}
C++FILES_TMP2 = ${C++FILES:.C=..c}
GDIRT= a.out core lex.yy.[co] y.tab.[co] \
	${C++FILES_TMP2:.c++=..c} ${C++FILES_TMP2:.c++=.yuk} ${_FORCE}

.SUFFIXES : .C

.C.o:
	$(C++F) -c $<

# we have to set these in this file rather than in so_commondefs
# because otherwise, $(DEFINES) doesn't get used.
# we set the SO_SHLIBDEFS and SO_SHLIBOPTS here so that we only
# have to set them once (not once for debug, once for optimze, once for profile)

LCDEFS = $(SO_LCDEFS) $(SO_SHLIBDEFS) $(DEFINES)
LCOPTS = $(SO_LCOPTS) $(SO_SHLIBOPTS)
LC++DEFS = $(SO_LC++DEFS) $(SO_SHLIBDEFS) $(DEFINES)
LC++OPTS = $(SO_LC++OPTS) $(SO_SHLIBOPTS)

# The following stuff makes .o's get built directly into the library:

# This puts out of date object files into the archive.  The dependency
# is a features of smake; it makes the library dependent on date of
# the .o's inside it, which are, of course, dependent on their source
# files.  .OODATE will be the list of .o's that are out of date.

$(SOLIB): $(SOLIB)($(OBJECTS)) .PRECIOUS
	@if [ "$(.OODATE)" != "" ] ; then \
		echo "	" $(AR) crlv $(SOLIB) $(.OODATE) ;\
		$(AR) crlv $(SOLIB) $(.OODATE) ;\
		echo "	" rm -f $(.OODATE) ;\
		rm -f $(.OODATE) ;\
	fi

# We have to redefine clean to remove .o's from the library.
# Unfortunately, we can't just use 'ar -d $(SOLIB) $(OBJECTS)' because
# ar will complain if SOLIB doesn't exist, or if any of the OBJECTS
# aren't in the archive.  Hence, the complicated code below:

clean: $(COMMONPREF)$$@
	@if [ -r $(SOLIB) -a "$(OBJECTS)" != "" ]; then { \
	FILES=`$(AR) t $(SOLIB)` ;\
	JUNK="" ; OBJS="$(OBJECTS)" ;\
	for i in $$OBJS; do \
		if echo $$FILES | fgrep -s $$i ; then \
			JUNK="$$JUNK $$i" ;\
		fi ; \
	done ; \
	if [ "$$JUNK" != "" ] ; then \
		echo $(AR) d $(SOLIB) $$JUNK ;\
		$(AR) d $(SOLIB) $$JUNK ; \
	fi ; } \
	fi

clobber: clean $(COMMONPREF)$$@

# Treat all of the rest of the COMMONTARGS normally.
# The :S/// stuff is a feature of smake; it removes part of the variable.

OTHERTARGS = $(COMMONTARGS:S/^clean$//:S/^clobber$//)
$(OTHERTARGS) : $(COMMONPREF)$$@