4.4BSD/usr/src/contrib/calc-1.26.4/Makefile
#
# Copyright (c) 1993 David I. Bell and Landon Curt Noll
# Permission is granted to use, distribute, or modify this source,
# provided that this copyright notice remains intact.
#
# Arbitrary precision calculator.
#
# calculator by David I. Bell
# makefile by Landon Curt Noll
##############################################################################
#-=-=-=-=-=-=-=-=- You may want to change some values below -=-=-=-=-=-=-=-=-#
##############################################################################
# Determine the type of terminal controls that you want to use
#
# VARARG value meaning
# ------------ -------
# (nothing) let the makefile guess at what you need
# -DUSE_TERMIOS use struct termios from <termios.h>
# -DUSE_TERMIO use struct termios from <termio.h>
# -DUSE_SGTTY use struct sgttyb from <sys/ioctl.h>
#
TERMCONTROL=
#TERMCONTROL= -DUSE_TERMIOS
#TERMCONTROL= -DUSE_TERMIO
#TERMCONTROL= -DUSE_SGTTY
# Determine the type of varargs that you want to use
#
# VARARG value meaning
# ------------ -------
# (nothing) let the makefile guess at what you need
# STDARG you have ANSI C and /usr/include/stdarg.h
# VARARGS you have /usr/include/varargs.h
# SIMULATE_STDARG use simulated ./stdarg.h
#
# Try defining VARARG to be nothing. The makefile will look for the
# needed .h files, trying for stdarg.h first.
#
VARARG=
#VARARG= STDARG
#VARARG= VARARGS
#VARARG= SIMULATE_STDARG
# If your system does not have a vsprintf() function, you could be in trouble.
#
# vsprintf(stream, format, ap)
#
# This function works like sprintf except that the 3rd arg is a va_list
# strarg (or varargs) list.
#
# If you have vsprintf, then define DONT_HAVE_VSPRINTF to be an empty string.
# Some old systems do not have vsprintf(). If you do not have vsprintf()
# then define DONT_HAVE_VSPRINTF to be -DDONT_HAVE_VSPRINTF and hope for
# the best.
#
DONT_HAVE_VSPRINTF=
#DONT_HAVE_VSPRINTF= -DDONT_HAVE_VSPRINTF
# Determine the byte order of your machine
#
# Big Endian: Amdahl, 68k, Pyramid, Mips, Sparc, ...
# Little Endian: Vax, 32k, Spim (Dec Mips), i386, i486, ...
#
# If your machine defines BYTE_ORDER in <machine/endian.h>, then define
# BYTE_ORDER be nothing.
#
BYTE_ORDER=
#BYTE_ORDER= -DBYTE_ORDER=BIG_ENDIAN
#BYTE_ORDER= -DBYTE_ORDER=LITTLE_ENDIAN
# Determine whether to use the standard malloc or the alternative one
# included with the calculator. On some machines, the alternative malloc
# may be faster. It also can help to debug malloc problems.
#
# Define MALLOC to be -DCALC_MALLOC to use the internal malloc routines.
#
# If in doubt, leave MALLOC empty.
#
MALLOC=
#MALLOC= -DCALC_MALLOC
# where to install binary files
#
BINDIR= /usr/bin
#BINDIR= /usr/local/bin
# where to install the lib/*.calc files
#
LIBDIR= /usr/lib/calc
#LIBDIR= /usr/local/lib/calc
# where to install help files
#
# The ${LIBDIR}/help is where the help files will be installed.
#
HELPDIR= ${LIBDIR}/help
# where man pages are installed
#
#MANDIR=/usr/local/man/man1
#MANDIR=/usr/man/man1
MANDIR=/usr/share/man/man1
#MANDIR=/usr/man/u_man/man1
# If the $CALCPATH environment variable is not defined, then the following
# path will be search for calc lib routines.
#
CALCPATH= .:./lib:~/lib:${LIBDIR}
# If the $CALCRC environment variable is not defined, then the following
# path will be search for calc lib routines.
#
CALCRC= ${LIBDIR}/startup:~/.calcrc
# If the $CALCBINDINGS environment variable is not defined, then the following
# file will be used for the command line and edit history key bindings.
#
CALCBINDINGS= ${LIBDIR}/bindings
# If $PAGER is not set, use this program to display a help file
#
CALCPAGER= more
#CALCPAGER= less
#CALCPAGER= pg
#CALCPAGER= cat
# Compile debug options
#
# Select -O, or empty string, if you don't want to debug
DEBUG= -O
#DEBUG= -O3
#DEBUG= -g
#DEBUG= -gx
#DEBUG= -WM,-g
#DEBUG=
# On systems that have dynamic shared libs, you want want to disable them
# for faster calc startup.
#
NO_SHARED=
#NO_SHARED= -dn
# Some systems allow 'mkdir -p' to make a directory and any needed parent
# directories.
#
# If you system has 'mkdir -p', then: MKDIR=mkdir -p
# otherwise: MKDIR=mkdir
#
# If you do not have 'mkdir -p', then you must ensure that ${LIBDIR},
# ${BINDIR} and ${HELPDIR} exist before you do an install.
#
MKDIR=mkdir -p
#MKDIR=mkdir
# If you are running an an old BSD system, then you may not have
# the following functions:
#
# memcpy() strchr() memset()
#
# If you do not have these functions, define OLD_BSD to be -DOLD_BSD,
# otherwise define OLD_BSD to be an empty string.
#
# Modern BSD and BSD-like systems have these functions and thus don't
# need OLD_BSD. If you don't know, try using the empty string and if
# you get complaints, try -DOLD_BSD.
#
OLD_BSD=
#OLD_BSD= -DOLD_BSD
#
# Some old systems don't know what a uid_t is. Define UID_T if you get
# an error regarding 'uid_t' when compiling files such as calc.c
#
UID_T=
#UID_T= -DUID_T
##############################################################################
#-=-=-=-=-=-=-=-=- Be careful if you change something below -=-=-=-=-=-=-=-=-#
##############################################################################
# standard utilities used during make
#
SHELL= /bin/sh
MAKE= make
LINT= lint
#CC= gcc
CC= cc
CTAGS= ctags
# -a Report assignments of long values to variables that are not long
# -c Complain about casts which have questionable portability
# -h Apply heuristic tests to intuit bugs, improve style, and reduce waste
#
LINTFLAGS= -h
#LINTFLAGS=
# the calc source files
#
CALCSRC= addop.c alloc.c calc.c codegen.c comfunc.c commath.c config.c \
const.c file.c func.c hist.c input.c io.c label.c listfunc.c \
matfunc.c obj.c opcodes.c qfunc.c qmath.c qmod.c qtrans.c string.c \
symbol.c token.c value.c version.c zfunc.c zmath.c zmod.c zmul.c
# we build these .o files for calc
#
CALCOBJS= addop.o alloc.o calc.o codegen.o comfunc.o commath.o config.o \
const.o file.o func.o hist.o input.o io.o label.o listfunc.o \
matfunc.o obj.o opcodes.o qfunc.o qmath.o qmod.o qtrans.o string.o \
symbol.o token.o value.o version.o zfunc.o zmath.o zmod.o zmul.o
# we build these .h files during the make
#
BUILD_H_SRC= config.h have_malloc.h have_stdlib.h have_string.h args.h \
args.h terminal.h
# The code program is not part of the calc distribution, don't worry
# if you do not have it.
#
CODEOBJS= code.o io_code.o qfunc.o qmath_code.o zfunc.o zmath.o zmul.o zmod.o
# we build these .c files during the make
#
BUILD_CODE_SRC= io_code.c qmath_code.c
# LCFLAGS are flags that both ${CC} and ${LINT} can use
# CFLAGS are the default flags given to ${CC}
#
LCFLAGS= ${MALLOC} ${BYTE_ORDER} ${OLD_BSD} ${DONT_HAVE_VSPRINTF} ${UID_T}
CFLAGS= ${DEBUG} ${LCFLAGS}
all: calc calc.1
calc: ${CALCOBJS}
${CC} ${CFLAGS} ${CALCOBJS} -o calc ${NO_SHARED}
hist.o: hist.c Makefile
${CC} ${CFLAGS} ${DEBUG} ${TERMCONTROL} -c hist.c
config.h: Makefile
rm -f config.h
@echo 'forming config.h'
@echo '/*' > config.h
@echo ' * DO NOT EDIT -- generated by the Makefile' >> config.h
@echo ' */' >> config.h
@echo '' >> config.h
@echo '/* the default :-separated search path */' >> config.h
@echo '#ifndef DEFAULTCALCPATH' >> config.h
@echo '#define DEFAULTCALCPATH "${CALCPATH}"' >> config.h
@echo '#endif /* DEFAULTCALCPATH */' >> config.h
@echo '' >> config.h
@echo '/* the default :-separated startup file list */' >> config.h
@echo '#ifndef DEFAULTCALCRC' >> config.h
@echo '#define DEFAULTCALCRC "${CALCRC}"' >> config.h
@echo '#endif /* DEFAULTCALCRC */' >> config.h
@echo '' >> config.h
@echo '/* the default key bindings file */' >> config.h
@echo '#ifndef DEFAULTCALCBINDINGS' >> config.h
@echo '#define DEFAULTCALCBINDINGS "${CALCBINDINGS}"' >> config.h
@echo '#endif /* DEFAULTCALCBINDINGS */' >> config.h
@echo '' >> config.h
@echo '/* the location of the help directory */' >> config.h
@echo '#ifndef HELPDIR' >> config.h
@echo '#define HELPDIR "${HELPDIR}"' >> config.h
@echo '#endif /* HELPDIR */' >> config.h
@echo '' >> config.h
@echo '/* the default pager to use */' >> config.h
@echo '#ifndef DEFAULTCALCPAGER' >> config.h
@echo '#define DEFAULTCALCPAGER "${CALCPAGER}"' >> config.h
@echo '#endif /* DEFAULTCALCPAGER */' >> config.h
@echo 'config.h formed'
have_malloc.h: Makefile
rm -f have_malloc.h
@echo 'forming have_malloc.h'
@echo '/*' > have_malloc.h
@echo ' * DO NOT EDIT -- generated by the Makefile' >> have_malloc.h
@echo ' */' >> have_malloc.h
@echo '' >> have_malloc.h
@echo '/* do we have /usr/include/malloc.h? */' > have_malloc.h
-@if [ -r /usr/include/malloc.h ]; then \
echo '#define HAVE_MALLOC_H /* yes */' >> have_malloc.h; \
else \
echo '#undef HAVE_MALLOC_H /* no */' >> have_malloc.h; \
fi
@echo 'have_malloc.h formed'
have_stdlib.h: Makefile
rm -f have_stdlib.h
@echo 'forming have_stdlib.h'
@echo '/*' > have_stdlib.h
@echo ' * DO NOT EDIT -- generated by the Makefile' >> have_stdlib.h
@echo ' */' >> have_stdlib.h
@echo '' >> have_stdlib.h
@echo '/* do we have /usr/include/stdlib.h? */' > have_stdlib.h
-@if [ -r /usr/include/stdlib.h ]; then \
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
else \
echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \
fi
@echo 'have_stdlib.h formed'
have_string.h: Makefile
rm -f have_string.h
@echo 'forming have_string.h'
@echo '/*' > have_string.h
@echo ' * DO NOT EDIT -- generated by the Makefile' >> have_string.h
@echo ' */' >> have_string.h
@echo '' >> have_string.h
@echo '/* do we have /usr/include/string.h? */' > have_string.h
-@if [ -r /usr/include/string.h ]; then \
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
else \
echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \
fi
@echo 'have_string.h formed'
terminal.h: Makefile
rm -f terminal.h
@echo 'forming terminal.h'
@echo '/*' > terminal.h
@echo ' * DO NOT EDIT -- generated by the Makefile' >> terminal.h
@echo ' */' >> terminal.h
@echo '' >> terminal.h
@echo '#if !defined(USE_TERMIOS)' >> terminal.h
@echo '#if !defined(USE_TERMIO)' >> terminal.h
@echo '#if !defined(USE_SGTTY)' >> terminal.h
-@if [ -r /usr/include/termios.h ]; then \
echo '#define USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
elif [ -r /usr/include/termio.h ]; then \
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#define USE_TERMIO /* <termio.h> */' >> terminal.h; \
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
else \
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
echo '#define USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
fi
@echo '#endif' >> terminal.h
@echo '#endif' >> terminal.h
@echo '#endif' >> terminal.h
@echo 'terminal.h formed'
args.h: Makefile
rm -f args.h
@echo 'forming args.h'
@echo '/*' > args.h
@echo ' * DO NOT EDIT -- generated by the Makefile' >> args.h
@echo ' */' >> args.h
@echo '' >> args.h
@echo '/* what sort of variable args do we have? */' > args.h
-@if [ ! -z "${VARARG}" ]; then \
echo '#define ${VARARG}' >> args.h; \
elif [ -r /usr/include/stdarg.h ]; then \
echo '#define STDARG' >> args.h; \
elif [ -r /usr/include/varargs.h ]; then \
echo '#define VARARGS' >> args.h; \
else \
echo '#define SIMULATE_STDARG' >> args.h; \
fi
@echo 'args.h formed'
help/full: help/Makefile
cd help; ${MAKE} -f Makefile HELPDIR=${HELPDIR} full
calc.1: calc.man
rm -f calc.1
sed -e 's:@@@LIBDIR@@@:${LIBDIR}:g' < calc.man > calc.1
lint: ${BUILD_H_SRC} ${CALCSRC} lint.sed
${LINT} ${LINTFLAGS} ${LCFLAGS} ${CALCSRC} | sed -f lint.sed
tags: ${CALCSRC}
${CTAGS} ${CALCSRC}
clean:
rm -f ${CALCOBJS} ${CODEOBJS}
cd help; ${MAKE} -f Makefile clean
clobber:
rm -f ${CALCOBJS} ${CODEOBJS}
rm -f tags calc code ${BUILD_CODE_SRC}
rm -f ${BUILD_H_SRC} calc.1
cd help; ${MAKE} -f Makefile clobber
install: all
-@if [ ! -d ${LIBDIR} ]; then \
echo ${MKDIR} ${LIBDIR}; \
${MKDIR} ${LIBDIR}; \
fi
-@if [ ! -d ${HELPDIR} ]; then \
echo ${MKDIR} ${HELPDIR}; \
${MKDIR} ${HELPDIR}; \
fi
-@if [ ! -d ${BINDIR} ]; then \
echo ${MKDIR} ${BINDIR}; \
${MKDIR} ${BINDIR}; \
fi
chmod 0755 calc
cp calc ${BINDIR}
cd help; ${MAKE} -f Makefile HELPDIR=${HELPDIR} install
cd lib; ${MAKE} -f Makefile LIBDIR=${LIBDIR} install
-chmod 0444 calc.1
rm -f ${MANDIR}/calc.1
-cp calc.1 ${MANDIR}
@# The code program is not part of the calc distribution, don't worry
@# if you do not have it.
-@if [ -f code ]; then \
echo chmod +x code; \
chmod +x code; \
echo cp code ${BINDIR}; \
cp code ${BINDIR}; \
fi
# The code program is not part of the calc distribution, don't worry
# if you do not have it.
#
code: ${CODEOBJS}
${CC} ${CFLAGS} ${CODEOBJS} -o code ${NO_SHARED}
io_code.o: calc.h math.h alloc.h have_string.h have_stdlib.h have_malloc.h \
func.h opcodes.h config.h token.h symbol.h io_code.c
${CC} ${CFLAGS} -DCODE io_code.c -c
qmath_code.o: calc.h math.h alloc.h have_string.h have_stdlib.h have_malloc.h \
func.h opcodes.h config.h token.h symbol.h qmath_code.c
${CC} ${CFLAGS} -DCODE qmath_code.c -c
io_code.c: io.c
rm -f io_code.c
cp io.c io_code.c
qmath_code.c: qmath.c
rm -f qmath_code.c
cp qmath.c qmath_code.c
code.o: stdarg.h args.h math.h have_malloc.h Makefile
${CC} ${CFLAGS} -DCODE code.c -c
# make depend stuff
#
addop.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h opcodes.h string.h func.h token.h label.h symbol.h
alloc.o: alloc.h have_string.h have_stdlib.h
calc.o: hist.h calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h func.h opcodes.h config.h token.h symbol.h
codegen.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h token.h symbol.h label.h opcodes.h string.h \
func.h config.h hist.h
comfunc.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h
commath.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
config.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h
const.o: calc.h math.h alloc.h have_string.h have_stdlib.h have_malloc.h
file.o: stdarg.h args.h calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h have_string.h
func.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h opcodes.h token.h func.h string.h
input.o: calc.h math.h hist.h alloc.h have_string.h have_stdlib.h \
have_malloc.h config.h func.h
io.o: stdarg.h args.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h Makefile
hist.o: hist.h terminal.h Makefile
label.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h token.h label.h string.h opcodes.h func.h
listfunc.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h
matfunc.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h
obj.o: calc.h math.h alloc.h have_string.h have_stdlib.h have_malloc.h \
opcodes.h func.h symbol.h string.h
opcodes.o: stdarg.h args.h calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h have_string.h opcodes.h func.h symbol.h Makefile
qfunc.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
qmath.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
qmod.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
qtrans.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
string.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h string.h
symbol.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h token.h symbol.h string.h opcodes.h func.h
token.o: stdarg.h args.h calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h have_string.h token.h string.h Makefile
value.o: calc.h math.h alloc.h have_string.h have_stdlib.h \
have_malloc.h opcodes.h func.h symbol.h
zfunc.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
zmath.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
zmod.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h
zmul.o: math.h alloc.h have_string.h have_stdlib.h have_malloc.h