| 1 | # Useful options you might want to put on the make command line: |
| 2 | # |
| 3 | # - `SLANG=yes' to build against libslang instead of libncurses |
| 4 | # (libncurses is better and more reliable, but libslang might be |
| 5 | # all you have on a particular platform if you're unlucky). |
| 6 | # |
| 7 | # - `XFLAGS=-DNO_LARGE_FILES' to leave out the 64-bit file access |
| 8 | # support (restricts Tweak to editing files under 2Gb, but |
| 9 | # should cause it to compile successfully on platforms without |
| 10 | # fseeko and ftello and/or long long support). |
| 11 | # |
| 12 | # - `VERSION=X.XX' (for whatever X.XX you like) to cause the `make |
| 13 | # release' target to build a release tarball called |
| 14 | # `tweak-X.XX.tar.gz' which unpacks into a directory |
| 15 | # `tweak-X.XX'. Note that you also need to modify the version |
| 16 | # number in tweak.h, or else the resulting binary won't match |
| 17 | # the version number on the archive. |
| 18 | |
| 19 | CC := gcc |
| 20 | CFLAGS := -g -c -Wall $(XFLAGS) |
| 21 | LINK := gcc |
| 22 | LFLAGS := |
| 23 | LIBS := |
| 24 | |
| 25 | PREFIX=/usr/local |
| 26 | BINDIR=$(PREFIX)/bin |
| 27 | MANDIR=$(PREFIX)/man/man1 |
| 28 | |
| 29 | TWEAK := main.o keytab.o actions.o search.o rcfile.o buffer.o btree.o |
| 30 | |
| 31 | ifeq ($(SLANG),yes) |
| 32 | # INCLUDE += -I/path/to/slang/include |
| 33 | # LIBS += -L/path/to/slang/lib |
| 34 | LIBS += -lslang |
| 35 | TWEAK += slang.o |
| 36 | else |
| 37 | LIBS += -lncurses |
| 38 | TWEAK += curses.o |
| 39 | endif |
| 40 | |
| 41 | .c.o: |
| 42 | $(CC) $(CFLAGS) $*.c |
| 43 | |
| 44 | all: tweak tweak.1 btree.html |
| 45 | |
| 46 | tweak: $(TWEAK) |
| 47 | $(LINK) -o tweak $(TWEAK) $(LIBS) |
| 48 | |
| 49 | tweak.1: manpage.but |
| 50 | halibut --man=$@ $< |
| 51 | |
| 52 | btree.html: btree.but |
| 53 | halibut --html=$@ $< |
| 54 | |
| 55 | # Ensure tweak.h reflects this version number, and then run a |
| 56 | # command like `make release VERSION=3.00'. |
| 57 | release: tweak.1 btree.html |
| 58 | mkdir -p reltmp/tweak-$(VERSION) |
| 59 | for i in LICENCE *.c *.h *.but tweak.1 btree.html Makefile; do \ |
| 60 | ln -s ../../$$i reltmp/tweak-$(VERSION); \ |
| 61 | done |
| 62 | (cd reltmp; tar chzvf ../tweak-$(VERSION).tar.gz tweak-$(VERSION)) |
| 63 | rm -rf reltmp |
| 64 | |
| 65 | install: tweak tweak.1 |
| 66 | mkdir -p $(BINDIR) |
| 67 | install tweak $(BINDIR)/tweak |
| 68 | mkdir -p $(MANDIR) |
| 69 | install -m 0644 tweak.1 $(MANDIR)/tweak.1 |
| 70 | |
| 71 | clean: |
| 72 | rm -f *.o tweak tweak.1 btree.html |
| 73 | |
| 74 | main.o: main.c tweak.h |
| 75 | keytab.o: keytab.c tweak.h |
| 76 | actions.o: actions.c tweak.h |
| 77 | search.o: search.c tweak.h |
| 78 | rcfile.o: rcfile.c tweak.h |
| 79 | buffer.o: buffer.c tweak.h btree.h |
| 80 | slang.o: slang.c tweak.h |
| 81 | curses.o: curses.c tweak.h |
| 82 | btree.o: btree.c btree.h |