-$(ROOT).o: $(GEN_HEADERS)
-$(TESTER).o: $(GEN_HEADERS)
-$(HELPER).o: $(GEN_HEADERS)
-$(DAEMON).o: $(GEN_HEADERS)
-$(SENDER).o: $(GEN_HEADERS)
+$(ROOT).o: $(GEN_HEADERS) $(HOST_PROGS)
+$(TESTER).o: $(GEN_HEADERS) $(HOST_PROGS)
+$(INFO).o: $(GEN_HEADERS) $(HOST_PROGS)
+$(DAEMON).o: $(GEN_HEADERS) $(HOST_PROGS)
+$(SENDER).o: $(GEN_HEADERS) $(HOST_PROGS)
+$(STARTER).o: $(GEN_HEADERS) $(HOST_PROGS)
+$(WAIT).o: $(GEN_HEADERS) $(HOST_PROGS)
+
+$(ROOT): $(LIBC) $(ROOT).o $(STARTER).o $(OBJS) $(HEADERS) $(GEN_MANPAGES)
+ $(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) udev.o udevstart.o $(OBJS) $(LIB_OBJS) $(ARCH_LIB_OBJS)
+ $(QUIET) $(STRIPCMD) $@
+
+$(TESTER): $(LIBC) $(TESTER).o $(OBJS) $(HEADERS)
+ $(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) udevtest.o $(OBJS) $(LIB_OBJS) $(ARCH_LIB_OBJS)
+ $(QUIET) $(STRIPCMD) $@
+
+$(INFO): $(LIBC) $(INFO).o $(OBJS) $(HEADERS)
+ $(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) udevinfo.o udev_lib.o udev_config.o udevdb.o $(SYSFS) $(TDB) $(LIB_OBJS) $(ARCH_LIB_OBJS)
+ $(QUIET) $(STRIPCMD) $@
+
+$(DAEMON): $(LIBC) $(DAEMON).o $(OBJS) udevd.h
+ $(QUIET) $(LD) $(LDFLAGS) -o $@ $(CRT0) udevd.o udev_lib.o $(KLIBC_FIXUP) $(LIB_OBJS) $(ARCH_LIB_OBJS)
+ $(QUIET) $(STRIPCMD) $@