summaryrefslogtreecommitdiff
path: root/utils/Makefile
blob: b4f09b39ae26ac48afe939b96aeab02181f5483c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# This Makefile will work only with GNU make.
#
# Make file for the util sub-directory
#
# This make file does not control the sysdeps
# subdirectory, which is controlled
# from the top-level make file.
#

SED ?= sed
INSTALL = install
CHMOD = chmod

DESTDIR ?=
SBINDIR ?= /sbin
etcdir = /etc
HOMEDIR ?= $(etcdir)/iscsi

RULESDIR ?= $(etcdir)/udev/rules.d

CFLAGS ?= -O2 -fno-inline -g
CFLAGS += -Wall -Wextra -Wstrict-prototypes

PROGRAMS	= iscsi-iname
PROGRAMS_DEST	= $(addprefix $(DESTDIR)$(SBINDIR)/,$(PROGRAMS))

SCRIPTS_SOURCES		= iscsi_discovery.sh iscsi_offload.sh
SCRIPTS_TEMPLATES	= iscsi_fw_login.sh.template iscsi-gen-initiatorname.sh.template
SCRIPTS_GENERATED	= $(SCRIPTS_TEMPLATES:.template=)
SCRIPTS_DEST		= $(addprefix $(DESTDIR)$(SBINDIR)/,$(basename $(SCRIPTS_GENERATED))) \
			  $(addprefix $(DESTDIR)$(SBINDIR)/,$(basename $(SCRIPTS_SOURCES)))

RULESFILES_TEMPLATES	= 50-iscsi-firmware-login.rules.template
RULESFILES_GENERATED	= $(RULESFILES_TEMPLATES:.template=)
RULESFILES_DEST		= $(addprefix $(DESTDIR)$(RULESDIR)/,$(RULESFILES_GENERATED))

OBJS = iscsi-iname.o md5.o

all: $(PROGRAMS) $(SCRIPTS_GENERATED) $(RULESFILES_GENERATED)

$(SCRIPTS_GENERATED): %.sh: %.sh.template
	$(SED) -e 's:@SBINDIR@:$(SBINDIR):' -e 's:@HOMEDIR@:$(HOMEDIR):' $? > $@
	$(CHMOD) 755 $@

$(RULESFILES_GENERATED): %.rules: %.rules.template
	$(SED) -e 's:@SBINDIR@:$(SBINDIR):' $? > $@

iscsi-iname: $(OBJS)
	$(CC) $(CFLAGS) $(LDFLAGS) $^ $(DBM_LIB) -o $@

install: $(DESTDIR)$(SBINDIR) $(DESTDIR)$(RULESDIR) \
	$(PROGRAMS_DEST) $(SCRIPTS_DEST) $(RULESFILES_DEST)

$(PROGRAMS_DEST): $(DESTDIR)$(SBINDIR)/%: %
	$(INSTALL) -m 755 $? $@

$(SCRIPTS_DEST): $(DESTDIR)$(SBINDIR)/%: %.sh
	$(INSTALL) -m 755 $? $@

install_udev_rules: $(RULESFILES_DEST)

$(RULESFILES_DEST): $(DESTDIR)$(RULESDIR)/%: %
	$(INSTALL) -m 644 $? $@

$(DESTDIR)$(SBINDIR) $(DESTDIR)$(RULESDIR):
	[ -d $@ ] || $(INSTALL) -d $@

clean:
	$(RM) $(OBJS)
	$(RM) $(PROGRAMS)
	$(RM) .depend

distclean:
	$(RM) $(SCRIPTS_GENERATED)
	$(RM) $(RULESFILES_GENERATED)

.PHONY: all install clean distclean depend install_udev_rules

depend:
	$(CC) $(CFLAGS) -M `ls *.c` > .depend

-include .depend