#
# Makefile for VIM, using MorphOS SDK (gcc 2.95.3)
#

CFLAGS =	-c						\
		-pipe						\
		-O2						\
		-Wall						\
								\
		-DNO_ARP					\
		-DUSE_TMPNAM					\
								\
		-I proto					\
								\
		-noixemul

PRG =		Vim
LIBS =		-noixemul -s
CC =		gcc
LD =		gcc
OBJDUMP =	objdump
RM =		rm

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

SRC =	arabic.c						\
	arglist.c						\
	autocmd.c						\
	blowfish.c						\
	buffer.c						\
	bufwrite.c						\
	change.c						\
	charset.c						\
	cindent.c						\
	clientserver.c						\
	clipboard.c						\
	cmdexpand.c						\
	cmdhist.c						\
	crypt.c							\
	crypt_zip.c						\
	debugger.c						\
	dict.c							\
	diff.c							\
	digraph.c						\
	drawline.c						\
	drawscreen.c						\
	edit.c							\
	eval.c							\
	evalbuffer.c						\
	evalfunc.c						\
	evalvars.c						\
	evalwindow.c						\
	ex_cmds.c						\
	ex_cmds2.c						\
	ex_docmd.c						\
	ex_eval.c						\
	ex_getln.c						\
	fileio.c						\
	filepath.c						\
	findfile.c						\
	fold.c							\
	getchar.c						\
	gui_xim.c						\
	hardcopy.c						\
	hashtab.c						\
	help.c							\
	highlight.c						\
	indent.c						\
	insexpand.c						\
	json.c							\
	list.c							\
	locale.c						\
	main.c							\
	map.c							\
	mark.c							\
	match.c							\
	mbyte.c							\
	memfile.c						\
	memline.c						\
	menu.c							\
	message.c						\
	misc1.c							\
	misc2.c							\
	mouse.c							\
	move.c							\
	normal.c						\
	ops.c							\
	option.c						\
	optionstr.c						\
	os_amiga.c						\
	popupmenu.c						\
	profiler.c						\
	quickfix.c						\
	regexp.c						\
	register.c						\
	scriptfile.c						\
	screen.c						\
	search.c						\
	session.c						\
	sha256.c						\
	sign.c							\
	spell.c							\
	spellfile.c						\
	spellsuggest.c						\
	syntax.c						\
	tag.c							\
	term.c							\
	testing.c						\
	textformat.c						\
	textobject.c						\
	textprop.c						\
	time.c							\
	typval.c						\
	ui.c							\
	undo.c							\
	usercmd.c						\
	userfunc.c						\
	version.c						\
	viminfo.c						\
	window.c						\

OBJ =	$(SRC:.c=.o)

$(PRG): $(OBJ)
	${LD} -o $(PRG) $(OBJ) $(LIBS)

dump: $(PRG)
	$(OBJDUMP) --reloc --disassemble-all $(PRG) > $(PRG).s

clean:
	$(RM) -fv $(OBJ) $(PRG) $(PRG).s
