forked from mauke/unibilium
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Makefile.in
145 lines (108 loc) · 3.96 KB
/
Makefile.in
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
ifneq ($(wildcard .maint),)
include maint.mk
endif
CC=@CC@
LIBTOOL=@LIBTOOL@
CFLAGS=@CFLAGS@
LDFLAGS=@LDFLAGS@
CFLAGS_DEBUG=
PACKAGE=@PACKAGE_NAME@
PKG_MAJOR=@MAJOR@
PKG_MINOR=@MINOR@
PKG_REVISION=@PATCH@
PKG_VERSION=$(PKG_MAJOR).$(PKG_MINOR).$(PKG_REVISION)
# I am implementation $LT_REVISION of binary interface $LT_CURRENT, which is
# a superset of all interfaces back to $LT_CURRENT - $LT_AGE.
LT_REVISION=1
LT_CURRENT=4
LT_AGE=0
top_builddir=@top_builddir@
prefix=@prefix@
exec_prefix=@prefix@
datarootdir=@datarootdir@
LIBDIR=@libdir@
INCDIR=@includedir@
MANDIR=@mandir@
MAN3DIR=$(MANDIR)/man3
ifneq ($(OS),Windows_NT)
TERMINFO_DIRS="$(shell ncursesw6-config --terminfo-dirs 2>/dev/null || \
ncurses6-config --terminfo-dirs 2>/dev/null || \
ncursesw5-config --terminfo-dirs 2>/dev/null || \
ncurses5-config --terminfo-dirs 2>/dev/null || \
echo "/etc/terminfo:/lib/terminfo:/usr/share/terminfo:/usr/lib/terminfo:/usr/local/share/terminfo:/usr/local/lib/terminfo")"
else
TERMINFO_DIRS=""
endif
POD2MAN=pod2man
POD2MAN_OPTS=-c "$(PACKAGE)" -s3 -r "$(PACKAGE)-$(PKG_VERSION)"
PROVE=prove
PROVEFLAGS=-f `perl -we 'print $$ENV{MAKEFLAGS} =~ /-j *(\d+)?/ ? "-j" . ($$1 || 2) : ""'`
ifeq ($(DEBUG),1)
CFLAGS_DEBUG=-ggdb -DDEBUG -Og
endif
OBJECTS=unibilium.lo uninames.lo uniutil.lo
LIBRARY=libunibilium.la
PODS=$(wildcard doc/*.pod)
MANPAGES=$(addprefix man/,$(notdir $(PODS:.pod=.3.gz)))
TOOLS=$(wildcard tools/*.c)
TESTS=$(wildcard t/*.c)
.PHONY: all
all: $(LIBRARY) build-man build-tools build-test
%.lo: %.c unibilium.h
$(LIBTOOL) --mode=compile --tag=CC $(CC) -I. -Wall -std=c99 $(CFLAGS) $(CFLAGS_DEBUG) -o $@ -c $<
uniutil.lo: uniutil.c unibilium.h
$(LIBTOOL) --mode=compile --tag=CC $(CC) -I. -DTERMINFO_DIRS='$(TERMINFO_DIRS)' -Wall -std=c99 $(CFLAGS) $(CFLAGS_DEBUG) -o $@ -c $<
$(LIBRARY): $(OBJECTS)
$(LIBTOOL) --mode=link --tag=CC $(CC) $(LDFLAGS) -rpath '$(LIBDIR)' -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -o $@ $^
tools/%: $(LIBRARY) $(OBJECTS) tools/%.lo
$(LIBTOOL) --mode=link --tag=CC $(CC) $(LDFLAGS) -o $@ $^
%.t: $(LIBRARY) $(OBJECTS) %.lo
$(LIBTOOL) --mode=link --tag=CC $(CC) $(LDFLAGS) -o $@ $^
.PHONY: build-tools
build-tools: $(TOOLS:.c=)
.PHONY: build-test
build-test: $(TESTS:.c=.t)
.PHONY: test
test: build-test
@echo $(PROVE) $(PROVEFLAGS)
@$(PROVE) $(PROVEFLAGS)
.PHONY: clean
clean:
$(LIBTOOL) --mode=clean rm -f $(OBJECTS) $(LIBRARY) $(MANPAGES)
$(LIBTOOL) --mode=clean rm -f tools/.libs/* t/.libs/* # XXX there has to be a better way
$(LIBTOOL) --mode=clean rm -f $(TOOLS:.c=) $(TOOLS:.c=.o) $(TESTS:.c=.t) $(TESTS:.c=.o)
.PHONY: install
install: install-inc install-lib install-man
$(LIBTOOL) --mode=finish '$(DESTDIR)$(LIBDIR)'
.PHONY: install-inc
install-inc:
mkdir -p '$(DESTDIR)$(INCDIR)'
install -m644 unibilium.h '$(DESTDIR)$(INCDIR)'
mkdir -p '$(DESTDIR)$(LIBDIR)/pkgconfig'
perl -wpe 'BEGIN { @V{"VERSION", "LIBDIR", "INCDIR"} = splice @ARGV } s/\@(VERSION|LIBDIR|INCDIR)\@/$$V{$$1}/g' '$(PKG_VERSION)' '$(LIBDIR)' '$(INCDIR)' <unibilium.pc.in >'$(DESTDIR)$(LIBDIR)/pkgconfig/unibilium.pc'
.PHONY: install-lib
install-lib:
mkdir -p '$(DESTDIR)$(LIBDIR)'
$(LIBTOOL) --mode=install cp $(LIBRARY) '$(DESTDIR)$(LIBDIR)/$(LIBRARY)'
.PHONY: install-man
install-man: build-man
mkdir -p '$(DESTDIR)$(MAN3DIR)'
install -m644 $(MANPAGES) '$(DESTDIR)$(MAN3DIR)'
.PHONY: build-man
build-man: $(MANPAGES)
man/%.3.gz: doc/%.pod
$(POD2MAN) $(POD2MAN_OPTS) $< | gzip > $@
# Regenerate static test files, based on existing terminfo entries.
# Typical usage (to not use files from ~/.terminfo etc):
# TERMINFO=/usr/share/terminfo make regenerate-tests
STATIC_TEST_FILES:= \
t/static_screen-256color.c \
t/static_screen.c \
t/static_tmux.c \
t/static_xterm-256color.c
.PHONY: regenerate-tests
regenerate-tests:
$(RM) $(STATIC_TEST_FILES)
$(MAKE) $(STATIC_TEST_FILES)
t/static_%.c: | tools/gen-static-test
$< $(patsubst t/static_%.c,%,$@) > $@