> Do you have access to an older gcc version?
Not at present. If necessary, my systems staff can install an older
version though.
> Could you perhaps send us your makefile?
Here's the VIS Makefile. This is as generated from configure, minus
the prefix and glulib/include paths, the full paths for ranlib and ar,
and the modification of CFLAGS to remove -native and -dalign (which
our gcc doesn't recognize).
Kathi
# Generated automatically from Makefile.in by configure.
# FileName [ Makefile.in ]
#
# PackageName [ vis ]
#
# Synopsis [ Package-wide Makefile ]
#
# Description [ This file requires GNU's make program.
# Run "configure" to generate the Makefile, or use
# "config.status" (created by configure) to regenerate the
# Makefile after modifying this file.
#
# Type "gmake help" for help about valid targets.
# ]
#
# SeeAlso [ configure.in ]
#
# Author [ Stephen Edwards <sedwards@eecs.berkeley.edu>
# Tom Shiple <shiple@eecs.berkeley.edu> ]
#
# Copyright [
# Copyright (c) 1994-1996 The Regents of the Univ. of California.
# All rights reserved.
#
# Permission is hereby granted, without written agreement and without license
# or royalty fees, to use, copy, modify, and distribute this software and its
# documentation for any purpose, provided that the above copyright notice and
# the following two paragraphs appear in all copies of this software.
#
# IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
# OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
# CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
# "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE
# MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
# ]
#
# Revision [$Id: 0080.html,v 1.1.1.1 2001/04/26 21:30:31 vis Exp $]
# Default target:
.PHONY : default
default : all
#----------------------------------------------------------------------
# The list of packages to compile. Change this if you are only compiling
# part of VIS
#----------------------------------------------------------------------
#PKGS = tst
PKGS = $(ALL_PKGS)
# The name of the BDD package to use
BDDPKG = cu
#----------------------------------------------------------------------
# This Makefile is designed for three different situations:
#
# 1. Single platform build (the default)
#
# All packages listed in the PKGS variable
# local_srcdir = master_srcdir = .
#
# 2. Multi-platform build
#
# All packages listed in the PKGS variable
# local_srcdir = master_srcdir = /where/source/files/reside
#
# 3. Multi-platform development (used at Berkeley)
#
# Packages under development listed in the PKGS variable
# local_srcdir = ../common
# master_srcdir = /projects/vis/vis-devel/common
#
# User has a directory structure that looks like
#
# vis/common/src/ Subdirectory with package source files
# under development.
#
# vis/$PLATFORM/ Subdirectory with this Makefile.
# Compilation is invoked here.
#
# $PLATFORM is something like "alpha-g" (DEC Alpha, debug version)
#
#----------------------------------------------------------------------
#----------------------------------------------------------------------
# Information about all the packages
#----------------------------------------------------------------------
ALL_PKGS = abs amc cmd ctlp eqv fsm hrc img io mark mc mvf ntk ntm ord part rst \
res restr sim synth tbl tst var vm
# Generate the list of all packages NOT in the PKGS list
MISSING_PKGS = $(filter-out $(PKGS), $(ALL_PKGS))
# All the BDD packages
BDDPKGS = cmu cu cal
#----------------------------------------------------------------------
# For safety
#----------------------------------------------------------------------
SHELL = /bin/sh
.SUFFIXES:
#----------------------------------------------------------------------
# The name of the product and its version
#----------------------------------------------------------------------
PRODUCT = vis
VERSION = 1.3
# Compile and version information
#
# CUR_DATE and CUR_VER are strings surrounded by double quotes that contain
# spaces, e.g., "vis release 1.0"
VERDATE := -DCUR_DATE="\"$(shell date)\"" -DCUR_VER="\"$(PRODUCT) release $(VERSION)\""
#----------------------------------------------------------------------
# Source directories
#----------------------------------------------------------------------
# Directory containing master source files. This directory is searched
# for packages NOT listed in the PKGS variable. Defaults to "."
# Override with ./configure --srcdir=
master_srcdir = .
# Directory containing local source files. This directory is searched
# for packages listed in the PKGS variable. Defaults to the master source
# directory (see above).
# Override with ./configure --with-local-srcdir=
local_srcdir = .
#----------------------------------------------------------------------
# Directories used while building
#----------------------------------------------------------------------
# Directories to search for glu .h files (space-separated)
gluincdir1 = /users/csfaculty/kfisler/VerifTools/GLU1.3/glu-1.3/include
# Directories to search for libglu.a (space-separated)
glulibdir1 = /users/csfaculty/kfisler/VerifTools/GLU1.3/glu-1.3/
# Directory where object files will be placed during the build
objectdir = obj
# Directory where links to header files will be placed during the build
headerdir = $(local_srcdir)/include
# Directories where documentation will be placed during the build
docdir = $(master_srcdir)/doc
htmldocdir = $(docdir)/html
txtdocdir = $(docdir)/txt
helpdir = $(master_srcdir)/share/help
# Directories to search for VIS library files
# Set by ./configure --with-vis-libdir=
vislibdir = .
# Full path of platform-independent library files during the build.
# Using this variable as an environment variable allows VIS to work
# before it is installed.
#
# Note: This is NOT where they will be installed
VIS_LIBRARY_PATH = $(shell cd $(master_srcdir)/share ; pwd)
#----------------------------------------------------------------------
# Defaults for GLU library and header files
#----------------------------------------------------------------------
ifndef gluincdir1
gluincdir = ../glu-$(VERSION)/include ../../glu-$(VERSION)/include
else
gluincdir = $(gluincdir1)
endif
ifndef glulibdir1
glulibdir = ../glu-$(VERSION) ../../glu-$(VERSION)
else
glulibdir = $(glulibdir1)
endif
#----------------------------------------------------------------------
# Installation names and directories
#----------------------------------------------------------------------
# Name of the library to create
LIBRARY = lib$(PRODUCT).a
# Directory in which to install architecture-independent files
# Set by ./configure --prefix=...
prefix = /users/csfaculty/kfisler/VerifTools/VIS1.3/vis-1.3/
# Directory in which to install architecture-dependent files
# Set by ./configure --exec-prefix=...
exec_prefix = ${prefix}
# Directory in which to install binaries
bindir = $(exec_prefix)/bin
# Directory in which to install libraries
libdir = $(exec_prefix)/lib
# Directory in which to install headers
includedir = $(prefix)/include
# Directory in which to install architecture-independent library files
datadir = $(prefix)/share/vis
#----------------------------------------------------------------------
# The following are set by the configure script
#----------------------------------------------------------------------
AC_FLAGS = -DNDEBUG=1 -DHAVE_DIRENT_H=1 -DHAVE_SYS_TERMIOS_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SIGNAL_H=1 -DHAVE_SYS_SIGNAL_H=1 -DIOCTL_WITH_TERMIOS=1 -DHAVE_IOCTL_WITH_TIOCGETC=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DRETSIGTYPE=void -DSTDC_HEADERS=1
LIBDIRS =
RANLIB = /usr/ccs/bin/ranlib
CC = /usr/ucb/cc
LINKER = /usr/ucb/cc
LDFLAGS =
#
# Define the linker for the executable with "memory_profile" activated
#
PLINKER =
CFLAGS = -dalign
#CFLAGS = -xO5 -native -dalign
OTHERLIBS = -lm
YACC = bison -y
LEX = flex
NAWK = gawk
INSTALL = helpers/install-sh -c
INSTALL_PROGRAM = ${INSTALL}
INSTALL_DATA = ${INSTALL} -m 644
AR = /usr/ccs/bin/ar
#----------------------------------------------------------------------
# Examples included in the distribution
#----------------------------------------------------------------------
# Each example is declared only once. If some checking through is done
# make check, then it is declared in one of CHECK_COMMON_EXAMPLES,
# CHECK_EXAMPLES_cu, CHECK_EXAMPLES_cmu or CHECK_EXAMPLES_cu. If the example
# is just being added to the examples directory in VIS, then add it here.
EXAMPLES = $(CHECK_COMMON_EXAMPLES) $(CHECK_EXAMPLES_cu) \
$(CHECK_EXAMPLES_cmu) $(CHECK_EXAMPLES_cal) \
viper 8085 arbiter bpb eight_queens minmax \
ping_pong_new rcnum treearbiter
# The "interesting" example files are anything in the examples subdirectories
# except the RCS subdirectories
#
# This is a rather messy way to look for filenames in the local_srcdir,
# then remove the local_srcdir prefix
EXAMPLEFILES = $(patsubst $(local_srcdir)/%, %, \
$(filter-out %RCS, $(foreach example, $(EXAMPLES), \
$(wildcard $(local_srcdir)/examples/$(example)/*))))
# $(pathsubst $(local_srcdir)/%, %, \
# $(filter-out %/RCS, $(foreach example, $(EXAMPLES), \
#----------------------------------------------------------------------
# Distributed files in the doc directory
#----------------------------------------------------------------------
DOCUMENTATION = blifmv.ps ctl.ps vis_user.ps two_phase.ps
#----------------------------------------------------------------------
# Files in the share directory
#----------------------------------------------------------------------
SHAREFILES = master.visrc ioBlifToMv.nawk ioBlifToMvForIncremental.nawk\
script_compute_reach.simple script_compute_reach.robust\
script_model_check.simple script_model_check.robust\
script_fair_model_check.simple script_fair_model_check.robust\
script_lang_empty_check.simple script_lang_empty_check.robust\
script_generic.simple script_generic.robust\
sislib.mv createfunctionmap memoryaccount
HELPFILES = $(notdir $(wildcard $(helpdir)/*.txt))
#----------------------------------------------------------------------
# Include the make templates from all the packages
#
# Each of these templates (e.g., array/array.make) should contains lines
# of the form
#
# CSRC += source1.c source2.c
# HEADERS += header1.h header2.h
# LEXSRC += file1.l
# YACCSRC += file2.y
# GENERATEDCSRC += ctlpLex.c ctlpRead.c
#----------------------------------------------------------------------
MAKEINCLUDES = $(foreach package, $(PKGS), \
$(local_srcdir)/src/$(package)/$(package).make)
include $(MAKEINCLUDES)
OBJECTS = $(addprefix $(objectdir)/,$(GENERATEDCSRC:.c=.o) $(CSRC:.c=.o))
#----------------------------------------------------------------------
# Include the dependency files from each package directory.
# A missing dependency file does not produce an error.
#----------------------------------------------------------------------
DEPENDENCIES = $(foreach package, $(PKGS), \
$(local_srcdir)/src/$(package)/$(package).d)
-include $(DEPENDENCIES)
#----------------------------------------------------------------------
# Header files and library search paths and names
#
# INCLUDEDIRS looks like "-I/projects/glu/ -I/projects/vis/ ..."
# LIBRARYDIRS looks like "-L/projects/glu/ -L/projects/vis/ ..."
# LIBS looks like "-lm -lglu -lvis"
#----------------------------------------------------------------------
INCLUDEDIRS = $(addprefix -I,$(gluincdir)) \
$(foreach package, $(PKGS), -I$(local_srcdir)/src/$(package)) \
$(foreach package, $(MISSING_PKGS), \
-I$(master_srcdir)/src/$(package)) \
-I$(objectdir)
LIBRARYDIRS = $(addprefix -L,$(vislibdir)) $(addprefix -L,$(glulibdir)) \
$(LIBDIRS)
# Link against the VIS library only if some packages are missing
# (i.e., we are compiling only a few packages locally)
ifneq ($(strip $(MISSING_PKGS)),)
VISLIBS = -l$(PRODUCT)
else
VISLIBS =
endif
GLULIBS = -l$(BDDPKG) -lglu
LIBS = $(VISLIBS) $(GLULIBS) $(OTHERLIBS)
#----------------------------------------------------------------------
# Form the the list of directories to search for header files.
#
# VPATH looks like /projects/vis:/projects/glu/: ...
#----------------------------------------------------------------------
VPATH = $(local_srcdir): \
$(master_srcdir): \
$(addprefix :$(local_srcdir)/src/,$(PKGS)): \
$(addprefix :$(master_srcdir)/src/,$(MISSING_PKGS)): \
$(objectdir): \
$(local_srcdir)/share
#----------------------------------------------------------------------
# Definitions for the distribution file
#----------------------------------------------------------------------
DISTRIBUTION = $(PRODUCT)-$(VERSION)
# Directories to include in the distribution file
DISTDIRS = src helpers share share/help obj doc examples \
$(addprefix examples/,$(EXAMPLES)) $(addprefix src/,$(PKGS))
# Build/install helper files
HELPERS = $(addprefix helpers/, \
install-sh mkinstalldirs config.guess config.sub dependency.make)
# Files to include in the distribution file
DISTFILES = \
README INSTALL NEWS \
configure configure.in Makefile.in $(HELPERS) \
xsimv \
$(CSRC) $(HEADERS) $(LEXSRC) $(YACCSRC) $(MAKEINCLUDES) \
$(EXAMPLEFILES) \
$(addprefix doc/,$(DOCUMENTATION)) \
$(addprefix share/,$(SHAREFILES)) \
$(addprefix share/help/,$(HELPFILES))
#----------------------------------------------------------------------
# Variables used by for Revision Control
#----------------------------------------------------------------------
# The root RCS directory
rcs_rootdir = /projects/vis/rcsRoot/common
RCSFILES = $(CSRC) $(HEADERS) $(LEXSRC) $(YACCSRC) $(MAKEINCLUDES)
RCSMISCFILES = Makefile.in configure.in localconfigure \
masterconfigure README INSTALL NEWS xsimv $(addprefix helpers/, mkinstalldirs install-sh \
config.guess config.sub dependency.make )
RCSSHAREFILES = $(SHAREFILES)
#----------------------------------------------------------------------
# Implicit rules
#----------------------------------------------------------------------
ALLCFLAGS = $(CFLAGS) $(AC_FLAGS) $(VERDATE) \
-DNAWK=\"$(NAWK)\" -DLIBRARY=\"$(datadir)\"
# For compiling a source file into the object directory
$(objectdir)/%.o : %.c
umask 2 ; $(CC) -c $(ALLCFLAGS) $(INCLUDEDIRS) -o $@ $<
# Place object files into an archive
%.a :
rm -f $@
umask 2; $(AR) cq $@ $^
$(RANLIB) $@
######################################################################
# RULES #
######################################################################
#:
#: Useful targets:
#:
#----------------------------------------------------------------------
# Rule for getting help
#----------------------------------------------------------------------
.PHONY : help
#: help -- Print a list of targets
# This prints all lines in this Makefile that begin with #:
help :
@sed -n "s/^#://p" Makefile
#----------------------------------------------------------------------
# Always executed once when the Makefile is run
#----------------------------------------------------------------------
# Make sure the directory in which to place the objects exists
ignored := $(shell umask 2; test -d $(objectdir) || mkdir $(objectdir))
#----------------------------------------------------------------------
# Rules to compile and build libraries and executables
#----------------------------------------------------------------------
.PHONY : all allprods library allprods-mp exe-mp compile-version delete-version
#:
#: all (the default) -- Compile the main executable
# (force the version to be recompiled)
all : compile-version $(PRODUCT)
# Create the main executable
$(PRODUCT) : $(OBJECTS) $(glulibdir)/libglu.a $(glulibdir)/lib$(BDDPKG).a
umask 2 ; $(LINKER) -o $(PRODUCT) $(LDFLAGS) \
$(OBJECTS) $(LIBRARYDIRS) $(LIBS)
#: allprods -- Compile an executable linked with each BDD package
allprods : $(OBJECTS) $(glulibdir)/libglu.a $(foreach bddpkg, $(BDDPKGS), \
$(glulibdir)/lib$(bddpkg).a)
@for bddpkg in $(BDDPKGS) ; \
do \
echo "Creating vis-$$bddpkg";\
umask 2 ; $(LINKER) -o $(PRODUCT)-$$bddpkg $(LDFLAGS) $(OBJECTS) \
$(LIBRARYDIRS) $(VISLIBS) -l$$bddpkg -lglu $(OTHERLIBS); \
done
# Force the "version" information to be recompiled
compile-version : delete-version $(objectdir)/vmVers.o
# Delete the object file related to the version
delete-version :
rm -f $(objectdir)/vmVers.o
# Build a library containing all the objects
#: library -- Create a library of all the objects (useful in a central area)
library : $(LIBRARY)
$(LIBRARY) : $(OBJECTS)
ifdef PLINKER
$(PRODUCT)-mp : $(LIBRARY) $(glulibdir)/libglu.a \
$(foreach bddpkg, $(BDDPKGS), \
$(glulibdir)/lib$(bddpkg).a)
umask 2 ; $(PLINKER) -o $(PRODUCT)-mp $(OBJECTS) \
`purify -printhomedir`/libpurify_stubs.a \
$(LIBRARYDIRS) $(LIBS)
allprods-mp : $(LIBRARY) $(glulibdir)/libglu.a \
$(foreach bddpkg, $(BDDPKGS), \
$(glulibdir)/lib$(bddpkg).a)
@for bddpkg in $(BDDPKGS) ; \
do \
echo "Creating vis-$$bddpkg";\
umask 2 ; $(PLINKER) -o $(PRODUCT)-$$bddpkg-mp $(OBJECTS) \
`purify -printhomedir`/libpurify_stubs.a \
$(LIBRARYDIRS) $(VISLIBS) -l$$bddpkg -lglu $(OTHERLIBS) ; \
done
exe-mp : $(OBJECTS)
$(PLINKER) -o $(PRODUCT)-mp $(OBJECTS) \
`purify -printhomedir`/libpurify_stubs.a \
$(LIBRARYDIRS) $(LIBS)
endif
#----------------------------------------------------------------------
# Rule to produce the function map for the memory_profile command
#----------------------------------------------------------------------
.PHONY : functionmap
FMAPFILE = .fmap
functionmap: $(CSRC)
$(VIS)/common/share/createfunctionmap $^ >$(FMAPFILE)
#----------------------------------------------------------------------
# Rules for installation
#----------------------------------------------------------------------
.PHONY : install uninstall installdirs
#:
#: install -- Install the product and libraries in bindir, libdir,
#: datadir, etc.
install : $(PRODUCT) $(LIBRARY) installdirs
@if [ ! -f $(bindir)/$(PRODUCT) ] ; \
then \
echo "Installing $(bindir)/$(PRODUCT)" ; \
$(INSTALL_PROGRAM) $(PRODUCT) $(bindir)/$(PRODUCT) ; \
else \
echo "Warning: $(bindir)/$(PRODUCT) already exists" ; \
fi
@if [ ! -f $(libdir)/$(LIBRARY) ] ; \
then \
echo "Installing $(libdir)/$(LIBRARY)" ; \
$(INSTALL_DATA) $(LIBRARY) $(libdir)/$(LIBRARY) ; \
else \
echo "Warning: $(libdir)/$(LIBRARY) already exists" ; \
fi
@for file in $(SHAREFILES) ; do \
if [ ! -f $(datadir)/$$file ] ; \
then \
echo "Installing $(datadir)/$$file"; \
$(INSTALL_DATA) $(master_srcdir)/share/$$file \
$(datadir)/$$file; \
else \
echo "Warning: $(datadir)/$$file already exists" ; \
fi ; \
done
@for file in $(HELPFILES) ; do \
if [ ! -f $(datadir)/help/$$file ] ; \
then \
echo "Installing $(datadir)/help/$$file"; \
$(INSTALL_DATA) $(master_srcdir)/share/help/$$file \
$(datadir)/help/$$file; \
else \
echo "Warning: $(datadir)/help/$$file already exists" ; \
fi ; \
done
@for header in $(HEADERS); do \
if [ ! -f $(includedir)/$$header ] ; \
then \
echo "Installing $(includedir)/$$header"; \
$(INSTALL_DATA) $(master_srcdir)/src/*/$$header \
$(includedir)/$$header; \
else \
echo "Warning: $(includedir)/$$header already exists" ; \
fi ; \
done
#: uninstall -- Reverse the effects of "install"
uninstall :
rm -f $(bindir)/$(PRODUCT)
rm -f $(libdir)/$(LIBRARY)
@for file in $(SHAREFILES) ; \
do \
echo "Removing $(datadir)/$$file"; \
rm -f $(datadir)/$$file; \
done
@for file in $(HELPFILES) ; \
do \
echo "Removing $(datadir)/help/$$file"; \
rm -f $(datadir)/help/$$file; \
done
@for header in $(HEADERS); \
do \
echo "Removing $(includedir)/$$header"; \
rm -f $(includedir)/$$header; \
done
installdirs :
$(master_srcdir)/helpers/mkinstalldirs \
$(bindir) $(libdir) $(includedir) $(datadir) $(datadir)/help
#----------------------------------------------------------------------
# Rules for checking the build
#----------------------------------------------------------------------
.PHONY : check check-bdd check-examples
# This is a lengthy sed command used to filter out the irrelevant VIS
# output that appears when the examples are running.
#
# Sed does not permit space between the trailing p ("print matching
# lines") and the semicolon (end of command). Hashes are escaped --
# otherwise they are Makefile comments. This was once a long egrep
# expression, but the string was too long for Ultrix's egrep.
SED_CMD = \
/^FSM depth/p; \
/^computation depth/p; \
/^reachable states =/p; \
/^\# MC: formula passed/p; \
/^\# INV: formula passed/p; \
/^\# INV: formula failed/p; \
/^\# MC: formula failed/p; \
/^\# LE: language is not empty/p; \
/^\# LE: language emptiness check passes/p; \
/^\# ABS: formula passed/p; \
/^\# ABS: formula failed/p; \
/Residue/p; \
/^\# AMC: Verified formula TRUE/p; \
/^\# AMC: Verified formula FALSE/p; \
/Equivalence Classes/p; \
/Total number of literals/p; \
/Networks are combinationally equivalent\./p; \
/Networks are sequentially equivalent\./p; \
/;.*;/p;
# List of all examples to check (A subset of EXAMPLES)
CHECK_COMMON_EXAMPLES = abp amp bakery coherence counter crd ctlp3 dcnew \
eisenberg elevator ethernet exampleS gigamax ping_pong \
scheduler short slider tbl_one_bug tcp tlc
CHECK_EXAMPLES = $(CHECK_COMMON_EXAMPLES) $(CHECK_EXAMPLES_$(BDDPKG))
CHECK_EXAMPLES_cu = mult6x6 s1269 fpmpy restruct synthesis production_cell
CHECK_EXAMPLES_cmu =
CHECK_EXAMPLES_cal =
# Determine the absolute executable path
#
# Starting from the current directory, change directory to the directory
# part of the product name, then tack on the filename part of EXECUTABLE
EXECUTABLE = $(PRODUCT)
EXECUTABLEPATH := \
$(shell cd $(dir $(EXECUTABLE)) ; pwd)/$(notdir $(EXECUTABLE))
# Determine the rootname of the examples
#
EXAMPLEPATH = $(master_srcdir)/examples
FULLEXAMPLEPATH := $(shell cd $(EXAMPLEPATH) ; pwd)
#:
#: check -- Test the locally-built executable (runs check-examples)
check : check-examples
# Run check on each of the bdd versions (named e.g., vis-cmu)
#: check-allprods -- Test each of the BDD executables (see allprods)
check-allprods :
@for bddpkg in $(BDDPKGS) ; \
do \
echo "Checking $(PRODUCT)-$$bddpkg";\
$(MAKE) PRODUCT=$(PRODUCT)-$$bddpkg BDDPKG=$$bddpkg check ; \
done
#: check-examples -- Test each of the examples listed in CHECK_EXAMPLES
#: You may want to invoke this with
#: gmake "CHECK_EXAMPLES=abp bakery" check-examples
#: gmake EXECUTABLE=vis-cmu check-examples
#: gmake EXECUTABLE=/projects/vis/vis-devel/alpha-g/vis \
#: check-examples
#: gmake EXAMPLEPATH=/projects/vis/vis-devel/common/examples \
#: check-examples
#: gmake EXAMPLEPATH=../common/examples check-examples
#: gmake VIS_LIBRARY_PATH=/projects/vis/vis-devel/share
# For each example,
#
# 1) create the directory checkresults/<example>
# 2) enter that directory
# 3) create "check_script" by prepending a "set open_path" command
# to the example's check_script in the master source directory. This
# makes VIS look in the master source directory for example files
# 4) run VIS on that script, producing "result.raw"
# 5) filter out relevant lines in the result, producing "result.filtered"
# and compare this with the "check_result" file in the master source
# directory. Differences are written to "result.differences"
check-examples :
@test -d checkresults || mkdir checkresults
@echo "Checking examples. Results will be in checkresults/<example>/result.raw"
@echo "Running executable $(EXECUTABLEPATH)"
@echo " (change with EXECUTABLE=...)"
@echo "Taking examples from $(FULLEXAMPLEPATH)"
@echo " (change with EXAMPLEPATH=...)"
@cwd=`pwd` ; \
VIS_LIBRARY_PATH=$(VIS_LIBRARY_PATH) ; \
export VIS_LIBRARY_PATH ; \
for example in $(CHECK_EXAMPLES) ; \
do \
echo -n "Checking $$example ... " ; \
cd $$cwd ; \
test -d checkresults/$$example || \
mkdir checkresults/$$example ; \
cd checkresults/$$example ; \
rm -f check_script ; \
echo "set open_path $(FULLEXAMPLEPATH)/$$example" > check_script ; \
cat $(FULLEXAMPLEPATH)/$$example/check_script >> check_script ; \
$(EXECUTABLEPATH) -f check_script -x > result.raw 2> result.stderr ; \
sed -n '$(SED_CMD)' result.raw > result.filtered ; \
if diff result.filtered \
$(FULLEXAMPLEPATH)/$$example/check_result > result.differences ; \
then \
echo "passed" ; \
rm result.differences ; \
else \
echo "failed (more checkresults/$$example/result.differences)" ; \
fi ; \
done
# egrep '$(KEY_WORDS)' result.raw > result.filtered ; \
#----------------------------------------------------------------------
# Rules that produce/delete the dependency file for every package
#----------------------------------------------------------------------
.PHONY : dependencies cleandependencies
#:
#: dependencies -- Create a list of dependency files.
#: Useful when modifying header files.
# Invoke the "dependency.make" Makefile on each package subdirectory,
# passing the path, etc. to it.
#
# There's a strange feature in autoconf where lines of the form " VPATH="
# are removed from the Makefile. Thus, a flag is placed before the
# VPATH= argument below.
dependencies:
ifeq ($(CC),gcc)
for pkg in $(PKGS) ; \
do \
$(MAKE) --no-print-directory \
-f $(master_srcdir)/helpers/dependency.make \
CC="$(CC)" \
CFLAGS="$(CFLAGS)" VPATH="$(local_srcdir)/src/$$pkg" \
AC_FLAGS="$(AC_FLAGS)" \
INCLUDEDIRS="$(INCLUDEDIRS)" objectdir=$(objectdir) \
PKGNAME=$(local_srcdir)/src/$$pkg/$$pkg \
$(local_srcdir)/src/$$pkg/$$pkg.d ; \
done
else
@echo "dependency requires gcc"
@echo "Reconfigure with gcc"
endif
cleandependencies:
rm -f $(local_srcdir)/src/*/*.d
#----------------------------------------------------------------------
# Rules for making a distribution file
#----------------------------------------------------------------------
.PHONY : dist
#:
#: dist -- Create a tarred, gzipped distribution file
# Warning: "tar" under Digital Unix (on DEC Alphas) writes directories
# that don't work under SunOS tar
dist : $(DISTRIBUTION).tar.gz
$(DISTRIBUTION).tar.gz : $(DISTFILES)
ifeq ($(strip $(FULL_MISSING_PKGS)),)
rm -rf $(DISTRIBUTION)
umask 022; mkdir $(DISTRIBUTION)
for dir in $(DISTDIRS); \
do \
umask 022; mkdir $(DISTRIBUTION)/$$dir; \
done
@echo "Copying distribution files"
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
echo " $$file"; \
cp -p $(local_srcdir)/$$file $(DISTRIBUTION)/$$file; \
done
- chmod -R a+r $(DISTRIBUTION)
- chmod -R u+w $(DISTRIBUTION)
tar cf - $(DISTRIBUTION) | gzip > $(DISTRIBUTION).tar.gz
rm -rf $(DISTRIBUTION)
else
@echo "Missing packages: $(FULL_MISSING_PKGS)"
@echo "Make sure PKGS lists all the packages"
@exit 1
endif
#----------------------------------------------------------------------
# Rules for rebuilding the configure file and Makefile
#----------------------------------------------------------------------
${master_srcdir}/configure : configure.in
cd ${master_srcdir} && autoconf
chmod 0775 ${master_srcdir}/config*
config.status : configure
./config.status --recheck
Makefile : Makefile.in config.status
@echo "The master Makefile.in has been changed:"
@echo "run config.status"
@echo "Warning: This will overwrite any local Makefile modifications"
@exit 1
#----------------------------------------------------------------------
# Rules for cleaning
#----------------------------------------------------------------------
.PHONY : clean mostlyclean distclean
#:
#: clean -- Remove every file created by building
clean mostlyclean :
rm -rf $(objectdir)/* $(LIBRARY) $(PRODUCT) \
$(foreach bddpkg, $(BDDPKGS), $(PRODUCT)-$(bddpkg)) \
checkresults include
#: distclean -- Remove every file created by building or configuring
distclean : clean cleandependencies
rm -f Makefile config.status config.cache config.log
#----------------------------------------------------------------------
# Rule for performing a lint-like check on the source code
#
# Note: This requires gcc
#----------------------------------------------------------------------
.PHONY : check-code
#:
#: check-code -- Run a lint-like check on the source code.
#: (useful for development)
check-code : $(CSRC) $(BDD_CSRC) $(MDD_CSRC)
ifeq ($(CC),gcc)
@rm -f *.o_checkcode
@for file in $^; \
do \
echo "------------------------ Checking $$file"; \
gcc -c $(CFLAGS) $(AC_FLAGS) $(VERDATE) $(INCLUDEDIRS) \
-Wall -Wno-comment -o $(objectdir)/checkcode_output.o $$file; \
rm -f $(objectdir)/checkcode_output.o; \
done
@rm -f *.o_checkcode
else
@echo "check-code requires gcc"
@echo "Reconfigure with gcc"
endif
#----------------------------------------------------------------------
# Rule for generating function prototypes for all the
# source and header files in all the PKGS
#
# Note: This requires "extproto," part of the ext package available from
# ftp://ic.eecs.berkeley.edu/pub/Ext
#----------------------------------------------------------------------
.PHONY : proto
#:
#: proto -- Regenerate all the function prototypes in the packages
#: Useful during development. You may want to invoke it with
#: gmake "PKGS=tst tbl" proto
proto :
@cd $(local_srcdir)/src ; \
for pkg in $(PKGS); \
do \
cd $$pkg ; \
extproto *.h *.c ; \
cd .. ; \
done
#----------------------------------------------------------------------
# Rules for generating the documentation and command help files
# for all the packages
#
# Note: This requires "extdoc," part of the ext package, and
# lynx, a textual WWW browser
#----------------------------------------------------------------------
.PHONY : allDoc doc indices helpfiles cleandoc
#:
#: allDoc -- Extract all the documentation (runs doc, indices, and helpfiles)
allDoc : cleandoc doc indices helpfiles
#: doc -- Extract HTML and text documentation on all the functions
doc : $(htmldocdir) $(txtdocdir)
for pkg in $(PKGS); \
do \
umask 2 ; extdoc --html=$(htmldocdir) --text=$(txtdocdir) \
$(local_srcdir)/src/$$pkg/$$pkg; \
done
#: indices -- Generate function and command indices for the HTML documentation
indices : $(htmldocdir)
umask 2 ; extindex $(htmldocdir)
#: helpfiles -- Generate the help files from the HTML documentation
helpfiles : $(helpdir)
for file in $(htmldocdir)/*Cmd.html ; \
do \
echo Converting $$file ; \
umask 2 ; lynx -dump $$file > $(helpdir)/`basename $$file .html`.txt ; \
done
#: cleandoc -- Remove all the documentation generated by "allDoc"
cleandoc :
-rm -f $(htmldocdir)/*.html
-rm -f $(txtdocdir)/*.txt
-rm -f $(helpdir)/*Cmd.txt
$(htmldocdir) :
- umask 2 ; mkdir $(htmldocdir)
$(txtdocdir) :
- umask 2 ; mkdir $(txtdocdir)
$(helpdir) :
- umask 2 ; mkdir $(helpdir)
#----------------------------------------------------------------------
# Revision control rules
#
# May be invoked with command-line overrides, e.g.,
# gmake RCSFILES=foo.c rcs_co
# gmake PKGS=array rcs_ci
#----------------------------------------------------------------------
.PHONY: rcs_ci rcs_co rcs_diff rcs_ident rcs_status
#:
#: You may want to invoke the RCS rules with
#: gmake "PKGS=tst tbl" rcs_ci
#: gmake "RCSFILES=tstMain.c" rcs_co
#:
#: rcs_ci -- check in user-modified files and put an updated copy
#: in the central area
rcs_ci: $(RCSFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
ci -u $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
co -u $(RCSFLAGS) $(master_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_co -- check out files for modification
rcs_co: $(RCSFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
co -l $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_diff -- Report differences between local files and checked-in versions
rcs_diff: $(RCSFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
rcsdiff $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_ident -- Print the RCS identifier in each file
rcs_ident: $(RCSFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
ident $(RCSFLAGS) $(local_srcdir)/$$file; \
done
#: rcs_status -- Report who has checked out files
rcs_status: $(RCSFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
rlog -L -h $(RCSFLAGS) $(rcs_rootdir)/$$file,v; \
done
#----------------------------------------------------------------------
# RCS rules for common/{Makefile.in, configure.in, localconfigure,
# masterconfigure, mkinstalldirs, install-sh}
#----------------------------------------------------------------------
.PHONY : rcs_ci_misc rcs_co_misc rcs_diff_misc
#: rcs_ci_misc -- Check in miscellaneous files, updating central area
rcs_ci_misc: $(RCSMISCFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
ci -u $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
co -u $(RCSFLAGS) $(master_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_co_misc -- Check out miscellaneous files
rcs_co_misc: $(RCSMISCFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
co -l $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_diff_misc -- Report differences in miscellaneous files
rcs_diff_misc: $(RCSMISCFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
rcsdiff $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_ident_misc -- Report RCS identifiers
rcs_ident_misc: $(RCSMISCFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
ident $(RCSFLAGS) $(local_srcdir)/$$file; \
done
#: rcs_status_misc -- Report checked in/out status, ownership
rcs_status_misc: $(RCSMISCFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
rlog -L -h $(RCSFLAGS) $(rcs_rootdir)/$$file,v; \
done
#----------------------------------------------------------------------
# RCS rules for files in common/share
#----------------------------------------------------------------------
.PHONY : rcs_ci_share rcs_co_share rcs_diff_share
#: rcs_ci_share -- Check in files in the share/ directory
rcs_ci_share: $(RCSSHAREFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
ci -u $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
co -u $(RCSFLAGS) $(master_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_co_share -- Check out share files
rcs_co_share: $(RCSSHAREFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
co -l $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_diff_share -- Report differences in share files
rcs_diff_share: $(RCSSHAREFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
rcsdiff $(RCSFLAGS) $(local_srcdir)/$$file $(rcs_rootdir)/$$file,v; \
done
#: rcs_ident_share -- Report RCS identifiers
rcs_ident_share: $(RCSSHAREFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
ident $(RCSFLAGS) $(local_srcdir)/$$file; \
done
#: rcs_status_share -- Report checked in/out status, ownership
rcs_status_share: $(RCSSHAREFILES)
@for file in $(patsubst $(local_srcdir)/%, %, $^); \
do \
rlog -L -h $(RCSFLAGS) $(rcs_rootdir)/$$file,v; \
done
#----------------------------------------------------------------------
# Rules for debugging the Makefile
#----------------------------------------------------------------------
.PHONY : debug-make
DEBUG_VARS = ALL_PKGS \
PKGS \
MISSING_PKGS \
VPATH \
INCLUDEDIRS \
CSRC \
OBJECTS \
HEADERS \
MAKEINCLUDES \
CFLAGS \
AC_FLAGS \
master_srcdir \
local_srcdir \
RCSFILES \
RCSDIR \
LIBS \
VISLIBS \
DISTFILES \
EXAMPLEFILES
#:
#: debug-make -- Print a list of Makefile variables
debug-make:
@$(foreach var, $(DEBUG_VARS), echo $(var)=$($(var)) ; )
This archive was generated by hypermail 2b29 : Sat Nov 25 2000 - 06:21:02 MST