#
# $Id: Makefile,v 1.6 2001/12/19 20:54:31 d019080 Exp $
#
MDEFS= CC=cc CFLAGS=-g RM="rm -f" OBJ=.o EXE= LD=cc LDFLAGS=-g LIBS=-ldl XD= LDTARGET='-o $@'
TAIL="`uname -s | tr '/' '-'`"
BUILD=./build.$(TAIL)
XDEFS=-DXDEBUG=1

SRCS =	buffers.c	contexts.c	creds.c		debug.c		\
	filexfer.c	generic.c	gsstest.c	load_dll.c	\
	msg_prot.c	names.c		non_ansi.c	oids.c		\
	rtlink.c	timer.c		verbose.c	platform.c	\
	errors.c	md5.c

XSRCS = link_lib.c

COMMON_HDRS=	common.h mysccs.h platform.h debug.h non_ansi.h verbose.h 

ALL_HDRS=	load_dll.h gss_argm.h gssapi_2.h \
		gsstest.h rtlink.h sncgss.h $(COMMON_HDRS)

FILES_BUILD = \
	build.AIX	build.HP-UX	build.Linux	build.OSF1	\
	build.SINIX-Y	build.SunOS	build.OS-390	build.ReliantUNIX-N \
	make.cmd	Makefile

FILES_CVS = \
	CVS/Entries		CVS/Repository		CVS/Root	\
	debug/CVS/Entries	debug/CVS/Repository	debug/CVS/Root

FILES_UNIX = \
	aix-model	osftimer.s

FILES_WIN = \
	gssapi32.def	gsstest.dsw	gsstest.dsp	gsstest.mak	\
	gsstest.mdp	gsstest.opt

FILES_PRECOMPILED = \
	debug/gsstest.exe	debug/gssntlm.dll

TEXT_FILES = \
	$(SRCS) $(XSRCS) $(ALL_HDRS) README \
	$(FILES_BUILD) $(FILES_CVS) $(FILES_UNIX)

BINARY_FILES = \
	$(FILES_WIN)	$(FILES_PRECOMPILED)



OBJS =	$(XD)buffers$(OBJ)	$(XD)contexts$(OBJ)	$(XD)creds$(OBJ)    \
	$(XD)debug$(OBJ)	$(XD)errors$(OBJ)	$(XD)filexfer$(OBJ) \
	$(XD)generic$(OBJ)	$(XD)gsstest$(OBJ)	$(XD)msg_prot$(OBJ) \
	$(XD)names$(OBJ)	$(XD)non_ansi$(OBJ)	$(XD)oids$(OBJ)     \
	$(XD)platform$(OBJ)	$(XD)rtlink$(OBJ)	$(XD)timer$(OBJ)    \
	$(XD)verbose$(OBJ)	$(XD)md5$(OBJ)

DYN_LINK_OBJ    = $(XD)load_dll$(OBJ)
STATIC_LINK_OBJ = $(XD)link_lib$(OBJ)


TARGET     = $(XD)gsstest$(EXE)
DBG_TARGET = $(XD)gsstestd$(EXE)


### targets

all:
	$(BUILD) $(MAKE) do-all

32:
	$(BUILD) $(MAKE) 32 do-all

64:
	$(BUILD) $(MAKE) 64 do-all

static:
	$(BUILD) $(MAKE) do-static

clean:
	$(BUILD) $(MAKE) do-clean

zip:
	zip -ll gsstest.zip $(TEXT_FILES)
	zip     gsstest.zip $(BINARY_FILES)

do-all:		$(TARGET)

do-static:	$(DBG_TARGET)


$(OBJS) $(DYN_LINK_OBJ) $(STATIC_LINK_OBJ):
	$(CC) $(CFLAGS) $(XDEFS) -o $@ -c $(BASENAME_MACRO)


$(TARGET): $(OBJS) $(DYN_LINK_OBJ) $(EXTRA_OBJS)
	$(LD) $(LDTARGET) $(LDFLAGS) $(OBJS) $(EXTRA_OBJS) \
			  $(DYN_LINK_OBJ) $(LDLIBS)


$(DBG_TARGET): $(OBJS) $(STATIC_LINK_OBJ) $(EXTRA_OBJS)
	$(LD) $(LDTARGET) $(DBG_LDFLAGS) $(OBJS) $(EXTRA_OBJS) \
			  $(STATIC_LINK_OBJ) $(DBG_LDLIBS)


do-clean:
	$(RM) core
	$(RM) $(XD)*$(OBJ)
	$(RM) $(TARGET)
	$(RM) $(DBG_TARGET)
	$(RM) gtopts
	$(RM) gtctxpar
	$(RM) gtctxcld
	$(EXTRA_REMOVE)

#
# MSVC is so awfully messy
#
win32-clean:	do-clean
	$(RM) $(XD)*.pdb
	$(RM) $(XD)*.pch
	$(RM) $(XD)*.idb
	$(RM) $(XD)*.map
	$(RM) $(XD)*.ilk
	$(RM) *.pdb
	$(RM) *.idb
	$(RM) *.pch
	$(RM) *.plg
	$(RM) *.ncb


### dependencies

$(XD)buffers$(OBJ):	buffers.c	$(ALL_HDRS)
$(XD)contexts$(OBJ):	contexts.c	$(ALL_HDRS)
$(XD)creds$(OBJ):	creds.c		$(ALL_HDRS)
$(XD)debug$(OBJ):	debug.c	debug.h
$(XD)errors$(OBJ):	errors.c	$(ALL_HDRS)
$(XD)filexfer$(OBJ):	filexfer.c	$(ALL_HDRS)
$(XD)generic$(OBJ):	generic.c	$(ALL_HDRS)
$(XD)gsstest$(OBJ):	gsstest.c	$(ALL_HDRS)
$(XD)load_dll$(OBJ):	load_dll.c	$(ALL_HDRS)
$(XD)msg_prot$(OBJ):	msg_prot.c	$(ALL_HDRS)
$(XD)names$(OBJ):	names.c		$(ALL_HDRS)
$(XD)non_ansi$(OBJ):	non_ansi.c	$(ALL_HDRS)
$(XD)oids$(OBJ):	oids.c		$(ALL_HDRS)
$(XD)platform$(OBJ):	platform.c	$(ALL_HDRS)
$(XD)rtlink$(OBJ):	rtlink.c	$(ALL_HDRS)
$(XD)timer$(OBJ):	timer.c		$(ALL_HDRS)
$(XD)verbose$(OBJ):	verbose.c	$(ALL_HDRS)

$(XD)link_lib$(OBJ): 	link_lib.c	$(ALL_HDRS)

$(XD)osftimer$(OBJ):	osftimer.s
$(XD)md5$(OBJ):		md5.c		$(ALL_HDRS)


