# Makefile for drbd.o
#
# This file is part of DRBD by Philipp Reisner and Lars Ellenberg.
#
# drbd is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# drbd is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with drbd; see the file COPYING.  If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#

VPATH = ../shared

# variables set by configure
DISTRO = @DISTRO@
prefix = @prefix@
exec_prefix = @exec_prefix@
localstatedir = @localstatedir@
datarootdir = @datarootdir@
datadir = @datadir@
sbindir = @sbindir@
sysconfdir = @sysconfdir@
BASH_COMPLETION_SUFFIX = @BASH_COMPLETION_SUFFIX@
UDEV_RULE_SUFFIX = @UDEV_RULE_SUFFIX@
INITDIR = @INITDIR@
LIBDIR = @prefix@/lib/@PACKAGE_TARNAME@
CC = @CC@
CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LN_S = @LN_S@

# features enabled or disabled by configure
WITH_83_SUPPORT = @WITH_83_SUPPORT@
WITH_UDEV = @WITH_UDEV@
WITH_XEN = @WITH_XEN@
WITH_PACEMAKER = @WITH_PACEMAKER@
WITH_RGMANAGER = @WITH_RGMANAGER@
WITH_BASHCOMPLETION = @WITH_BASHCOMPLETION@

# variables meant to be overridden from the make command line
DESTDIR ?= /

CFLAGS += -Wall -I. -I../shared

drbdadm-obj = drbdadm_scanner.o drbdadm_parser.o drbdadm_main.o \
	      drbdadm_adjust.o drbdtool_common.o drbdadm_usage_cnt.o \
	      drbd_buildtag.o drbdadm_minor_table.o shared_tool.o \
		  shared_main.o shared_parser.o

drbdsetup-obj = drbdsetup.o drbdtool_common.o drbd_buildtag.o \
	        drbd_strings.o shared_tool.o

all-obj := $(drbdadm-obj) $(drbdsetup-obj)

all: tools

../shared_prereqs.mk: ;
include ../shared_prereqs.mk

ifeq ($(WITH_83_SUPPORT),yes)
tools: drbdadm-83 drbdsetup-83
else
tools:
endif

.PHONY: drbdadm drbdsetup
drbdadm drbdsetup:
	echo >&2 "You meant to ask for $@-83" ; exit 1

drbdadm-83: $(drbdadm-obj)
	$(LINK.c) $(LDFLAGS) -o $@ $^

drbdadm_scanner.c: drbdadm_scanner.fl drbdadm_parser.h
	flex -s -odrbdadm_scanner.c drbdadm_scanner.fl

drbdsetup-83: $(drbdsetup-obj)
	$(LINK.c) $(LDFLAGS) -o $@ $^

clean:
	rm -f drbdadm_scanner.c
	rm -f drbdsetup-83 drbdadm-83 $(all-obj)
	rm -f *~

distclean: clean
	rm -f $(all-dep)

install:
ifeq ($(WITH_83_SUPPORT),yes)
	install -d $(DESTDIR)$(localstatedir)/lib/drbd
	install -d $(DESTDIR)$(localstatedir)/lock
	install -d $(DESTDIR)/lib/drbd/
	if getent group haclient > /dev/null 2> /dev/null ; then		\
		install -g haclient -m 4750 drbdsetup-83 $(DESTDIR)/lib/drbd/ ;	\
		install -m 755 drbdadm-83 $(DESTDIR)/lib/drbd/ ;		\
	else									\
		install -m 755 drbdsetup-83 $(DESTDIR)/lib/drbd/ ;		\
		install -m 755 drbdadm-83 $(DESTDIR)/lib/drbd/ ; 		\
	fi
endif

uninstall:
	rm -f $(DESTDIR)/lib/drbd/drbdsetup-83
	rm -f $(DESTDIR)/lib/drbd/drbdadm-83

.PHONY: install uninstall clean distclean
../../configure:
	@echo "please (re-)run ./autogen.sh with appropriate arguments"; exit 1
../../config.status: ../../configure
	@echo "please (re-)run ./configure with appropriate arguments"; exit 1
Makefile.in: ;
Makefile: Makefile.in ../../config.status
	cd ../.. && ./config.status user/v83/Makefile

