summaryrefslogtreecommitdiffstats
path: root/Makefile.in
blob: 330a8f41e6acd797ba663276af39810cc695af4f (plain) (blame)
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
CC           = @CC@
CFLAGS      ?= @CFLAGS@
CFLAGS      += @CPPFLAGS@
SHARED       = @SHARED@
LIBS         = @LIBS@

INSTALL      = @INSTALL@
SED          = @SED@
STRIP        = @STRIP@

prefix       = @prefix@
exec_prefix  = @exec_prefix@
bindir       = @bindir@
includedir   = @includedir@
libdir       = @libdir@
datarootdir  = @datarootdir@
pkgconfigdir = @pkgconfigdir@
lmoddir      = @lmoddir@
cmoddir      = @cmoddir@

headers      = @headers@
objects      = @objects@

llibs = \
	lem/repl.lua \
	lem/parsers.lua \
	lem/io.lua \
	lem/io/queue.lua \
	lem/lfs.lua \
	lem/http.lua \
	lem/http/client.lua \
	lem/http/server.lua \
	lem/queue.lua \
	lem/hathaway.lua 

clibs = \
	lem/utils.so \
	lem/parsers/core.so \
	lem/io/core.so \
	lem/lfs/core.so \
	lem/http/core.so

ifdef V
E=@\#
Q=
else
E=@echo
Q=@
endif

.PHONY: all strip install clean

all: CFLAGS += -DNDEBUG
all: bin/lem lem.pc $(clibs)

debug: bin/lem lem.pc $(clibs)

bin/libev.o: CFLAGS += -w
include/lem.h: lua/luaconf.h
bin/lua.o: lua/luaconf.h
bin/lem.o: include/lem.h bin/pool.c
bin/lem.o: CFLAGS += -D'LEM_LDIR="$(lmoddir)/"'
lem/io/core.so: include/lem-parsers.h \
	lem/io/file.c \
	lem/io/stream.c \
	lem/io/server.c \
	lem/io/unix.c \
	lem/io/tcp.c
lem/parsers/core.so: include/lem-parsers.h
lem/http/core.so: include/lem-parsers.h

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

bin/lem: $(objects)
	$E '  LD    $@'
	$Q$(CC) $^ -o $@ -rdynamic $(LDFLAGS) $(LIBS)

%.so: %.c include/lem.h
	$E '  CCLD  $@'
	$Q$(CC) $(CFLAGS) -fPIC -nostartfiles $(SHARED) $< -o $@ $(LDFLAGS)

lua/luaconf.h: lua/luaconf.h.in
	$E '  SED > $@'
	$Q$(SED) \
	  -e 's|@lmoddir[@]|$(lmoddir)|' \
	  -e 's|@cmoddir[@]|$(cmoddir)|' \
	  $< > $@

lem.pc: lem.pc.in
	$E '  SED > $@'
	$Q$(SED) \
	  -e 's|@lmoddir[@]|$(lmoddir)|' \
	  -e 's|@cmoddir[@]|$(cmoddir)|' \
	  -e 's|@includedir[@]|$(includedir)|' \
	  -e 's|@Lua_CFLAGS[@]|@Lua_CFLAGS@|' \
	  $< > $@

%-strip: %
	$E '  STRIP $<'
	$Q$(STRIP) $(STRIP_ARGS) $<

strip: bin/lem-strip $(clibs:%=%-strip)

$(DESTDIR)$(bindir)/%: bin/%
	$E '  INSTALL $@'
	$Q$(INSTALL) -d $(dir $@)
	$Q$(INSTALL) -m 755 $< $@

$(DESTDIR)$(includedir)/lem/%: lua/%
	$E '  INSTALL $@'
	$Q$(INSTALL) -d $(dir $@)
	$Q$(INSTALL) -m 644 $< $@

$(DESTDIR)$(includedir)/lem/%: libev/%
	$E '  INSTALL $@'
	$Q$(INSTALL) -d $(dir $@)
	$Q$(INSTALL) -m 644 $< $@

$(DESTDIR)$(includedir)/lem/%: include/%
	$E '  INSTALL $@'
	$Q$(INSTALL) -d $(dir $@)
	$Q$(INSTALL) -m 644 $< $@

$(DESTDIR)$(lmoddir)/% $(DESTDIR)$(cmoddir)/% $(DESTDIR)$(pkgconfigdir)/%: %
	$E '  INSTALL $@'
	$Q$(INSTALL) -d $(dir $@)
	$Q$(INSTALL) -m 644 $< $@

install: \
	$(DESTDIR)$(bindir)/lem \
	$(DESTDIR)$(pkgconfigdir)/lem.pc \
	$(headers:%=$(DESTDIR)$(includedir)/lem/%) \
	$(llibs:%=$(DESTDIR)$(lmoddir)/%) \
	$(clibs:%=$(DESTDIR)$(cmoddir)/%)

clean:
	rm -f bin/lem bin/*.o $(clibs) lua/luaconf.h lem.pc