OUTPUT_FILES := libccdataserver_client.so libccdataserver_client.a ccdataserver TEST_FILES := ccds_debug PLUGIN_FILES := libdebug_plugin.so DEBUG_ASAN := 0 ifeq ($(DEBUG_ASAN),1) ASAN_CFLAGS := -fsanitize=address -fno-omit-frame-pointer -fsanitize-recover=address ASAN_LDFLAGS := -lasan endif CFLAGS := -Wall -g -O0 -fPIC $(ASAN_CFLAGS) LDFLAGS := $(ASAN_LDFLAGS) OUT_DIR ?= ./build TARGET_DIR ?= $(OUT_DIR) LIBDSCLIENT_SRCS := \ client/dataserver_client.c\ LIBDSCLIENT_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(LIBDSCLIENT_SRCS)) DATASERVER_SRCS := \ server/dataserver_rb.c\ server/dataserver_reader.c\ server/dataserver_reader_vbi.c\ server/dataserver_reader_random.c\ server/dataserver_reader_userdata.c\ server/dataserver_process.c\ server/dataserver_utils.c\ server/dataserver_inner.c\ server/dataserver_socketserver.c\ server/main.c\ DATASERVER_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(DATASERVER_SRCS)) DATASERVER_CFLAGS := -Iclient -Iserver DATASERVER_LDFLAGS := -lpthread -ldl -lrt DATASERVER_CFLAGS += -DDS_SUPPORT_IP DATASERVER_CFLAGS += -DSUPPORT_SHM TEST_SRCS := \ client/test/debug_client.c\ TEST_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(TEST_SRCS)) TEST_CFLAGS := -Iclient TEST_LDFLAGS := -L$(OUT_DIR) -lccdataserver_client -lpthread PLUGIN_SRCS :=\ server/plugin/debug_plugin.c\ PLUGIN_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(PLUGIN_SRCS)) PLUGIN_CFLAGS := -Iserver PLUGIN_LDFLAGS := all: $(OUTPUT_FILES) $(TEST_FILES) $(PLUGIN_FILES) $(OUT_DIR)/%.o: %.c mkdir -p $(dir $@) $(CC) -c -o $@ $< $(CFLAGS) $(OUT_DIR)/server/%.o: server/%.c mkdir -p $(dir $@) $(CC) -c -o $@ $< $(CFLAGS) $(DATASERVER_CFLAGS) libccdataserver_client.so: $(LIBDSCLIENT_OBJS) $(CC) -shared -o $(OUT_DIR)/$@ $^ $(LDFLAGS) $(DSCLIENT_LDFLAGS) libccdataserver_client.a: $(LIBDSCLIENT_OBJS) $(AR) rsc $(OUT_DIR)/$@ $^ ccdataserver: $(DATASERVER_OBJS) $(CC) -o $(OUT_DIR)/$@ $^ $(LDFLAGS) $(DATASERVER_LDFLAGS) $(OUT_DIR)/client/test/%.o: client/test/%.c mkdir -p $(dir $@) $(CC) -c -o $@ $< $(CFLAGS) $(TEST_CFLAGS) ccds_debug: $(TEST_OBJS) libccdataserver_client.so $(CC) -o $(OUT_DIR)/$@ $(TEST_OBJS) $(LDFLAGS) $(TEST_LDFLAGS) libdebug_plugin.so: $(PLUGIN_OBJS) $(CC) -shared -o $(OUT_DIR)/$@ $^ $(LDFLAGS) $(PLUGIN_LDFLAGS) install: $(OUTPUT_FILES) install -d $(TARGET_DIR)/usr/include/ccdatabase install -d $(TARGET_DIR)/usr/lib install -d $(TARGET_DIR)/usr/bin install -m 0644 ./client/dataserver_client.h $(TARGET_DIR)/usr/include/ccdatabase install -m 0644 ./client/dataserver_message.h $(TARGET_DIR)/usr/include/ccdatabase install -m 0644 ./client/dataserver_cmd_resp.h $(TARGET_DIR)/usr/include/ccdatabase install -m 0644 ./client/dataserver_event.h $(TARGET_DIR)/usr/include/ccdatabase install -m 0644 ./client/dataserver_data_vbi.h $(TARGET_DIR)/usr/include/ccdatabase install -m 0644 ./client/dataserver_data_userdata.h $(TARGET_DIR)/usr/include/ccdatabase install -m 0644 $(OUT_DIR)/libccdataserver_client.a $(TARGET_DIR)/usr/lib install -m 0755 $(OUT_DIR)/libccdataserver_client.so $(TARGET_DIR)/usr/lib install -m 0755 $(OUT_DIR)/ccdataserver $(TARGET_DIR)/usr/bin install -m 0755 $(OUT_DIR)/ccds_debug $(TARGET_DIR)/usr/bin clean: find $(OUT_DIR) -name \*.o -exec rm -f {} \; .PHONY: all install clean