# Makefile for /usr/miro/src/bin/fs2iff
#
#/*****************************************************************************
#                Copyright Carnegie Mellon University 1992
#
#                      All Rights Reserved
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted,
# provided that the above copyright notice appear in all copies and that
# both that copyright notice and this permission notice appear in
# supporting documentation, and that the name of CMU not be
# used in advertising or publicity pertaining to distribution of the
# software without specific, written prior permission.
#
# CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
# CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
# SOFTWARE.
#*****************************************************************************/
#

include $(TOPLEVEL)/Makefile.include

EXEC =		$(OBJECT_DIR)/fs2iff
SOURCE =	top.c gen.c perm.c search.c user.c vote.c
OBJ =		$(SOURCE:.c=.o)
OBJECTS =	$(OBJ;.*;$(OBJECT_DIR)/&)
HEADERS = 	$(SOURCE:.c=.h)
DEBUG_OBJS =	$(OBJECT_DIR)/print.o
MYPROGRAMS =	$(EXEC)

# Lint Flags
# LINT_FLAGS = -abchx
LINT_FLAGS = -abch

# Use the following def for debugging:
CFLAGS = -g -I$(INCLUDE_DIR) -DASSERT -DDEBUG

# Use the following defs for profiling execution:
# CFLAGS = -g -pg -I$(INCLUDE_DIR)
# LDFLAGS = -pg

# Use the following defs for optimization:
# CFLAGS = -O -I$(INCLUDE_DIR)
# LDFLAGS = -s

LDFLAGS = -L$(LIB_DIR)/

all: $(MYPROGRAMS)

$(EXEC): $(OBJECTS) $(DEBUG_OBJS)
	$(CC) -o $(EXEC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) $(DEBUG_OBJS)
	chmod ugo+x $(EXEC)

$(OBJECT_DIR)/print.o: print.c
	$(CC) $(CFLAGS) -c -o $(OBJECT_DIR)/print.o print.c

# override the 'foo.c -> foo' rule so it does nothing
.c:

ENUM_STRIP = enum.egrep

lint:
	lint $(LINT_FLAGS) $(SOURCE) | egrep -v -f $(ENUM_STRIP)

wc:
	wc $(HEADERS) $(SOURCE)

clean:
	rm -f $(OBJECTS)

# Header File Dependencies
TOP_H =		top.h
GEN_H =		gen.h
USER_H =	user.h
VOTE_H =	vote.h
PERM_H =	$(USER_H) perm.h
SEARCH_H =	search.h

$(OBJECT_DIR)/top.o:		$(TOP_H) $(GEN_H) $(PERM_H) $(SEARCH_H) top.c
	$(CC) $(CFLAGS) -c -o $(OBJECT_DIR)/top.o top.c

$(OBJECT_DIR)/gen.o:		$(TOP_H) $(GEN_H) $(USER_H) gen.c
	$(CC) $(CFLAGS) -c -o $(OBJECT_DIR)/gen.o gen.c

$(OBJECT_DIR)/perm.o:		$(TOP_H) $(PERM_H) $(SEARCH_H) $(USER_H) perm.c
	$(CC) $(CFLAGS) -c -o $(OBJECT_DIR)/perm.o perm.c

$(OBJECT_DIR)/search.o:		$(TOP_H) $(GEN_H) $(PERM_H) $(SEARCH_H) \
				$(VOTE_H) search.c
	$(CC) $(CFLAGS) -c -o $(OBJECT_DIR)/search.o search.c

$(OBJECT_DIR)/user.o:		$(TOP_H) $(GEN_H) $(USER_H) user.c
	$(CC) $(CFLAGS) -c -o $(OBJECT_DIR)/user.o user.c

$(OBJECT_DIR)/vote.o:		$(TOP_H) $(PERM_H) $(VOTE_H) vote.c
	$(CC) $(CFLAGS) -c -o $(OBJECT_DIR)/vote.o vote.c

