package = onedrive
version = v2.4.4-dev
prefix = /usr/local
# we don't use ${prefix} because it usually contains '${prefix}' literally
# but we use /usr/local/bin/onedrive in the systemd unit files which are generated
# from the configure script.
# Thus, set exec_prefix unconditionally to prefix
# Alternative approach would be add dep on sed, and do manual generation in the Makefile.
# exec_prefix = ${prefix}
exec_prefix = /usr/local
datarootdir = ${prefix}/share
datadir = ${datarootdir}
srcdir = .
bindir = ${exec_prefix}/bin
mandir = ${datarootdir}/man
sysconfdir = ${prefix}/etc
docdir = $(datadir)/doc/$(package)

INSTALL = /usr/bin/install -c

NOTIFICATIONS = no
HAVE_SYSTEMD = yes
systemduserunitdir = /usr/lib/systemd/user
systemdsystemunitdir = /lib/systemd/system
curl_LIBS = -lcurl
sqlite_LIBS = -lsqlite3
notify_LIBS = 
COMPLETIONS = no
BASH_COMPLETION_DIR = 
ZSH_COMPLETION_DIR = 
DEBUG = no

DC = dmd
DC_TYPE = dmd
DCFLAGS = 
DCFLAGS += -w -g -O -J.
ifeq ($(DEBUG),yes)
ifeq ($(DC_TYPE),dmd)
DCFLAGS += -debug -gs
else
DCFLAGS += -d-debug -gc
endif
endif

ifeq ($(NOTIFICATIONS),yes)
NOTIF_VERSIONS=-version=NoPragma -version=NoGdk -version=Notifications
# support ldc2 which needs -d prefix for version specification
ifeq ($(DC_TYPE),ldc)
        NOTIF_VERSIONS := $(addprefix -d,$(NOTIF_VERSIONS))
endif
DCFLAGS += $(NOTIF_VERSIONS)
endif

system_unit_files = contrib/systemd/onedrive@.service
user_unit_files = contrib/systemd/onedrive.service

DOCFILES = README.md config LICENSE CHANGELOG.md docs/Docker.md docs/INSTALL.md docs/Office365.md docs/USAGE.md docs/BusinessSharedFolders.md

ifneq ("$(wildcard /etc/redhat-release)","")
RHEL = $(shell cat /etc/redhat-release | grep -E "(Red Hat Enterprise Linux Server|CentOS)" | wc -l)
RHEL_VERSION = $(shell rpm --eval "%{rhel}")
else
RHEL = 0
RHEL_VERSION = 0
endif

SOURCES = \
	src/config.d \
	src/itemdb.d \
	src/log.d \
	src/main.d \
	src/monitor.d \
	src/onedrive.d \
	src/qxor.d \
	src/selective.d \
	src/sqlite.d \
	src/sync.d \
	src/upload.d \
	src/util.d \
	src/progress.d

ifeq ($(NOTIFICATIONS),yes)
SOURCES += src/notifications/notify.d src/notifications/dnotify.d
endif

all: onedrive

clean:
	rm -f onedrive onedrive.o version
	rm -rf autom4te.cache
	rm -f config.log config.status

# also remove files generated via ./configure
distclean: clean
	rm -f Makefile contrib/pacman/PKGBUILD contrib/spec/onedrive.spec onedrive.1 \
	      $(system_unit_files) $(user_unit_files)

onedrive: $(SOURCES)
	if [ -f .git/HEAD ] ; then \
		git describe --tags > version ; \
	else \
		echo $(version) > version ; \
	fi
	$(DC) $(DCFLAGS) $(addprefix -L,$(curl_LIBS)) $(addprefix -L,$(sqlite_LIBS)) $(addprefix -L,$(notify_LIBS)) -L-ldl $(SOURCES) -of$@

install: all
	$(INSTALL) -D onedrive $(DESTDIR)$(bindir)/onedrive
	$(INSTALL) -D onedrive.1 $(DESTDIR)$(mandir)/man1/onedrive.1
	$(INSTALL) -D -m 644 contrib/logrotate/onedrive.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/onedrive
	mkdir -p $(DESTDIR)$(docdir)
	$(INSTALL) -D -m 644 $(DOCFILES) $(DESTDIR)$(docdir)
ifeq ($(HAVE_SYSTEMD),yes)
	$(INSTALL) -d -m 0755 $(DESTDIR)$(systemduserunitdir) $(DESTDIR)$(systemdsystemunitdir)
ifeq ($(RHEL),1)
	$(INSTALL) -m 0644 $(system_unit_files) $(DESTDIR)$(systemdsystemunitdir)
	$(INSTALL) -m 0644 $(user_unit_files) $(DESTDIR)$(systemdsystemunitdir)
else
	$(INSTALL) -m 0644 $(system_unit_files) $(DESTDIR)$(systemdsystemunitdir)
	$(INSTALL) -m 0644 $(user_unit_files) $(DESTDIR)$(systemduserunitdir)
endif
else
ifeq ($(RHEL_VERSION),6)
	install -D contrib/init.d/onedrive.init $(DESTDIR)/etc/init.d/onedrive
	install -D contrib/init.d/onedrive_service.sh $(DESTDIR)$(bindir)/onedrive_service.sh
endif	
endif
ifeq ($(COMPLETIONS),yes)
	$(INSTALL) -D -m 644 contrib/completions/complete.zsh $(DESTDIR)$(ZSH_COMPLETION_DIR)/_onedrive
	$(INSTALL) -D -m 644 contrib/completions/complete.bash $(DESTDIR)$(BASH_COMPLETION_DIR)/onedrive
endif


uninstall:
	rm -f $(DESTDIR)$(bindir)/onedrive
	rm -f $(DESTDIR)$(mandir)/man1/onedrive.1
	rm -f $(DESTDIR)$(sysconfdir)/logrotate.d/onedrive
ifeq ($(HAVE_SYSTEMD),yes)
ifeq ($(RHEL),1)
	rm -f $(DESTDIR)$(systemdsystemunitdir)/onedrive*.service
else
	rm -f $(DESTDIR)$(systemdsystemunitdir)/onedrive*.service
	rm -f $(DESTDIR)$(systemduserunitdir)/onedrive*.service
endif
else
ifeq ($(RHEL_VERSION),6)
	rm -f $(DESTDIR)/etc/init.d/onedrive
	rm -f $(DESTDIR)$(bindir)/onedrive_service.sh
endif
endif
	for i in $(DOCFILES) ; do rm -f $(DESTDIR)$(docdir)/$$i ; done
ifeq ($(COMPLETIONS),yes)
	rm -f $(DESTDIR)$(ZSH_COMPLETION_DIR)/_onedrive
	rm -f $(DESTDIR)$(BASH_COMPLETION_DIR)/onedrive
endif


