1# Include makefile config
2include config.mk
3
4# Token lib generation
5TLIST = common/tokenize.list
6THEAD = common/tokenize.h
7TSRC  = common/tokenize.c
8
9SRCS  = $(filter-out $(TSRC),$(wildcard *.c) $(wildcard common/*.c) $(wildcard common/clib/*.c) $(wildcard clib/*.c) $(wildcard clib/soup/*.c) $(wildcard widgets/*.c)) $(TSRC)
10HEADS = $(wildcard *.h) $(wildcard common/*.h) $(wildcard common/clib/*.h) $(wildcard widgets/*.h) $(wildcard clib/*.h) $(wildcard clib/soup/*.h) $(THEAD) buildopts.h
11OBJS  = $(foreach obj,$(SRCS:.c=.o),$(obj))
12
13EXT_SRCS = $(filter-out $(TSRC),$(wildcard extension/*.c) $(wildcard extension/clib/*.c) $(wildcard common/*.c)) $(wildcard common/clib/*.c) $(TSRC)
14EXT_OBJS = $(foreach obj,$(EXT_SRCS:.c=.o),$(obj))
15
16# List of sources used to generate Lua API documentation
17# Must be kept in sync with doc/docgen.ld
18DOC_SRCS = $(filter-out lib/markdown.lua lib/lousy/init.lua,$(shell for d in doc/luadoc lib common/clib; do find $$d -type f; done)) tests/lib.lua
19
20all: options newline luakit luakit.1.gz luakit.so apidoc
21
22options:
23	@echo luakit build options:
24	@echo "CC           = $(CC)"
25	@echo "LUA_PKG_NAME = $(LUA_PKG_NAME)"
26	@echo "LUA_BIN_NAME = $(LUA_BIN_NAME)"
27	@echo "CFLAGS       = $(CFLAGS)"
28	@echo "CPPFLAGS     = $(CPPFLAGS)"
29	@echo "LDFLAGS      = $(LDFLAGS)"
30	@echo "MANPREFIX    = $(MANPREFIX)"
31	@echo "DOCDIR       = $(DOCDIR)"
32	@echo "XDGPREFIX    = $(XDGPREFIX)"
33	@echo "PIXMAPDIR    = $(PIXMAPDIR)"
34	@echo "APPDIR       = $(APPDIR)"
35	@echo
36	@echo build targets:
37	@echo "SRCS     = $(SRCS)"
38	@echo "HEADS    = $(HEADS)"
39	@echo "OBJS     = $(OBJS)"
40	@echo "EXT_SRCS = $(EXT_SRCS)"
41	@echo "EXT_OBJS = $(EXT_OBJS)"
42
43$(THEAD) $(TSRC): $(TLIST)
44	$(LUA_BIN_NAME) ./build-utils/gentokens.lua $(TLIST) $@
45
46buildopts.h: buildopts.h.in
47	sed -e 's#LUAKIT_INSTALL_PATH .*#LUAKIT_INSTALL_PATH "$(PREFIX)/share/luakit"#' \
48		-e 's#LUAKIT_CONFIG_PATH .*#LUAKIT_CONFIG_PATH "$(XDGPREFIX)"#' \
49		-e 's#LUAKIT_DOC_PATH .*#LUAKIT_DOC_PATH "$(DOCDIR)"#' \
50		-e 's#LUAKIT_MAN_PATH .*#LUAKIT_MAN_PATH "$(MANPREFIX)"#' \
51		-e 's#LUAKIT_PIXMAP_PATH .*#LUAKIT_PIXMAP_PATH "$(PIXMAPDIR)"#' \
52		-e 's#LUAKIT_APP_PATH .*#LUAKIT_APP_PATH "$(APPDIR)"#' \
53		-e 's#LUAKIT_LIB_PATH .*#LUAKIT_LIB_PATH "$(LIBDIR)"#' \
54		buildopts.h.in > buildopts.h
55
56$(filter-out $(EXT_OBJS),$(OBJS)) $(EXT_OBJS): $(HEADS) config.mk
57
58$(filter-out $(EXT_OBJS),$(OBJS)) : %.o : %.c
59	@echo $(CC) -c $< -o $@
60	@$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
61
62$(EXT_OBJS) : %.o : %.c
63	@echo $(CC) -c $< -o $@
64	@$(CC) -c $(CFLAGS) -DLUAKIT_WEB_EXTENSION -fpic $(CPPFLAGS) $< -o $@
65
66widgets/webview.o: $(wildcard widgets/webview/*.c)
67
68luakit: $(OBJS)
69	@echo $(CC) -o $@ $(OBJS)
70	@$(CC) -o $@ $(OBJS) $(LDFLAGS)
71
72luakit.so: $(EXT_OBJS)
73	@echo $(CC) -o $@ $(EXT_OBJS)
74	@$(CC) -o $@ $(EXT_OBJS) -shared $(LDFLAGS)
75
76luakit.1: luakit.1.in
77	@sed "s|LUAKITVERSION|$(VERSION)|" $< > $@
78
79luakit.1.gz: luakit.1
80	@gzip -c $< > $@
81
82doc/apidocs/index.html: $(DOC_SRCS) $(wildcard build-utils/docgen/*)
83	rm -rf doc/apidocs
84	mkdir doc/apidocs
85	$(LUA_BIN_NAME) ./build-utils/docgen/makedoc.lua
86
87apidoc: doc/apidocs/index.html
88
89doc: buildopts.h $(THEAD) $(TSRC)
90	doxygen -s doc/luakit.doxygen
91
92clean:
93	rm -rf doc/apidocs doc/html luakit $(OBJS) $(EXT_OBJS) $(TSRC) $(THEAD) buildopts.h luakit.1 luakit.1.gz luakit.so
94
95install: all
96	install -d $(DESTDIR)$(PREFIX)/share/luakit/
97	install -d $(DESTDIR)$(DOCDIR) $(DESTDIR)$(DOCDIR)/classes $(DESTDIR)$(DOCDIR)/modules $(DESTDIR)$(DOCDIR)/pages
98	install -m644 README.md AUTHORS COPYING.GPLv3 $(DESTDIR)$(DOCDIR)
99	install -m644 doc/apidocs/classes/* $(DESTDIR)$(DOCDIR)/classes
100	install -m644 doc/apidocs/modules/* $(DESTDIR)$(DOCDIR)/modules
101	install -m644 doc/apidocs/pages/* $(DESTDIR)$(DOCDIR)/pages
102	install -m644 doc/apidocs/*.html $(DESTDIR)$(DOCDIR)
103	install -d $(DESTDIR)$(PREFIX)/share/luakit/lib $(DESTDIR)$(PREFIX)/share/luakit/lib/lousy $(DESTDIR)$(PREFIX)/share/luakit/lib/lousy/widget
104	install -m644 lib/*.* $(DESTDIR)$(PREFIX)/share/luakit/lib
105	install -m644 lib/lousy/*.* $(DESTDIR)$(PREFIX)/share/luakit/lib/lousy
106	install -m644 lib/lousy/widget/*.* $(DESTDIR)$(PREFIX)/share/luakit/lib/lousy/widget
107	install -d $(DESTDIR)$(PREFIX)/lib/luakit
108	install -m644 luakit.so $(DESTDIR)$(PREFIX)/lib/luakit/luakit.so
109	install -d $(DESTDIR)$(PREFIX)/bin
110	install luakit $(DESTDIR)$(PREFIX)/bin/luakit
111	install -d $(DESTDIR)$(XDGPREFIX)/luakit/
112	install -m644 config/*.lua $(DESTDIR)$(XDGPREFIX)/luakit/
113	install -d $(DESTDIR)$(PIXMAPDIR)
114	install -m644 extras/luakit.png $(DESTDIR)$(PIXMAPDIR)
115	install -d $(DESTDIR)$(APPDIR)
116	install -m644 extras/luakit.desktop $(DESTDIR)$(APPDIR)
117	install -d $(DESTDIR)$(MANPREFIX)/man1/
118	install -m644 luakit.1.gz $(DESTDIR)$(MANPREFIX)/man1/
119	mkdir -p resources
120	find resources -type d -exec install -d $(DESTDIR)$(PREFIX)/share/luakit/'{}' \;
121	find resources -type f -exec sh -c 'f="{}"; install -m644 "$$f" "$(DESTDIR)$(PREFIX)/share/luakit/$$(dirname $$f)"' \;
122
123uninstall:
124	rm -rf $(DESTDIR)$(PREFIX)/bin/luakit $(DESTDIR)$(PREFIX)/share/luakit $(DESTDIR)$(PREFIX)/lib/luakit
125	rm -rf $(DESTDIR)$(MANPREFIX)/man1/luakit.1.gz $(DESTDIR)$(XDGPREFIX)/luakit
126	rm -rf $(DESTDIR)$(APPDIR)/luakit.desktop $(DESTDIR)$(PIXMAPDIR)/luakit.png
127
128tests/util.so: tests/util.c Makefile
129	$(CC) -fpic $(CFLAGS) $(CPPFLAGS) -shared $< $(LDFLAGS) -o $@
130
131run-tests: luakit luakit.so tests/util.so
132	@$(LUA_BIN_NAME) tests/run_test.lua
133
134newline: options;@echo
135.PHONY: all clean options install newline apidoc doc default
136