#
# Makefile for VIM, using DICE 3
#
#

#>>>>> choose options:
### See feature.h for a list of optionals.
### Any other defines can be included here.
DEFINES = -DHAVE_TGETENT -DUP_BC_PC_EXTERN -DOSPEED_EXTERN

#>>>>> if HAVE_TGETENT is defined o/termlib.o has to be used
TERMLIB = o/termlib.o
#TERMLIB = 

#>>>>> end of choices
###########################################################################

CFLAGS = -c -DAMIGA $(DEFINES)

SYMS = vim.syms
PRE = -H${SYMS}=vim.h
LIBS = -la
CC = dcc
LD = dcc

.c.o:
	${CC} ${PRE} ${CFLAGS} $< -o $@

SRC =	alloc.c amiga.c buffer.c charset.c cmdcmds.c cmdline.c \
	csearch.c digraph.c edit.c fileio.c getchar.c help.c \
	linefunc.c main.c mark.c memfile.c memline.c message.c misccmds.c \
	normal.c ops.c option.c quickfix.c regexp.c \
	regsub.c screen.c search.c \
	tables.c tag.c term.c undo.c window.c version.c

OBJ =	o/alloc.o o/amiga.o o/buffer.o o/charset.o \
	o/cmdcmds.o o/cmdline.o o/csearch.o \
	o/digraph.o o/edit.o o/fileio.o o/getchar.o \
	o/help.o o/linefunc.o o/main.o o/mark.o \
	o/memfile.o o/memline.o o/message.o \
	o/misccmds.o o/normal.o o/ops.o o/option.o \
	o/quickfix.o o/regexp.o o/regsub.o \
	o/screen.o o/search.o o/tables.o o/tag.o \
	o/term.o o/undo.o o/window.o $(TERMLIB)

Vim: $(OBJ) version.c
	${CC} $(CFLAGS) version.c -o o/version.o
	${LD} -o Vim $(OBJ) o/version.o $(LIBS)

debug: $(OBJ) version.c
	${CC} $(CFLAGS) version.c -o o/version.o
	${LD} -s -o Vim $(OBJ) o/version.o $(LIBS)

ctags:
	csh -c ctags $(SRC) *.h

clean:
	delete o/*.o Vim $(SYMS) mkcmdtab cmdtab.h

$(SYMS)  : vim.h globals.h keymap.h macros.h ascii.h term.h amiga.h structs.h
	delete $(SYMS)

###########################################################################

o/alloc.o:	alloc.c  $(SYMS)

o/amiga.o:	amiga.c  $(SYMS) amiga.h

o/buffer.o:	buffer.c  $(SYMS)

o/charset.o:	charset.c  $(SYMS)

o/cmdcmds.o:	cmdcmds.c  $(SYMS)

o/cmdline.o:	cmdline.c  $(SYMS) cmdtab.h

o/csearch.o:	csearch.c  $(SYMS) regexp.h

o/digraph.o: digraph.c	$(SYMS)

o/edit.o: edit.c	$(SYMS)

o/fileio.o:	fileio.c  $(SYMS)

o/getchar.o: getchar.c	$(SYMS)

o/help.o: help.c	$(SYMS)

o/linefunc.o:	linefunc.c  $(SYMS)

o/main.o: main.c $(SYMS)

o/mark.o: mark.c	$(SYMS)

o/memfile.o:	memfile.c  $(SYMS)

o/memline.o:	memline.c  $(SYMS)

o/message.o:	message.c  $(SYMS)

o/misccmds.o:	misccmds.c  $(SYMS)

o/normal.o:	normal.c  $(SYMS) ops.h

o/ops.o:	ops.c  $(SYMS) ops.h

o/option.o:	option.c  $(SYMS)
# Because of a bug in DC1 2.06.40, initialisation of unions does not
# work correctly. dc1-21 is DC1 2.06.21 which does work.
#	rename dc1-21 dc1
	${CC} ${CFLAGS} option.c -o o/option.o
#	rename dc1 dc1-21

o/quickfix.o:	quickfix.c  $(SYMS)

o/regexp.o:	regexp.c  $(SYMS) regexp.h

o/regsub.o:	regsub.c  $(SYMS) regexp.h

o/screen.o:	screen.c  $(SYMS)

o/search.o:	search.c  $(SYMS) regexp.h

o/tables.o:	tables.c  $(SYMS)

o/tag.o:	tag.c  $(SYMS)

o/term.o:	term.c  $(SYMS) term.h

o/termlib.o:	termlib.c $(SYMS)

o/undo.o: undo.c	$(SYMS)

o/window.o: window.c	$(SYMS)

cmdtab.h: cmdtab.tab mkcmdtab
	mkcmdtab cmdtab.tab cmdtab.h

mkcmdtab: o/mkcmdtab.o
	${LD} -o mkcmdtab o/mkcmdtab.o

o/mkcmdtab.o: mkcmdtab.c
