# phil's makefile
# $Header: /mit/crlmodels/src/xdbv/RCS/Makefile,v 1.1 91/07/18 22:07:47 phils Exp Locker: phils $

LIBNAME    = Sml
CC	        = cc -D_NO_PROTO
# CC	    = gcc -fstrength-reduce -fpcc-struct-return -fwritable-strings -ansi -pedantic -Wall
LIBDIR      = /mit/crlmodels/src/$(MACHINE)lib
BINDIR      = $(MACHINE)bin
X11DIR      = /mit/x11
MOTIFDIR    = /mit/motif
DEST        = /mit/floorplans/src
FLAGS	    = -O
INCLUDE     = -I$(LIBDIR) -I$(X11DIR)/include -I$(MOTIFDIR)/include
CFLAGS	    = $(INCLUDE) $(FLAGS)
YFLAGS      = -d
PRINTNAME   = DXF
PROGRAM     = xdxf

EDITPGM 	= /mit/floorplans/src/dxfedit.prl

EXTLIBS	    = -L$(LIBDIR) -L$(X11DIR)/$(MACHINE)lib\
			-L$(MOTIFDIR)/$(MACHINE)lib\
			-l$(LIBNAME) -lXm -lXt -lX11 -lm

EXTHDRS       = /usr/include/X11/Composite.h \
		/usr/include/X11/Constraint.h \
		/usr/include/X11/Core.h \
		/usr/include/X11/Intrinsic.h \
		/usr/include/X11/Object.h \
		/usr/include/X11/RectObj.h \
		/usr/include/X11/Shell.h \
		/usr/include/X11/StringDefs.h \
		/usr/include/X11/Vendor.h \
		/usr/include/X11/X.h \
		/usr/include/X11/Xaw/Cardinals.h \
		/usr/include/X11/Xlib.h \
		/usr/include/X11/Xos.h \
		/usr/include/X11/Xresource.h \
		/usr/include/X11/Xutil.h \
		/usr/include/Xm/BulletinB.h \
		/usr/include/Xm/CascadeB.h \
		/usr/include/Xm/CascadeBG.h \
		/usr/include/Xm/DialogS.h \
		/usr/include/Xm/DrawingA.h \
		/usr/include/Xm/DrawnB.h \
		/usr/include/Xm/ExtObject.h \
		/usr/include/Xm/FileSB.h \
		/usr/include/Xm/Form.h \
		/usr/include/Xm/Frame.h \
		/usr/include/Xm/Label.h \
		/usr/include/Xm/LabelG.h \
		/usr/include/Xm/List.h \
		/usr/include/Xm/MainW.h \
		/usr/include/Xm/MenuShell.h \
		/usr/include/Xm/PanedW.h \
		/usr/include/Xm/PushB.h \
		/usr/include/Xm/PushBG.h \
		/usr/include/Xm/RowColumn.h \
		/usr/include/Xm/Scale.h \
		/usr/include/Xm/ScrollBar.h \
		/usr/include/Xm/ScrolledW.h \
		/usr/include/Xm/SelectioB.h \
		/usr/include/Xm/SeparatoG.h \
		/usr/include/Xm/Text.h \
		/usr/include/Xm/ToggleBG.h \
		/usr/include/Xm/VendorE.h \
		/usr/include/Xm/VirtKeys.h \
		/usr/include/Xm/Xm.h \
		/usr/include/fcntl.h \
		/usr/include/stdio.h \
		/usr/include/string.h \
		/usr/include/strings.h \
		/usr/include/sys/file.h \
		/usr/include/sys/time.h \
		/usr/include/sys/types.h \
		/usr/include/time.h

HDRS		  = config.h \
		defs.h \
		extern.h \
		function.h \
		proto.h \
		y.tab.h

LIBS          = $(LIBDIR)/lib$(LIBNAME).a
LINTLIBS      = $(LIBDIR)/llib-l$(LIBNAME).ln

MAKEFILE      = Makefile

OBJS          = dxf.o \
		dxftokens.o \
		main.o

PRINTER       = linus  # ln03-9-551


RCS_LOG   = automatic chekin

SRCS          = dxf.y \
		dxftokens.l \
		main.c

VPATH         = .

all:		$(PROGRAM)
#		$(PROGRAM)

allnew:		spotless program lint

$(PROGRAM): $(LIBS) $(OBJS) 
		@echo -n "Linking $(PROGRAM) ... "
		@$(CC) $(CFLAGS) $(OBJS) $(LIBS) $(EXTLIBS) -o $(PROGRAM).out
		@mv $(PROGRAM).out $(PROGRAM)
		@echo "done"

$(LIBS):
		(cd $(LIBDIR); make $(MFLAGS) CC='$(CC)' MACHINE='$(MACHINE)'\
		FLAGS='$(FLAGS)' library)


dxf.o:	$(HDRS) dxf.y
	rm -f dxf.o dxf.tab.c y.tab.c
	yacc $(YFLAGS) dxf.y
	mv y.tab.c dxf.tab.c
	$(EDITPGM) < dxf.tab.c > y.tab.c
	cc $(CFLAGS) -c y.tab.c
	mv y.tab.o dxf.o
	rm -f dxf.tab.c y.tab.c

y.tab.h:	dxf.y

dxftokens.o:	$(HDRS) dxftokens.l
	rm -f lex.yy.c dxftokens.o
	lex -t dxftokens.l | $(EDITPGM) > lex.yy.c
	cc $(CFLAGS) -c lex.yy.c
	mv lex.yy.o dxftokens.o
	rm -f lex.yy.c

$(LINTLIBS):
		(cd $(LIBDIR); make $(MFLAGS) lint)

ci:  $(HDRS) $(SRCS)
	@ci -l -q -m"$(RCS_LOG)" $(HDRS) $(SRCS)
	@chmod -f g+w $(HDRS) $(SRCS)

clean:;		@rm -f $(OBJS) $(PROGRAM) y.tab.h core lines tags *.err\
		linted *.c% *~

spotless:	clean
		(cd $(LIBDIR); make $(MFLAGS) MACHINE=$(MACHINE) clean)
		@rm -f *.o *.bak *.BAK


depend:;	@mkmf -d -F $(MAKEFILE) "PROGRAM=$(PROGRAM)"
		@makedepend -- $(CFLAGS) -- $(SRCS)

index:;		@ctags -wx $(HDRS) $(SRCS)

install:	$(PROGRAM)
		rm -f $(DEST)/xdbv2
		@echo Installing $(PROGRAM) in $(DEST)/xdbv2
		@compress $(DEST)/xdbv2
		@install -s -m 755 $(PROGRAM) $(DEST)/xdbv2

lint:	$(LINTLIBS)
		@lint -hbuzx $(INCLUDE) -D_NO_PROTO  $(SRCS) $(LINTLIBS) $(EXTLIBS) |\
		grep -v llib-port | tee linted

print:;
		@rm -f $(PRINTNAME)
		@touch $(PRINTNAME)
		@for i in $(SRCS) $(HDRS) ; do\
        		expand -4 $$i | cat -n | pr -f -h $$i >> $(PRINTNAME); \
            		echo $$i; \
        	done	
		@enscript -2r -G -P$(PRINTER) $(PRINTNAME)
		@rm -f $(PRINTNAME)

proto:;
		rm -f proto.h
		cproto -f4 -p -DPROTOTYPER $(INCLUDE) $(SRCS) > proto.h
		mv proto.h xdbvproto.h

program:	$(PROGRAM)

saber:;
	/mit/saber2/vaxbin/saber2

saber_src:
	#load $(INCLUDE) -g $(SRCS) $(LIBDIR)/*.c $(LIBDIR)/dxf.o\
		$(LIBDIR)/dxftokens.o $(EXTLIBS)

saber_obj:
	#load $(OBJS) $(LIBS) $(LIBDIR)/*.o $(EXTLIBS)

tags:		$(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS)

tar:;
	tar cvf xdbv.tar $(HDRS) $(SRCS) *.bit *.1 *.ad Makefile\
	XmapHelp lib/*.c lib/*.h lib/Makefile

update:		$(DEST)/$(PROGRAM)

$(DEST)/$(PROGRAM): $(SRCS) $(LIBS) $(HDRS) $(EXTHDRS)
		@make -f $(MAKEFILE) DEST=$(DEST) install

# DO NOT DELETE THIS LINE -- make depend depends on it.

dxf.o: /usr/include/stdio.h /mit/crlmodels/src/rtlib/sml.h
dxf.o: /mit/x11/include/X11/Xos.h /usr/include/sys/types.h
dxf.o: /usr/include/strings.h /usr/include/sys/file.h /usr/include/sys/time.h
dxf.o: /usr/include/sys/time.h /mit/x11/include/X11/Xlib.h
dxf.o: /mit/x11/include/X11/X.h /mit/x11/include/X11/Xutil.h
dxf.o: /mit/crlmodels/src/rtlib/smlproto.h /mit/crlmodels/src/rtlib/smldefs.h
dxftokens.o: y.tab.h
main.o: /usr/include/stdio.h
