mirror of
https://github.com/abraunegg/onedrive
synced 2026-03-14 14:35:46 +01:00
When building with gdc alongside the linker flag -Wl,--as-needed the build fails with unresolved symbol errors. dmd and ldc2 are not affected since they internally pass the generated object file before other linker flags. This also matches the standard GNU make rules. Signed-off-by: Andrei Horodniceanu <a.horodniceanu@proton.me>
163 lines
5.4 KiB
Makefile
163 lines
5.4 KiB
Makefile
package = @PACKAGE_NAME@
|
|
version = @PACKAGE_VERSION@
|
|
prefix = @prefix@
|
|
# we don't use @exec_prefix@ because it usually contains '${prefix}' literally
|
|
# but we use @prefix@/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 = @exec_prefix@
|
|
exec_prefix = @prefix@
|
|
datarootdir = @datarootdir@
|
|
datadir = @datadir@
|
|
srcdir = @srcdir@
|
|
bindir = @bindir@
|
|
mandir = @mandir@
|
|
sysconfdir = @sysconfdir@
|
|
docdir = $(datadir)/doc/$(package)
|
|
VPATH = @srcdir@
|
|
INSTALL = @INSTALL@
|
|
|
|
NOTIFICATIONS = @NOTIFICATIONS@
|
|
HAVE_SYSTEMD = @HAVE_SYSTEMD@
|
|
systemduserunitdir = @systemduserunitdir@
|
|
systemdsystemunitdir = @systemdsystemunitdir@
|
|
all_libs = @curl_LIBS@ @sqlite_LIBS@ @notify_LIBS@ @bsd_inotify_LIBS@ @dynamic_linker_LIBS@
|
|
COMPLETIONS = @COMPLETIONS@
|
|
BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
|
|
ZSH_COMPLETION_DIR = @ZSH_COMPLETION_DIR@
|
|
FISH_COMPLETION_DIR = @FISH_COMPLETION_DIR@
|
|
DEBUG = @DEBUG@
|
|
|
|
DC = @DC@
|
|
DCFLAGS = @DCFLAGS@
|
|
DEBUG_DCFLAGS = @DEBUG_DCFLAGS@
|
|
RELEASE_DCFLAGS = @RELEASE_DCFLAGS@
|
|
VERSION_DCFLAG = @VERSION_DCFLAG@
|
|
LINKER_DCFLAG = @LINKER_DCFLAG@
|
|
OUTPUT_DCFLAG = @OUTPUT_DCFLAG@
|
|
WERROR_DCFLAG = @WERROR_DCFLAG@
|
|
|
|
DCFLAGS += $(WERROR_DCFLAG)
|
|
ifeq ($(DEBUG),yes)
|
|
DCFLAGS += $(DEBUG_DCFLAGS)
|
|
else
|
|
DCFLAGS += $(RELEASE_DCFLAGS)
|
|
endif
|
|
|
|
ifeq ($(NOTIFICATIONS),yes)
|
|
NOTIF_VERSIONS = $(addprefix $(VERSION_DCFLAG)=,NoPragma NoGdk Notifications)
|
|
endif
|
|
|
|
system_unit_files = contrib/systemd/onedrive@.service
|
|
user_unit_files = contrib/systemd/onedrive.service
|
|
|
|
DOCFILES = readme.md config LICENSE changelog.md docs/advanced-usage.md docs/application-config-options.md docs/application-security.md docs/business-shared-items.md docs/client-architecture.md docs/contributing.md docs/docker.md docs/install.md docs/national-cloud-deployments.md docs/podman.md docs/privacy-policy.md docs/sharepoint-libraries.md docs/terms-of-service.md docs/ubuntu-package-install.md docs/usage.md docs/known-issues.md docs/webhooks.md
|
|
|
|
ifneq ("$(wildcard /etc/redhat-release)","")
|
|
RHEL = $(shell cat /etc/redhat-release | grep -E "(Red Hat Enterprise Linux|CentOS)" | wc -l)
|
|
RHEL_VERSION = $(shell rpm --eval "%{rhel}")
|
|
else
|
|
RHEL = 0
|
|
RHEL_VERSION = 0
|
|
endif
|
|
|
|
SOURCES = \
|
|
src/main.d \
|
|
src/config.d \
|
|
src/log.d \
|
|
src/util.d \
|
|
src/qxor.d \
|
|
src/curlEngine.d \
|
|
src/onedrive.d \
|
|
src/webhook.d \
|
|
src/sync.d \
|
|
src/itemdb.d \
|
|
src/sqlite.d \
|
|
src/clientSideFiltering.d \
|
|
src/monitor.d \
|
|
src/arsd/cgi.d \
|
|
src/xattr.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
|
|
|
|
# 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) -J. $(NOTIF_VERSIONS) $(DCFLAGS) $^ $(addprefix $(LINKER_DCFLAG),$(all_libs)) $(OUTPUT_DCFLAG)$@
|
|
|
|
install: all
|
|
mkdir -p $(DESTDIR)$(bindir)
|
|
$(INSTALL) onedrive $(DESTDIR)$(bindir)/onedrive
|
|
mkdir -p $(DESTDIR)$(mandir)/man1
|
|
$(INSTALL) -m 0644 onedrive.1 $(DESTDIR)$(mandir)/man1/onedrive.1
|
|
mkdir -p $(DESTDIR)$(sysconfdir)/logrotate.d
|
|
$(INSTALL) -m 0644 contrib/logrotate/onedrive.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/onedrive
|
|
mkdir -p $(DESTDIR)$(docdir)
|
|
for file in $(DOCFILES); do \
|
|
$(INSTALL) -m 0644 $$file $(DESTDIR)$(docdir); \
|
|
done
|
|
ifeq ($(HAVE_SYSTEMD),yes)
|
|
mkdir -p $(DESTDIR)$(systemduserunitdir)
|
|
mkdir -p $(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) contrib/init.d/onedrive.init $(DESTDIR)/etc/init.d/onedrive
|
|
$(INSTALL) contrib/init.d/onedrive_service.sh $(DESTDIR)$(bindir)/onedrive_service.sh
|
|
endif
|
|
endif
|
|
ifeq ($(COMPLETIONS),yes)
|
|
mkdir -p $(DESTDIR)$(ZSH_COMPLETION_DIR)
|
|
$(INSTALL) -m 0644 contrib/completions/complete.zsh $(DESTDIR)$(ZSH_COMPLETION_DIR)/_onedrive
|
|
mkdir -p $(DESTDIR)$(BASH_COMPLETION_DIR)
|
|
$(INSTALL) -m 0644 contrib/completions/complete.bash $(DESTDIR)$(BASH_COMPLETION_DIR)/onedrive
|
|
mkdir -p $(DESTDIR)$(FISH_COMPLETION_DIR)
|
|
$(INSTALL) -m 0644 contrib/completions/complete.fish $(DESTDIR)$(FISH_COMPLETION_DIR)/onedrive.fish
|
|
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
|
|
rm -f $(DESTDIR)$(FISH_COMPLETION_DIR)/onedrive.fish
|
|
endif
|