.POSIX:

NAME = susmb
VERSION = 0.9

# paths
PREFIX = /usr/local
MANPREFIX = ${PREFIX}/man
DOCPREFIX = ${PREFIX}/share/doc/${NAME}

# use system flags.
SUSMB_CFLAGS = ${CFLAGS}
SUSMB_LDFLAGS = ${LDFLAGS}
SUSMB_CPPFLAGS = -D_DEFAULT_SOURCE

# OpenBSD
# pkg-config --cflags smbclient
SMBCLIENT_CFLAGS = -I/usr/local/include/samba-4.0
# pkg-config --libs smbclient
SMBCLIENT_LDFLAGS = -L/usr/local/lib -lsmbclient
# pkg-config --cflags fuse
FUSE_CFLAGS = -I/usr/local/include
# pkg-config --libs fuse
FUSE_LDFLAGS = -lfuse

# Linux
#SUSMB_CFLAGS += -D_GNU_SOURCE
# Linux: use libbsd (for arc4random, etc).
#SUSMB_LDFLAGS += -lbsd
#SMBCLIENT_CFLAGS = -I/usr/include/samba-4.0
#SMBCLIENT_LDFLAGS = -lsmbclient
#FUSE_CFLAGS = -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse
#FUSE_LDFLAGS = -lfuse -pthread

# test: debug
#SUSMB_CFLAGS = -O0 -g -ggdb -Wall -Wextra -pedantic -Wformat-security -Winit-self -Wwrite-strings -Wstrict-prototypes -Wmissing-declarations

BIN = ${NAME}
SCRIPTS =
SRC = ${BIN:=.c}
HDR =
MAN1 = ${BIN:=.1}\
	${SCRIPTS:=.1}
DOC = \
	LICENSE\
	README

all: ${BIN}

${BIN}: ${@:=.o}

OBJ = ${SRC:.c=.o}

${OBJ}: ${HDR}

.o:
	${CC} -o $@ $< ${SUSMB_LDFLAGS} ${SMBCLIENT_LDFLAGS} ${FUSE_LDFLAGS} ${SUSMB_LDFLAGS}

.c.o:
	${CC} -o $@ -c $< ${SUSMB_CPPFLAGS} ${SMBCLIENT_CFLAGS} ${FUSE_CFLAGS} ${SUSMB_CFLAGS} ${SUSMB_CPPFLAGS}

dist:
	rm -rf "${NAME}-${VERSION}"
	mkdir -p "${NAME}-${VERSION}"
	cp -f ${MAN1} ${DOC} ${HDR} ${SCRIPTS} \
		${SRC} Makefile "${NAME}-${VERSION}"
	# make tarball
	tar cf - "${NAME}-${VERSION}" | gzip -c > "${NAME}-${VERSION}.tar.gz"
	rm -rf "${NAME}-${VERSION}"

clean:
	rm -f ${BIN} ${OBJ}

install: all
	# installing executable files and scripts.
	mkdir -p "${DESTDIR}${PREFIX}/bin"
	cp -f ${BIN} ${SCRIPTS} "${DESTDIR}${PREFIX}/bin"
	for f in ${BIN} ${SCRIPTS}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done
	# installing example files.
	mkdir -p "${DESTDIR}${DOCPREFIX}"
	cp -f ${DOC} "${DESTDIR}${DOCPREFIX}"
	for d in ${DOC}; do chmod 644 "${DESTDIR}${DOCPREFIX}/$$d"; done
	# installing manual pages for general commands: section 1.
	mkdir -p "${DESTDIR}${MANPREFIX}/man1"
	cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1"
	for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done

uninstall:
	# removing executable files and scripts.
	for f in ${BIN} ${SCRIPTS}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done
	# removing example files.
	for d in ${DOC}; do rm -f "${DESTDIR}${DOCPREFIX}/$$d"; done
	-rmdir "${DESTDIR}${DOCPREFIX}"
	# removing manual pages.
	for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done

.PHONY: all clean dist install uninstall
