ROOT := $(abspath ../..) include $(ROOT)/common.mk CLI_BUILD = $(BUILD)/cli COMMON_OBJ = $(BUILD)/common/error.o MEDIA_CTRL_OBJ = $(BUILD)/media_ctrl/media_ctrl.o V4L2_CTRL_OBJ = $(BUILD)/v4l2_ctrl/v4l2_ctrl.o SERIAL_OBJ = $(BUILD)/serial/serial.o TRANSPORT_OBJ = $(BUILD)/transport/transport.o DISCOVERY_OBJ = $(BUILD)/discovery/discovery.o CONFIG_OBJ = $(BUILD)/config/config.o PROTOCOL_OBJ = $(BUILD)/protocol/protocol.o TEST_IMAGE_OBJ = $(BUILD)/test_image/test_image.o XORG_OBJ = $(BUILD)/xorg/xorg.o RECONCILER_OBJ = $(BUILD)/reconciler/reconciler.o CLI_SRCS = \ media_ctrl_cli.c \ v4l2_ctrl_cli.c \ transport_cli.c \ discovery_cli.c \ config_cli.c \ protocol_cli.c \ query_cli.c \ test_image_cli.c \ xorg_cli.c \ v4l2_view_cli.c \ stream_send_cli.c \ stream_recv_cli.c \ reconciler_cli.c \ controller_cli.c CLI_OBJS = $(CLI_SRCS:%.c=$(CLI_BUILD)/%.o) .PHONY: all clean all: \ $(CLI_BUILD)/media_ctrl_cli \ $(CLI_BUILD)/v4l2_ctrl_cli \ $(CLI_BUILD)/transport_cli \ $(CLI_BUILD)/discovery_cli \ $(CLI_BUILD)/config_cli \ $(CLI_BUILD)/protocol_cli \ $(CLI_BUILD)/query_cli \ $(CLI_BUILD)/test_image_cli \ $(CLI_BUILD)/xorg_cli \ $(CLI_BUILD)/v4l2_view_cli \ $(CLI_BUILD)/stream_send_cli \ $(CLI_BUILD)/stream_recv_cli \ $(CLI_BUILD)/reconciler_cli \ $(CLI_BUILD)/controller_cli # Module objects delegate to their sub-makes. # 'force' ensures the sub-make is always invoked so it can check source timestamps itself. .PHONY: force $(COMMON_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/common $(MEDIA_CTRL_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/media_ctrl $(V4L2_CTRL_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/v4l2_ctrl $(SERIAL_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/serial $(TRANSPORT_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/transport $(DISCOVERY_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/discovery $(CONFIG_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/config $(PROTOCOL_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/protocol $(TEST_IMAGE_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/test_image $(XORG_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/xorg $(RECONCILER_OBJ): force ; $(MAKE) -C $(ROOT)/src/modules/reconciler # Compile each CLI source to its own .o (generates .d alongside). $(CLI_BUILD)/%.o: %.c | $(CLI_BUILD) $(CC) $(CFLAGS) $(DEPFLAGS) -c -o $@ $< # Link rules. $(CLI_BUILD)/media_ctrl_cli: $(CLI_BUILD)/media_ctrl_cli.o $(COMMON_OBJ) $(MEDIA_CTRL_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(CLI_BUILD)/v4l2_ctrl_cli: $(CLI_BUILD)/v4l2_ctrl_cli.o $(COMMON_OBJ) $(V4L2_CTRL_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(CLI_BUILD)/transport_cli: $(CLI_BUILD)/transport_cli.o $(COMMON_OBJ) $(SERIAL_OBJ) $(TRANSPORT_OBJ) $(CC) $(CFLAGS) -o $@ $^ -lpthread $(CLI_BUILD)/discovery_cli: $(CLI_BUILD)/discovery_cli.o $(COMMON_OBJ) $(SERIAL_OBJ) $(DISCOVERY_OBJ) $(CC) $(CFLAGS) -o $@ $^ -lpthread $(CLI_BUILD)/config_cli: $(CLI_BUILD)/config_cli.o $(COMMON_OBJ) $(CONFIG_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(CLI_BUILD)/protocol_cli: $(CLI_BUILD)/protocol_cli.o $(COMMON_OBJ) $(SERIAL_OBJ) $(TRANSPORT_OBJ) $(PROTOCOL_OBJ) $(CC) $(CFLAGS) -o $@ $^ -lpthread $(CLI_BUILD)/query_cli: $(CLI_BUILD)/query_cli.o $(COMMON_OBJ) $(SERIAL_OBJ) $(TRANSPORT_OBJ) $(DISCOVERY_OBJ) $(PROTOCOL_OBJ) $(CC) $(CFLAGS) -o $@ $^ -lpthread $(CLI_BUILD)/test_image_cli: $(CLI_BUILD)/test_image_cli.o $(TEST_IMAGE_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(CLI_BUILD)/xorg_cli: $(CLI_BUILD)/xorg_cli.o $(TEST_IMAGE_OBJ) $(XORG_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(PKG_LDFLAGS) $(CLI_BUILD)/v4l2_view_cli: $(CLI_BUILD)/v4l2_view_cli.o $(XORG_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(PKG_LDFLAGS) $(CLI_BUILD)/stream_send_cli: $(CLI_BUILD)/stream_send_cli.o $(COMMON_OBJ) $(SERIAL_OBJ) $(TRANSPORT_OBJ) $(PROTOCOL_OBJ) $(CC) $(CFLAGS) -o $@ $^ -lpthread $(CLI_BUILD)/stream_recv_cli: $(CLI_BUILD)/stream_recv_cli.o $(COMMON_OBJ) $(SERIAL_OBJ) $(TRANSPORT_OBJ) $(PROTOCOL_OBJ) $(XORG_OBJ) $(CC) $(CFLAGS) -o $@ $^ -lpthread $(PKG_LDFLAGS) $(CLI_BUILD)/reconciler_cli: $(CLI_BUILD)/reconciler_cli.o $(RECONCILER_OBJ) $(CC) $(CFLAGS) -o $@ $^ $(CLI_BUILD)/controller_cli: $(CLI_BUILD)/controller_cli.o $(COMMON_OBJ) $(SERIAL_OBJ) $(TRANSPORT_OBJ) $(PROTOCOL_OBJ) $(CC) $(CFLAGS) -o $@ $^ -lpthread $(CLI_BUILD): mkdir -p $@ clean: rm -f \ $(CLI_OBJS) \ $(CLI_OBJS:%.o=%.d) \ $(CLI_BUILD)/media_ctrl_cli \ $(CLI_BUILD)/v4l2_ctrl_cli \ $(CLI_BUILD)/transport_cli \ $(CLI_BUILD)/discovery_cli \ $(CLI_BUILD)/config_cli \ $(CLI_BUILD)/protocol_cli \ $(CLI_BUILD)/query_cli \ $(CLI_BUILD)/test_image_cli \ $(CLI_BUILD)/xorg_cli \ $(CLI_BUILD)/v4l2_view_cli \ $(CLI_BUILD)/stream_send_cli \ $(CLI_BUILD)/stream_recv_cli \ $(CLI_BUILD)/reconciler_cli \ $(CLI_BUILD)/controller_cli -include $(CLI_OBJS:%.o=%.d)