-test_decode1: test_decode1.o ../pb_decode.o person.o
-test_encode1: test_encode1.o ../pb_encode.o person.o
-decode_unittests: decode_unittests.o ../pb_decode.o person.o
-encode_unittests: encode_unittests.o ../pb_encode.o person.o
+pb_encode.o: ../pb_encode.c $(DEPS)
+ $(CC) $(CFLAGS) -c -o $@ $<
+pb_decode.o: ../pb_decode.c $(DEPS)
+ $(CC) $(CFLAGS) -c -o $@ $<
+
+test_decode1: test_decode1.o pb_decode.o person.pb.o
+test_encode1: test_encode1.o pb_encode.o person.pb.o
+test_decode_callbacks: test_decode_callbacks.o pb_decode.o callbacks.pb.o
+test_encode_callbacks: test_encode_callbacks.o pb_encode.o callbacks.pb.o
+decode_unittests: decode_unittests.o pb_decode.o unittestproto.pb.o
+encode_unittests: encode_unittests.o pb_encode.o unittestproto.pb.o