# Useful options you might want to put on the make command line:
#
#  - `SLANG=yes' to build against libslang instead of libncurses
#    (libncurses is better and more reliable, but libslang might be
#    all you have on a particular platform if you're unlucky).
#
#  - `XFLAGS=-DNO_LARGE_FILES' to leave out the 64-bit file access
#    support (restricts Tweak to editing files under 2Gb, but
#    should cause it to compile successfully on platforms without
#    fseeko and ftello and/or long long support).
#
#  - `VERSION=X.XX' (for whatever X.XX you like) to cause the `make
#    release' target to build a release tarball called
#    `tweak-X.XX.tar.gz' which unpacks into a directory
#    `tweak-X.XX'. Note that you also need to modify the version
#    number in tweak.h, or else the resulting binary won't match
#    the version number on the archive.

CC := gcc
CFLAGS := -g -c -Wall $(XFLAGS)
LINK := gcc
LFLAGS :=
LIBS := 

PREFIX=/usr/local
BINDIR=$(PREFIX)/bin
MANDIR=$(PREFIX)/man/man1

TWEAK := main.o keytab.o actions.o search.o rcfile.o buffer.o btree.o

ifeq ($(SLANG),yes)
# INCLUDE += -I/path/to/slang/include
# LIBS += -L/path/to/slang/lib
LIBS += -lslang
TWEAK += slang.o
else
LIBS += -lncurses
TWEAK += curses.o
endif

.c.o:
	$(CC) $(CFLAGS) $*.c

all: tweak tweak.1 btree.html

tweak:	$(TWEAK)
	$(LINK) -o tweak $(TWEAK) $(LIBS)

tweak.1:  manpage.but
	halibut --man=$@ $<

btree.html:  btree.but
	halibut --html=$@ $<

# Ensure tweak.h reflects this version number, and then run a
# command like `make release VERSION=3.00'.
release: tweak.1 btree.html
	mkdir -p reltmp/tweak-$(VERSION)
	for i in LICENCE *.c *.h *.but tweak.1 btree.html Makefile; do   \
		ln -s ../../$$i reltmp/tweak-$(VERSION);         \
	done
	(cd reltmp; tar chzvf ../tweak-$(VERSION).tar.gz tweak-$(VERSION))
	rm -rf reltmp

install: tweak tweak.1
	mkdir -p $(BINDIR)
	install tweak $(BINDIR)/tweak
	mkdir -p $(MANDIR)
	install -m 0644 tweak.1 $(MANDIR)/tweak.1

clean:
	rm -f *.o tweak tweak.1 btree.html

main.o: main.c tweak.h
keytab.o: keytab.c tweak.h
actions.o: actions.c tweak.h
search.o: search.c tweak.h
rcfile.o: rcfile.c tweak.h
buffer.o: buffer.c tweak.h btree.h
slang.o: slang.c tweak.h
curses.o: curses.c tweak.h
btree.o: btree.c btree.h
