CFLAGS += -Wall -g -I../aml_log -I./common
LDFLAGS += -L../aml_log
LDLIBS += -laml_log

SRC_DIR = common
SRC = $(SRC_DIR)/util_list.c $(SRC_DIR)/socket_client.c $(SRC_DIR)/socket_server.c $(SRC_DIR)/socket_util.c

ENABLE_BUILD_TEST_BIN ?= 0
OUT_DIR ?= .

TARGET = libaml_socketipc_v2.so
TEST_CLIENT = test_aml_socketipc_client
TEST_SERVER = test_aml_socketipc_server

ALL_TARGETS = $(OUT_DIR)/$(TARGET)
ifneq ($(ENABLE_BUILD_TEST_BIN),0)
ALL_TARGETS += $(OUT_DIR)/$(TEST_CLIENT) $(OUT_DIR)/$(TEST_SERVER)
endif

all: $(ALL_TARGETS)

$(OUT_DIR)/$(TARGET): $(SRC)
	$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC -o $@ $^ $(LDLIBS)

$(OUT_DIR)/$(TEST_CLIENT): client/TestClient.c $(OUT_DIR)/$(TARGET)
	$(CC) $(CFLAGS) -o $@ $< -L$(OUT_DIR) -laml_socketipc_v2 -lpthread $(LDLIBS)

$(OUT_DIR)/$(TEST_SERVER): server/TestServer.c $(OUT_DIR)/$(TARGET)
	$(CC) $(CFLAGS) -o $@ $< -L$(OUT_DIR) -laml_socketipc_v2 -lpthread $(LDLIBS)

clean:
	rm -f $(OUT_DIR)/$(TARGET)
ifeq ($(ENABLE_BUILD_TEST_BIN),1)
	rm -f $(OUT_DIR)/$(TEST_CLIENT) $(OUT_DIR)/$(TEST_SERVER)
endif

install:
	install -d $(TARGET_DIR)/usr/lib
	install -d $(STAGING_DIR)/usr/lib
	install -d $(STAGING_DIR)/usr/include
	install -m 0644 $(OUT_DIR)/$(TARGET) $(TARGET_DIR)/usr/lib/
	install -m 0644 $(OUT_DIR)/$(TARGET) $(STAGING_DIR)/usr/lib/
	install -m 0644 common/*.h $(STAGING_DIR)/usr/include/
ifeq ($(ENABLE_BUILD_TEST_BIN),1)
	install -d $(TARGET_DIR)/usr/bin
	install -m 0755 $(OUT_DIR)/$(TEST_CLIENT) $(TARGET_DIR)/usr/bin/
	install -m 0755 $(OUT_DIR)/$(TEST_SERVER) $(TARGET_DIR)/usr/bin/
endif

uninstall:
	rm -f $(TARGET_DIR)/usr/lib/$(TARGET)
ifeq ($(ENABLE_BUILD_TEST_BIN),1)
	rm -f $(TARGET_DIR)/usr/bin/$(TEST_CLIENT)
	rm -f $(TARGET_DIR)/usr/bin/$(TEST_SERVER)
endif
