UNAME := $(shell uname)

LIBUV := libuv-1.38.1

PKG_LIBS = ./$(LIBUV)/.libs/libuv.a -pthread

SOURCES = $(wildcard *.cc unix/*.cc)
OBJECTS = $(SOURCES:.cc=.o)

ifeq ($(UNAME), SunOS)
PKG_LIBS += -lkstat -lsendfile -lsocket -lxnet
OBJECTS +=  bsd/setmode.o bsd/strmode.o bsd/reallocarray.o
endif
ifeq ($(UNAME), FreeBSD)
PKG_LIBS += -lkvm
endif
ifeq ($(UNAME), OpenBSD)
PKG_LIBS += -lkvm
endif
ifneq ($(filter $(UNAME), Linux AIX OS400),)
OBJECTS +=  bsd/setmode.o bsd/strmode.o bsd/reallocarray.o
endif

PKG_CPPFLAGS = -I./$(LIBUV)/include -I. -pthread

all: $(SHLIB)

$(SHLIB): $(LIBUV)/.libs/libuv.a

$(LIBUV)/Makefile:
	(cd $(LIBUV) \
	&& CC="$(CC)" CFLAGS="$(CFLAGS) $(CPPFLAGS) $(CPICFLAGS) $(C_VISIBILITY)" AR="$(AR)" RANLIB="$(RANLIB)" LDFLAGS="$(LDFLAGS)" ./configure --quiet)

$(LIBUV)/.libs/libuv.a: $(LIBUV)/Makefile
	$(MAKE) --directory=$(LIBUV) \
		HAVE_DTRACE=0

.PHONY: shlib-clean clean

# shlib-clean: clean

clean:
	$(MAKE) --directory=$(LIBUV) distclean
	rm -f $(OBJECTS)
