+rules = utils/99-petitboot.rules
+udhcpc = utils/udhcpc
+
+# client/daemon lib objs
+list_objs = lib/list/list.o
+log_objs = lib/log/log.o
+protocol_objs = lib/pb-protocol/pb-protocol.o
+system_objs = lib/system/system.o
+talloc_objs = lib/talloc/talloc.o
+waiter_objs = lib/waiter/waiter.o
+
+# daemon objs
+parser_objs = discover/parser.o discover/parser-conf.o discover/paths.o \
+ $(foreach p, $(parsers), discover/$(p)-parser.o)
+discover_objs = discover/event.o discover/user-event.o discover/udev.o \
+ discover/discover-server.o discover/device-handler.o discover/paths.o \
+ discover/parser-utils.o
+
+# client objs
+ui_common_objs = ui/common/discover-client.o ui/common/joystick.o \
+ ui/common/loader.o ui/common/ui-system.o ui/common/timer.o \
+ ui/common/url.o
+ncurses_objs = ui/ncurses/nc-scr.o ui/ncurses/nc-menu.o ui/ncurses/nc-ked.o \
+ ui/ncurses/nc-cui.o
+twin_objs = ui/twin/pb-twin.o
+
+# Makefiles
+makefiles = Makefile $(top_srcdir)/rules.mk
+
+# object collections
+lib_objs = $(list_objs) $(log_objs) $(protocol_objs) $(system_objs) \
+ $(talloc_objs) $(waiter_objs)
+
+daemon_objs = $(lib_objs) $(parser_objs) $(discover_objs)
+
+client_objs = $(lib_objs) $(ui_common_objs)
+
+all: $(uis) $(daemons) $(utils)
+
+# ncurses cui
+pb_cui_objs-y$(ENABLE_PS3) += ui/ncurses/pb-cui.o
+pb_cui_objs-$(ENABLE_PS3) += ui/ncurses/ps3-cui.o ui/common/ps3.o
+pb_cui_ldflags-$(ENABLE_PS3) += -lps3-utils
+
+pb_cui_objs = $(client_objs) $(ncurses_objs) $(pb_cui_objs-y)
+$(pb_cui_objs): $(makefiles)
+$(pb_cui): LDFLAGS += $(pb_cui_ldflags-y) -lmenu -lform -lncurses
+
+$(pb_cui): $(pb_cui_objs)
+ $(LINK.o) -o $@ $^