File: Makefile

package info (click to toggle)
wiggle 1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 15,036 kB
  • sloc: ansic: 13,649; sh: 1,180; makefile: 194
file content (111 lines) | stat: -rw-r--r-- 3,155 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

# Note on my Mobile Pentium II, -march=pentium2 delivers twice the performance of i386
#OptDbg=-O3
#OptDbg=-O3 -march=pentium2
OptDbg=-ggdb
ifndef CWFLAGS
CWFLAGS=-Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
endif
CFLAGS=$(OptDbg) -I. $(CWFLAGS)

PREFIX  = /usr
# STRIP = -s
INSTALL = /usr/bin/install
DESTDIR =
BINDIR  = $(PREFIX)/bin
MANDIR  = $(PREFIX)/share/man
MAN1DIR = $(MANDIR)/man1
MAN5DIR = $(MANDIR)/man5
LDLIBS = -lncurses

# Where to place intermediate objects
O=O
# Where to place final objects
BIN=.
DOC=.

LIBOBJ= load.o parse.o split.o extract.o diff.o bestmatch.o merge2.o utils.o ccan/hash/hash.o
OBJ=wiggle.o ReadMe.o vpatch.o

BOBJ=$(patsubst %.o,$(O)/%.o,$(OBJ))
BLIBOBJ=$(patsubst %.o,$(O)/%.o,$(LIBOBJ))

all: $(BIN)/wiggle $(DOC)/wiggle.man test
lib : $(O)/libwiggle.a

#
# Pretty print
#
V	      = @
Q	      = $(V:1=)
QUIET_CC      = $(Q:@=@echo    '     CC       '$@;)
QUIET_AR      = $(Q:@=@echo    '     AR       '$@;)
QUIET_LINK    = $(Q:@=@echo    '     LINK     '$@;)
QUIET_MAN     = $(Q:@=@echo    '     MAN      '$@;)
QUIET_CLEAN   = $(Q:@=@echo    '     CLEAN    '$@;)


$(BIN)/wiggle : $(BOBJ) $(O)/libwiggle.a
	$(QUIET_LINK)$(CC) $(CFLAGS) $^ $(LDLIBS) -o $@

$(O)/libwiggle.a : $(BLIBOBJ)
	$(QUIET_AR)ar cr $@ $^

$(BOBJ) :: wiggle.h

$(O)/split.o :: ccan/hash/hash.h config.h

$(BOBJ) $(BLIBOBJ) :: $(O)/%.o : %.c
	@mkdir -p $(dir $@)
	$(QUIET_CC)$(CC) $(CFLAGS) -c -o $@ $<

VERSION = $(shell [ -d .git ] && git 2> /dev/null describe HEAD)
VERS_DATE = $(shell [ -d .git ] && git 2> /dev/null log -n1 --format=format:%cd --date=short)
DVERS = $(if $(VERSION),-DVERSION=\"$(VERSION)\",)
DDATE = $(if $(VERS_DATE),-DVERS_DATE=\"$(VERS_DATE)\",)
CFLAGS += $(DVERS) $(DDATE)

test: wiggle dotest
	./dotest

valgrind: wiggle dotest
	./dotest valgrind

vtest: wiggle dovtest
	./dovtest

$(DOC)/wiggle.man : wiggle.1
	$(QUIET_MAN)nroff -man wiggle.1 > $@

clean: targets artifacts dirs
targets:
	$(QUIET_CLEAN)rm -f $(O)/*.[ao] $(O)/ccan/hash/*.o $(DOC)/*.man $(BIN)/wiggle .version* demo.patch version
artifacts:
	$(QUIET_CLEAN)find . -name core -o -name '*.tmp*' -o -name .tmp -o -name .time | xargs rm -f
dirs : targets artifacts
	$(QUIET_CLEAN)[ -d $(O)/ccan/hash ] && rmdir -p $(O)/ccan/hash || true
	$(QUIET_CLEAN)[ -d $(O) ] && rmdir -p $(O) || true

install : $(BIN)/wiggle wiggle.1
	$(INSTALL) -d $(DESTDIR)$(BINDIR) $(DESTDIR)$(MAN1DIR)
	$(INSTALL) $(STRIP) -m 755 $(BIN)/wiggle $(DESTDIR)$(BINDIR)
	$(INSTALL) -m 644 wiggle.1 $(DESTDIR)$(MAN1DIR)

version : ReadMe.c wiggle.1
	@rm -f version
	@sed -n -e 's/.*VERSION "\([0-9.]*\)".*/\1/p' ReadMe.c > .version-readme
	@sed -n -e 's/.*WIGGLE 1 "" v\([0-9.]*\)$$/\1/p' wiggle.1 > .version-man
	@cmp -s .version-readme .version-man && cat .version-man > version || { echo Inconsistant versions.; exit 1;}

dist : test clean version
	mkdir -p DIST
	rm -f DIST/wiggle-`cat version`
	git archive --prefix wiggle-`cat version`/  v`cat version` | gzip -9 > DIST/wiggle-`cat version`.tar.gz

v : version
	cat version

demo.patch: force
	diff -rup demo.orig demo.patched | sed 's/demo.patched/demo/' > demo.patch

force: