4.3BSD-Reno/src/pgrm/dbx/Makefile

#
# Copyright (c) 1983 The Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that the above copyright notice and this paragraph are
# duplicated in all such forms and that any documentation,
# advertising materials, and other materials related to such
# distribution and use acknowledge that the software was developed
# by the University of California, Berkeley.  The name of the
# University may not be used to endorse or promote products derived
# from this software without specific prior written permission.
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
#	@(#)Makefile	5.18 (Berkeley) 6/29/90
#

# The file "defs.h" is included by all.

.SUFFIXES:
.SUFFIXES: .h .c .s .o .1 .0

AOUT	= tdbx
DESTDIR	=
DEST	= /usr/bin/dbx

CC	= cc
AS	= as
#
# if you want gripes
# CFLAGS = -g '-DMAINTAINER="linton@shasta.stanford.edu"'
#
CFLAGS	= -O # -g

LD = cc
LDFLAGS	= # -g
LIBRARIES = # -lPW for IRIS (System V)

OBJ = \
    y.tab.o \
    asm.o \
    events.o \
    c.o \
    cerror.o \
    check.o \
    coredump.o \
    debug.o \
    eval.o \
    fortran.o \
    keywords.o \
    languages.o \
    library.o \
    lists.o \
    machine.o \
    main.o \
    mappings.o \
    modula-2.o \
    names.o \
    object.o \
    operators.o \
    pascal.o \
    printsym.o \
    process.o \
    runtime.o \
    scanner.o \
    source.o \
    stabstring.o \
    symbols.o \
    tree.o \
    ops.o

HDR = \
    asm.h \
    events.h \
    c.h \
    check.h \
    coredump.h \
    debug.h \
    eval.h \
    fortran.h \
    keywords.h \
    languages.h \
    lists.h \
    machine.h \
    main.h \
    mappings.h \
    modula-2.h \
    names.h \
    object.h \
    operators.h \
    pascal.h \
    printsym.h \
    process.h \
    runtime.h \
    scanner.h \
    source.h \
    stabstring.h \
    symbols.h \
    tree.h \
    ops.h

SRC = \
    defs.h \
    commands.y \
    asm.c \
    events.c \
    c.c \
    cerror.${MACHINE}.s \
    check.c \
    coredump.c \
    debug.c \
    eval.c \
    fortran.c \
    keywords.c \
    languages.c \
    library.c \
    lists.c \
    main.c \
    mappings.c \
    modula-2.c \
    names.c \
    object.c \
    operators.c \
    pascal.c \
    printsym.c \
    process.c \
    scanner.c \
    source.c \
    stabstring.c \
    symbols.c \
    tree.c \
    ${MACHINE}.c \
    runtime.${MACHINE}.c \
    ops.${MACHINE}.c

.c.o:
	@echo "compiling $*.c"
	@${CC} ${CFLAGS} -c $*.c

.s.o:
	@echo "assembling $*.s"
	@rm -f tmp
	@cpp $*.s | egrep -v "^#" > tmp
	@${AS} -o $*.o tmp
	@rm -f tmp

.c.h:
	./makedefs -f $*.c $*.h

all ${AOUT}: makedefs mkdate ${HDR} ${OBJ}
	@rm -f date.c
	@./mkdate > date.c
	@echo "linking"
	@${CC} ${CFLAGS} -c date.c
	@${LD} ${LDFLAGS} date.o ${OBJ} ${LIBRARIES} -o ${AOUT}

profile: ${HDR} ${OBJ}
	@rm -f date.c
	@./mkdate > date.c
	@echo "linking with -p"
	@${CC} ${LDFLAGS} -p date.c ${OBJ} ${LIBRARIES} -o ${AOUT}

y.tab.c: commands.y
	@echo "expect 2 shift/reduce conflicts"
	yacc -d commands.y

cerror.s: cerror.${MACHINE}.s
	@rm -f cerror.s
	@ln -s cerror.${MACHINE}.s cerror.s

machine.c: ${MACHINE}.c
	@rm -f machine.c
	@ln -s ${MACHINE}.c machine.c

ops.c:	ops.${MACHINE}.c
	@rm -f ops.c
	@ln -s ops.${MACHINE}.c ops.c

runtime.c: runtime.${MACHINE}.c
	@rm -f runtime.c
	@ln -s runtime.${MACHINE}.c runtime.c

makedefs: makedefs.c library.o cerror.o
	${CC} -g makedefs.c library.o cerror.o -o makedefs

mkdate: mkdate.c
	${CC} -g ${CFLAGS} mkdate.c -o mkdate

dbx.0:	dbx.1
	nroff -mandoc dbx.1 > dbx.0

print:
	@echo "don't print it, it's too long"

depend:

#
# Don't worry about the removal of header files, they're created from
# the source files.
#

clean:
	rm -f ${HDR} ${OBJ} y.tab.c y.tab.h ${AOUT} mkdate mkdate.o \
	    makedefs makedefs.o date.c core mon.out prof.out make.out \
	    cerror.s ops.c machine.c runtime.c date.o
	@chdir tests; make clean

cleandir: clean
	rm -f dbx.0 tags .depend

cleandefs:
	rm -f ${HDR} y.tab.h

testinstall: ${AOUT} test install

test:
	@cd tests; make

install: ${AOUT} dbx.0
	install -s -o bin -g bin -m 755 ${AOUT} ${DESTDIR}${DEST}
	install -c -o bin -g bin -m 444 dbx.0 ${DESTDIR}/usr/share/man/cat1

#
# Create a tar file called "tape" containing relevant files.
#

TAPE = f tape

tape:
	@tar c${TAPE} Makefile History READ_ME ${SRC} \
	    makedefs.c mkdate.c tests pc0mods dbx.1 newdbx.1 dbxstab.5

#
# without tests subdirectory
#
srconlytape:
	@tar c${TAPE} Makefile History READ_ME ${SRC} \
	    makedefs.c mkdate.c dbx.1 newdbx.1 dbxstab.5

#
# Header dependencies are purposely incomplete since header files
# are "written" every time the accompanying source file changes even if
# the resulting contents of the header don't change.  The alternative is
# to force a "makedefs" to be invoked for every header file each time dbx
# is made.
#
# Also, there should be a dependency of scanner.o and keywords.o on y.tab.h
# but misfortunately silly make does a "makedefs y.tab.c y.tab.h" which
# destroys y.tab.h.
#

symbols.o tree.o check.o eval.o events.o: operators.h