all: build

help:
	@echo "usage: make [build|install|doc|serve-doc]"

ZIGOPTS ?=
ZIGOPTIM ?= ReleaseSafe

-include makefile.target

build:
	zig build -Doptimize=$(ZIGOPTIM) $(ZIGOPTS) $(TARGET_OPTION)

PREFIX       ?= /usr/local
LIBDIR       ?= $(PREFIX)/lib
INCLUDEDIR   ?= $(PREFIX)/include
PKGCONFIGDIR ?= /usr/share/pkgconfig

$(PKGCONFIGDIR):; install -m 0755 -d $(PKGCONFIGDIR)
$(PKGCONFIGDIR)/ipc.pc: ipc.pc; install -m 0644 ipc.pc $(PKGCONFIGDIR)
install-pkgconfig: $(PKGCONFIGDIR) $(PKGCONFIGDIR)/ipc.pc

$(LIBDIR):; install -m 0755 -d $(LIBDIR)
$(LIBDIR)/libipc.a:   zig-out/lib/libipc.a;	install -m 0644 zig-out/lib/libipc.a $(LIBDIR)
$(LIBDIR)/libipc.so: zig-out/lib/libipc.so;	install -m 0644 zig-out/lib/libipc.so $(LIBDIR)
install-library: $(LIBDIR) $(LIBDIR)/libipc.a $(LIBDIR)/libipc.so

$(INCLUDEDIR):;	install -m 0755 -d $(INCLUDEDIR)
$(INCLUDEDIR)/libipc.h: libipc.h;	install -m 0644 libipc.h $(INCLUDEDIR)
install-header: $(INCLUDEDIR) $(INCLUDEDIR)/libipc.h

install: install-pkgconfig install-library install-header
	@echo "Now that you have installed the library, you should (probably) run ldconfig."

uninstall-library:; rm $(LIBDIR)/libipc.a $(LIBDIR)/libipc.so*
uninstall-header:; rm $(INCLUDEDIR)/libipc.h
uninstall-pkgconfig:; rm $(PKGCONFIGDIR)/ipc.pc
uninstall: uninstall-pkgconfig uninstall-library uninstall-header

mrproper:
	rm -r docs zig-cache zig-out 2>/dev/null || true

doc:
	zig build-lib -femit-docs src/main.zig

DOC_HTTPD_ACCESS_LOGS ?= /tmp/access.log
DOC_HTTPD_ADDR        ?= 127.0.0.1
DOC_HTTPD_PORT        ?= 35000
serve-doc:
	darkhttpd docs/ --addr $(DOC_HTTPD_ADDR) --port $(DOC_HTTPD_PORT) --log $(DOC_HTTPD_ACCESS_LOGS)

PACKAGE ?= libipc
VERSION ?= 0.2.0
PKG = $(PACKAGE)-$(VERSION)
$(PKG).tar.gz: dist-dir
	tar zcf $@ \
		$(PKG)/src \
		$(PKG)/build.zig* \
		$(PKG)/libipc.h \
		$(PKG)/ipc.pc \
		$(PKG)/makefile* \
		$(PKG)/README* \
		$(PKG)/TODO*
$(PKG):; ln -s . $(PKG)
dist-dir: $(PKG)
dist-rm-dir:; rm $(PKG)
dist-gz: $(PKG).tar.gz
dist: dist-gz dist-rm-dir

# You can add your specific instructions there.
-include makefile.user