include ../buildconf.mk

C_SRCS := $(wildcard *.c) $(wildcard os/*.c)

LIB   := -lpthread -lrt -L$(BUILD_LIBVDEV) -lvdev
OBJ   := $(patsubst %.c,$(BUILD_VDEVD)/%.o,$(C_SRCS))
VDEVD := $(BUILD_VDEVD)/vdevd

MANPAGES_INSTALL := $(patsubst debian/%,$(INSTALL_MAN8DIR)/%.gz,$(wildcard debian/*.8))

VDEVD_INSTALL := $(INSTALL_VDEVD)/vdevd

HELPERS_DIR := helpers/$(OS)

HWDB_DIR := $(ROOT_DIR)/hwdb

all: $(VDEVD) helpers	

$(VDEVD): $(OBJ) helpers
	@mkdir -p "$(shell dirname "$@")"
	$(CC) -L$(BUILD_LIBVDEV)/libvdev.so -o $@ $(OBJ) $(LIB) $(LIBINC) $(LDFLAGS)

$(BUILD_VDEVD)/%.o : %.c
	@mkdir -p "$(shell dirname "$@")"
	$(CC) $(CFLAGS) $(DEFS) $(INC) -I$(BUILD)/include -o "$@" -c "$<"

$(BUILD_MAN8DIR):
	@echo "===== MKDIR $@"
	@mkdir -p $@

$(BUILD_MAN8DIR)/%.gz: debian/% | $(BUILD_MAN8DIR)
	gzip < $< > $@

$(INSTALL_MAN8DIR):
	@mkdir -p $@

$(INSTALL_MAN8DIR)/%: $(BUILD_MAN8DIR)/% | $(INSTALL_MAN8DIR)
	@cp $< $@

.PHONY: helpers
helpers:
	$(MAKE) -C $(HELPERS_DIR)

.PHONY: helpers-install hwdb-install

helpers-install:
	$(MAKE) -C $(HELPERS_DIR) install

hwdb-install:
	$(MAKE) -C $(HWDB_DIR) install

conf-install:
	$(MAKE) -C ../example -f conf.mk conf-install

install: $(VDEVD_INSTALL) helpers-install hwdb-install $(MANPAGES_INSTALL) \
	conf-install

$(VDEVD_INSTALL): $(VDEVD)
	@mkdir -p $(INSTALL_VDEVD)
	@rm -f "$@"
	cp -a "$<" "$@"

.PHONY: clean
clean:
	rm -f $(OBJ) $(VDEVD)
	$(MAKE) -C $(HELPERS_DIR) clean

.PHONY: uninstall
uninstall:
	rm -f $(VDEVD)
	$(MAKE) -C $(HELPERS_DIR) uninstall
