#
# Makefile for VIM on MSDOS, using DJGPP 2.0
#

#>>>>> choose options:

### See feature.h for a list of optionals.
### Any other defines can be included here.

DEFINES =

#>>>>> name of the compiler and linker, name of lib directory
CC = gcc

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

INCL = vim.h globals.h option.h keymap.h macros.h ascii.h term.h os_msdos.h structs.h
CFLAGS = -O4 -DMSDOS $(DEFINES) -Dinterrupt= -Dfar= -DMAXMEM=512 -D_NAIVE_DOS_REGS

OBJ = \
	objects/buffer.o \
	objects/charset.o \
	objects/digraph.o \
	objects/edit.o \
	objects/eval.o \
	objects/ex_cmds.o \
	objects/ex_docmd.o \
	objects/ex_getln.o \
	objects/fileio.o \
	objects/getchar.o \
	objects/main.o \
	objects/mark.o \
	objects/memfile.o \
	objects/memline.o \
	objects/message.o \
	objects/misc1.o \
	objects/misc2.o \
	objects/normal.o \
	objects/ops.o \
	objects/option.o \
	objects/os_msdos.o \
	objects/quickfix.o \
	objects/regexp.o \
	objects/screen.o \
	objects/search.o \
	objects/syntax.o \
	objects/tag.o \
	objects/term.o \
	objects/ui.o \
	objects/undo.o \
	objects/window.o \
	$(TERMLIB)

all: vim.exe ctags/ctags.exe xxd/xxd.exe

vim.exe: objects $(OBJ) version.c version.h
	$(CC) $(CFLAGS) -s -o vim.exe version.c $(OBJ) -lpc

ctags/ctags.exe: ctags/main.c
	cd ctags
	$(MAKE) -f Makefile.djg
	cd ..

xxd/xxd.exe: xxd/xxd.c
	cd xxd
	$(MAKE) -f Makefile.djg
	cd ..

objects:
	mkdir objects

ctags:
	command /c ctags *.c $(INCL)

clean:
	-del objects\*.o
	-del *.o
	-del *.exe
	-del ex_cmds.h
	-del *.~
	-del *~

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

objects/buffer.o:	buffer.c  $(INCL)
	$(CC) -c $(CFLAGS) buffer.c -o objects/buffer.o

objects/charset.o:	charset.c  $(INCL)
	$(CC) -c $(CFLAGS) charset.c -o objects/charset.o

objects/digraph.o:	digraph.c  $(INCL)
	$(CC) -c $(CFLAGS) digraph.c -o objects/digraph.o

objects/edit.o:	edit.c  $(INCL)
	$(CC) -c $(CFLAGS) edit.c -o objects/edit.o

objects/eval.o:	eval.c  $(INCL)
	$(CC) -c $(CFLAGS) eval.c -o objects/eval.o

objects/ex_cmds.o:	ex_cmds.c  $(INCL) ex_cmds.h
	$(CC) -c $(CFLAGS) ex_cmds.c -o objects/ex_cmds.o

objects/ex_docmd.o:	ex_docmd.c  $(INCL) ex_docmd.h ex_cmds.h
	$(CC) -c $(CFLAGS) ex_docmd.c -o objects/ex_docmd.o

objects/ex_getln.o:	ex_getln.c  $(INCL)
	$(CC) -c $(CFLAGS) ex_getln.c -o objects/ex_getln.o

objects/fileio.o:	fileio.c  $(INCL)
	$(CC) -c $(CFLAGS) fileio.c -o objects/fileio.o

objects/getchar.o:	getchar.c  $(INCL)
	$(CC) -c $(CFLAGS) getchar.c -o objects/getchar.o

objects/main.o:	main.c  $(INCL)
	$(CC) -c $(CFLAGS) main.c -o objects/main.o

objects/mark.o:	mark.c  $(INCL)
	$(CC) -c $(CFLAGS) mark.c -o objects/mark.o

objects/memfile.o:	memfile.c  $(INCL)
	$(CC) -c $(CFLAGS) memfile.c -o objects/memfile.o

objects/memline.o:	memline.c  $(INCL)
	$(CC) -c $(CFLAGS) memline.c -o objects/memline.o

objects/message.o:	message.c  $(INCL)
	$(CC) -c $(CFLAGS) message.c -o objects/message.o

objects/misc1.o:	misc1.c  $(INCL)
	$(CC) -c $(CFLAGS) misc1.c -o objects/misc1.o

objects/misc2.o:	misc2.c  $(INCL)
	$(CC) -c $(CFLAGS) misc2.c -o objects/misc2.o

objects/normal.o:	normal.c  $(INCL)
	$(CC) -c $(CFLAGS) normal.c -o objects/normal.o

objects/ops.o:	ops.c  $(INCL)
	$(CC) -c $(CFLAGS) ops.c -o objects/ops.o

objects/option.o:	option.c  $(INCL)
	$(CC) -c $(CFLAGS) option.c -o objects/option.o

objects/os_msdos.o:	os_msdos.c  $(INCL)
	$(CC) -c $(CFLAGS) os_msdos.c -o objects/os_msdos.o

objects/quickfix.o:	quickfix.c  $(INCL)
	$(CC) -c $(CFLAGS) quickfix.c -o objects/quickfix.o

objects/regexp.o:	regexp.c  $(INCL)
	$(CC) -c $(CFLAGS) regexp.c -o objects/regexp.o

objects/screen.o:	screen.c  $(INCL)
	$(CC) -c $(CFLAGS) screen.c -o objects/screen.o

objects/search.o:	search.c  $(INCL)
	$(CC) -c $(CFLAGS) search.c -o objects/search.o

objects/syntax.o:	syntax.c  $(INCL)
	$(CC) -c $(CFLAGS) syntax.c -o objects/syntax.o

objects/tag.o:	tag.c  $(INCL)
	$(CC) -c $(CFLAGS) tag.c -o objects/tag.o

objects/term.o:	term.c  $(INCL)
	$(CC) -c $(CFLAGS) term.c -o objects/term.o

objects/ui.o:	ui.c  $(INCL)
	$(CC) -c $(CFLAGS) ui.c -o objects/ui.o

objects/undo.o:	undo.c  $(INCL)
	$(CC) -c $(CFLAGS) undo.c -o objects/undo.o

objects/window.o:	window.c  $(INCL)
	$(CC) -c $(CFLAGS) window.c -o objects/window.o

ex_cmds.h: ex_docmd.h mkcmdtab.exe
	mkcmdtab ex_docmd.h ex_cmds.h

mkcmdtab.exe:	mkcmdtab.c
	$(CC) $(CFLAGS) -o mkcmdtab.exe mkcmdtab.c
