]> git.ozlabs.org Git - petitboot/blob - rules.mk
Add generic ncurses program
[petitboot] / rules.mk
1
2 VPATH = $(srcdir)
3
4 CPPFLAGS += -I$(top_srcdir) -I$(top_srcdir)/lib -I$(builddir)
5 LDFLAGS += $(CFLAGS)
6
7 # we need paths to be overridable at build-time
8 DEFS += '-DPREFIX="$(prefix)"' '-DPKG_SHARE_DIR="$(pkgdatadir)"' \
9         '-DLOCAL_STATE_DIR="$(localstatedir)"'
10
11 # programs
12 pb_discover = discover/pb-discover
13 pb_cui = ui/ncurses/pb-cui
14 pb_test = ui/test/pb-test
15 pb_twin = ui/twin/pb-twin
16 pb_event = utils/pb-event
17 parser_test = test/parser-test
18
19 # install targets and components
20 daemons = $(pb_discover)
21 parsers = event kboot yaboot
22 uis = $(pb_cui)
23 tests = $(parser_test) $(pb_test)
24 utils = $(pb_event)
25
26 ifeq ($(PBTWIN),y)
27         uis += $(pb_twin)
28 endif
29
30 # other to install
31 artwork = background.jpg cdrom.png hdd.png usbpen.png tux.png cursor.gz
32 man8 = pb-cui.8 pb-discover.8 pb-event.8 petitboot.8
33 rules = utils/99-petitboot.rules
34 udhcpc = utils/udhcpc
35
36 # client/daemon lib objs
37 list_objs = lib/list/list.o
38 log_objs = lib/log/log.o
39 protocol_objs = lib/pb-protocol/pb-protocol.o
40 system_objs = lib/system/system.o
41 talloc_objs = lib/talloc/talloc.o
42 waiter_objs = lib/waiter/waiter.o
43
44 # daemon objs
45 parser_objs = discover/parser.o discover/parser-conf.o discover/paths.o \
46         $(foreach p, $(parsers), discover/$(p)-parser.o)
47 discover_objs = discover/event.o discover/user-event.o discover/udev.o \
48         discover/discover-server.o discover/device-handler.o discover/paths.o \
49         discover/parser-utils.o
50
51 # client objs
52 ui_common_objs = ui/common/discover-client.o ui/common/joystick.o \
53         ui/common/loader.o ui/common/ui-system.o ui/common/timer.o \
54         ui/common/url.o
55 ncurses_objs = ui/ncurses/nc-scr.o ui/ncurses/nc-menu.o ui/ncurses/nc-ked.o \
56         ui/ncurses/nc-cui.o
57 twin_objs = ui/twin/pb-twin.o
58
59 # Makefiles
60 makefiles = Makefile $(top_srcdir)/rules.mk
61
62 # headers
63 discover_headers = $(wildcard $(top_srcdir)/discover/*.h)
64 lib_headers = $(wildcard $(top_srcdir)/lib/*/*.h)
65 ui_headers = $(wildcard $(top_srcdir)/ui/*/*.h)
66
67 # object collections
68 lib_objs = $(list_objs) $(log_objs) $(protocol_objs) $(system_objs) \
69         $(talloc_objs) $(waiter_objs)
70
71 daemon_objs = $(lib_objs) $(parser_objs) $(discover_objs)
72 daemon_headers = $(lib_headers) $(discover_headers)
73
74 client_objs = $(lib_objs) $(ui_common_objs)
75 client_headers = $(lib_headers) $(discover_headers) $(ui_headers)
76
77 all: $(uis) $(daemons) $(utils)
78
79 # ncurses cui
80 pb_cui_objs-y$(ENABLE_PS3) += ui/ncurses/pb-cui.o
81 pb_cui_objs-$(ENABLE_PS3) += ui/ncurses/ps3-cui.o ui/common/ps3.o
82 pb_cui_ldflags-$(ENABLE_PS3) += -lps3-utils
83
84 pb_cui_objs = $(client_objs) $(ncurses_objs) $(pb_cui_objs-y)
85 $(pb_cui_objs): $(makefiles) $(client_headers)
86 $(pb_cui): LDFLAGS += $(pb_cui_ldflags-y) -lmenu -lform -lncurses
87
88 $(pb_cui): $(pb_cui_objs)
89         $(LINK.o) -o $@ $^
90
91 # test ui
92 pb_test_objs = $(client_objs) ui/test/pb-test.o
93 $(pb_test_objs): $(makefiles) $(client_headers)
94
95 $(pb_test): $(pb_test_objs)
96         $(LINK.o) -o $@ $^
97
98 # twin gui
99 pb_twin_objs = $(client_objs) $(twin_objs) ui/twin/ps3-twin.o
100 $(pb_twin_objs): $(makefiles) $(client_headers)
101
102 $(pb_twin): LDFLAGS+=$(twin_LDFLAGS) $(LIBTWIN)
103 $(pb_twin): CFLAGS+=$(twin_CFLAGS)
104
105 $(pb_twin): $(pb_twin_objs)
106         $(LINK.o) -o $@ $^
107
108 # discovery daemon
109 pb_discover_objs = $(daemon_objs) discover/pb-discover.o
110 $(pb_discover_objs): $(makefiles) $(daemon_headers)
111
112 $(pb_discover): $(pb_discover_objs)
113         $(LINK.o) -o $@ $^
114
115 # utils
116 pb_event_objs = utils/pb-event.o
117 $(pb_event_objs): $(makefiles) $(client_headers)
118
119 $(pb_event): $(pb_event_objs)
120         $(LINK.o) -o $@ $^
121
122 # parser-test
123 parser_test_objs = $(lib_objs) $(parser_objs) test/parser-test.o
124 $(parser_test_objs): $(makefiles) $(client_headers)
125
126 $(parser_test): $(parser_test_objs)
127         $(LINK.o) -o $@ $^
128
129 parser-test: $(parser_test)
130
131 install: all $(rules) $(udhcpc)
132         $(INSTALL) -d $(DESTDIR)$(sbindir)/
133         $(INSTALL_PROGRAM) $(daemons) $(uis) $(utils) $(DESTDIR)$(sbindir)/
134         $(INSTALL) -d $(DESTDIR)$(pkgdatadir)/artwork/
135         $(INSTALL_DATA) $(addprefix $(top_srcdir)/ui/common/artwork/,$(artwork)) \
136                 $(DESTDIR)$(pkgdatadir)/artwork/
137         $(INSTALL) -d $(DESTDIR)$(pkgdatadir)/utils
138         $(INSTALL_DATA) $(top_srcdir)/$(rules) $(DESTDIR)$(pkgdatadir)/utils
139         $(INSTALL_DATA) $(top_srcdir)/$(udhcpc) $(DESTDIR)$(pkgdatadir)/utils
140         $(INSTALL) -d $(DESTDIR)$(mandir)/man8/
141         $(INSTALL_DATA) $(addprefix $(top_srcdir)/man/, $(man8)) \
142                 $(DESTDIR)$(mandir)/man8/
143
144 dist: $(PACKAGE)-$(VERSION).tar.gz
145
146 check: parser-test
147         $(SHELL) test/parser-test.sh
148
149 distcheck: dist
150         tar -xvf $(PACKAGE)-$(VERSION).tar.gz
151         cd $(PACKAGE)-$(VERSION) && make check
152
153 $(PACKAGE)-$(VERSION).tar.gz: $(PACKAGE)-$(VERSION)
154         tar czvf $@ $^
155
156 $(PACKAGE)-$(VERSION): clean
157         for f in $$(git --git-dir=$(top_srcdir)/.git ls-files); do \
158                 d=$@/$$(dirname $$f); \
159                 mkdir -p $$d; \
160                 cp -a $(top_srcdir)/$$f $$d; \
161         done
162
163 clean:
164         rm -rf $(PACKAGE)-$(VERSION)
165         rm -f $(uis)
166         rm -f $(pb_cui_objs)
167         rm -f $(pb_test_objs)
168         rm -f $(pb_twin_objs)
169         rm -f $(daemons)
170         rm -f $(pb_discover_objs)
171         rm -f $(utils)
172         rm -f $(pb_event_objs)
173         rm -f $(tests)
174         rm -f $(parser_test_objs)
175
176 maintainer-clean: clean
177         -rm -f $(top_srcdir)/aclocal.m4
178         -rm -rf $(top_srcdir)/autom4te.cache
179         -rm -f $(top_srcdir)/config.h.in
180         -rm -f $(top_srcdir)/configure
181         -rm -f config.h
182         -rm -f config.log
183         -rm -f config.status
184         -rm -f Makefile
185         -rm -f $(PACKAGE)-$(VERSION).tar.gz