summaryrefslogtreecommitdiff
path: root/lib/libfetch/Makefile
blob: 631859bdcf7bc3cbbb29d6bfa072ca4b4b659a87 (plain)
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
prefix = /usr
DESTDIR =
DEBUG = true
ENABLE_HTTPS = true

CFLAGS   = -O2 -pipe -I. -DINET6
WARNINGS = -Wall -Wstrict-prototypes -Wsign-compare -Wchar-subscripts \
           -Wpointer-arith -Wcast-align -Wsign-compare
CFLAGS  += $(WARNINGS)

ifeq ($(strip $(DEBUG)), true)
CFLAGS += -g
else
CFLAGS += -DNDEBUG
endif

ifeq ($(strip $(ENALE_HTTPS)),true)
CFLAGS  += -DWITH_SSL
LDFLAGS += -lssl -lcrypto
endif

CC = gcc
LD = gcc
AR = ar
RANLIB = ranlib
INSTALL = install -c -D

OBJS= fetch.o common.o ftp.o http.o file.o
INCS= fetch.h common.h
GEN = ftperr.h httperr.h
MAN = fetch.3

#pretty print!
E = @echo
Q = @

all: libfetch.so libfetch.a
	$(E) "  built with:  " $(CFLAGS)
.PHONY: all

%.o: %.c
	$(E) "  compile   " $@
	$(Q) $(CC) $(CFLAGS) -c $<

ftperr.h: ftp.errors
	$(E) "  generate  " $@
	@echo "static struct fetcherr _ftp_errlist[] = {" > $@
	@cat $< \
	  | grep -v ^# \
	  | sort \
	  | while read NUM CAT STRING; do \
	    echo "    { $${NUM}, FETCH_$${CAT}, \"$${STRING}\" },"; \
	  done >> $@
	@echo -e "    { -1, FETCH_UNKNOWN, \"Unknown FTP error\" }\n};" >> $@

httperr.h: http.errors
	$(E) "  generate  " $@
	@echo "static struct fetcherr _http_errlist[] = {" > $@
	@cat $< \
	  | grep -v ^# \
	  | sort \
	  | while read NUM CAT STRING; do \
	    echo "    { $${NUM}, FETCH_$${CAT}, \"$${STRING}\" },"; \
	  done >> $@
	@echo -e "    { -1, FETCH_UNKNOWN, \"Unknown HTTP error\" }\n};" >> $@

libfetch.so: $(GEN) $(INCS) $(OBJS)
	$(E) "  build     " $@
	$(Q) rm -f $@
	$(Q) $(LD) $(LDFLAGS) *.o -shared -o $@

libfetch.a: $(GEN) $(INCS) $(OBJS)
	$(E) "  build     " $@
	$(Q) rm -f $@
	$(Q) $(AR) rcs $@ *.o
	$(Q) $(RANLIB) $@

clean:
	$(E) "  clean     "
	$(Q) rm -f libfetch.so libfetch.a *.o $(GEN)
.PHONY: clean

install: all
	$(Q) $(INSTALL) -m 755 libfetch.so $(DESTDIR)$(prefix)/lib/libfetch.so
	$(Q) $(INSTALL) -m 644 libfetch.a $(DESTDIR)$(prefix)/lib/libfetch.a
	$(Q) $(INSTALL) -m 644 fetch.h $(DESTDIR)$(prefix)/include/fetch.h
	$(Q) $(INSTALL) -m 644 fetch.3 $(DESTDIR)$(prefix)/man/man3/fetch.3
.PHONY: install

uninstall:
	$(Q) rm -f $(DESTDIR)$(prefix)/lib/libfetch.so
	$(Q) rm -f $(DESTDIR)$(prefix)/lib/libfetch.a
	$(Q) rm -f $(DESTDIR)$(prefix)/include/fetch.h
	$(Q) rm -f $(DESTDIR)$(prefix)/man/man3/fetch.3
.PHONY: uninstall