TOPDIR ?= $(shell pwd)/../
export TOPDIR

LIBS	= libnash.so
TARGETS = nash libnash.pc
OBJECTS = util.o linkdetect.o nash.o network.o nfsmount.o \
	  nfsmount_clnt.o nfsmount_xdr.o dns.o block_priv.o \
	  waitdev.o

libnash_OBJECTS = lib.o hotplug.o wrap.o list.o dict.o block.o uevent.o dm.o \
		devtree.o vitals.o blkent.o procdev.o

include ../Makefile.inc

CFLAGS += -I$(TOPDIR)/nash/include -I$(TOPDIR)/bdevid/include
CFLAGS += $(shell pkg-config --cflags libdhcp glib-2.0)

LDFLAGS += -Wl,-rpath-link,$(TOPDIR)/bdevid:$(TOPDIR)/nash

nash_LIBPATHS = -L$(TOPDIR)/nash -L$(TOPDIR)/bdevid -L/$(LIB)
nash_LIBS += -ldevmapper -lparted -lblkid -lselinux -lsepol
nash_LIBS += -luuid -lpopt -lresolv -ldl
nash_LIBS += $(shell pkg-config --libs libdhcp glib-2.0) -lm
# We need to link against libgcc_s directly, or it'll /dlopen() it during
# backtrace()!  This is not teh way!!!1!!!one!!!.
nash_LIBS += -lgcc_s

nash :: version.h $(OBJECTS) libnash.so
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(nash_LIBPATHS) -lnash -lbdevid $(nash_LIBS)

libnash.so : libnash.so.$(VERSION)
	ln -sf $< $@

libnash.so.$(VERSION) :: $(libnash_OBJECTS)
	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,-soname="$(shell basename $@)" -shared -o $@ $^ $(nash_LIBPATHS) $(nash_LIBS)

libnash.pc:: libnash.pc.in
	@sed -e "s/VERSIONSUBST/$(VERSION)/" \
	     -e "s/LIBSUBST/$(LIB)/" < libnash.pc.in > libnash.pc

hotplug: $(subst hotplug.o,,$(libnash_OBJECTS))
	$(CC) $(CFLAGS) $(LDFLAGS) -DFWDEBUG -o $@ hotplug.c $^ -lblkid

debug::
	$(MAKE) clean
debug:: $(shell pwd)/version.h hotplug libnash.so
	$(MAKE) CFLAGS="$(CFLAGS) -DDEBUG" $(OBJECTS)
debug:: $(OBJECTS)
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(nash_LIBS)

clean::
	rm -f nash nash.dynamic debug hotplug *.so *.so.* *.o *.a libnash.pc

install:
	mkdir -p $(DESTDIR)/sbin
	mkdir -p $(DESTDIR)/usr/$(LIB)
	mkdir -p $(DESTDIR)/usr/$(LIB)/pkgconfig
	mkdir -p $(DESTDIR)/usr/include/nash
	mkdir -p $(DESTDIR)/$(mandir)/man8
	install -m 755 nash $(DESTDIR)/sbin
	install -m 644 nash.8 $(DESTDIR)/$(mandir)/man8
	install -m 755 libnash.so.$(VERSION) $(DESTDIR)/usr/$(LIB)
	ln -sf libnash.so.$(VERSION) $(DESTDIR)/usr/$(LIB)/libnash.so
	install -m 644 libnash.pc $(DESTDIR)/usr/$(LIB)/pkgconfig
	install -m 644 include/*.h $(DESTDIR)/usr/include
	install -m 644 include/nash/*.h $(DESTDIR)/usr/include/nash
