-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
82 lines (66 loc) · 2.16 KB
/
Copy pathMakefile
File metadata and controls
82 lines (66 loc) · 2.16 KB
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
CC = gcc
AR = ar
CFLAGS = -std=c99 -Wall -Wextra -Wpedantic -O2 -march=native -fPIC -D_GNU_SOURCE
LDFLAGS =
SRC = echo.c
OBJ = echo.o
LIB_A = libecho.a
LIB_SO = libecho.so
SONAME = libecho.so.0
VERSION = 0.1.0
PREFIX ?= /usr/local
INCDIR = $(PREFIX)/include
LIBDIR = $(PREFIX)/lib
PKGCONFIGDIR = $(LIBDIR)/pkgconfig
MANDIR = $(PREFIX)/share/man/man3
.PHONY: all static shared clean install uninstall dist release
all: static shared libecho.pc
static: $(LIB_A)
shared: $(LIB_SO)
$(LIB_A): $(OBJ)
$(AR) rcs $@ $^
$(LIB_SO): $(OBJ)
$(CC) -shared -Wl,-soname,$(SONAME) -o $@ $^ $(LDFLAGS)
$(OBJ): echo.h
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
libecho.pc: libecho.pc.in
sed -e 's|@CMAKE_INSTALL_PREFIX@|$(PREFIX)|g' \
-e 's|@CMAKE_INSTALL_LIBDIR@|lib|g' \
-e 's|@CMAKE_INSTALL_INCLUDEDIR@|include|g' \
-e 's|@PROJECT_VERSION@|$(VERSION)|g' \
$< > $@
install: all
install -d $(DESTDIR)$(INCDIR)
install -d $(DESTDIR)$(LIBDIR)
install -d $(DESTDIR)$(PKGCONFIGDIR)
install -d $(DESTDIR)$(MANDIR)
install -m 644 echo.h $(DESTDIR)$(INCDIR)/echo.h
install -m 644 $(LIB_A) $(DESTDIR)$(LIBDIR)/$(LIB_A)
install -m 755 $(LIB_SO) $(DESTDIR)$(LIBDIR)/$(SONAME)
ln -sf $(SONAME) $(DESTDIR)$(LIBDIR)/$(LIB_SO)
install -m 644 libecho.pc $(DESTDIR)$(PKGCONFIGDIR)/libecho.pc
install -m 644 docs/libecho.3 $(DESTDIR)$(MANDIR)/libecho.3
uninstall:
rm -f $(DESTDIR)$(INCDIR)/echo.h
rm -f $(DESTDIR)$(LIBDIR)/$(LIB_A)
rm -f $(DESTDIR)$(LIBDIR)/$(SONAME)
rm -f $(DESTDIR)$(LIBDIR)/$(LIB_SO)
rm -f $(DESTDIR)$(PKGCONFIGDIR)/libecho.pc
rm -f $(DESTDIR)$(MANDIR)/libecho.3
dist:
rm -rf libecho-$(VERSION)
mkdir libecho-$(VERSION)
cp echo.h echo.c Makefile CMakeLists.txt README.md \
libecho.pc.in libecho-$(VERSION)/
cp -r docs libecho-$(VERSION)/
test -d .github && cp -r .github libecho-$(VERSION)/ || true
tar czf libecho-$(VERSION).tar.gz libecho-$(VERSION)
rm -rf libecho-$(VERSION)
@echo "libecho-$(VERSION).tar.gz ready"
release: dist
sha256sum libecho-$(VERSION).tar.gz > libecho-$(VERSION).tar.gz.sha256
@echo "release: libecho-$(VERSION).tar.gz + .sha256"
clean:
rm -f $(OBJ) $(LIB_A) $(LIB_SO) libecho.pc
rm -rf build