summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Duncan <lduncan@suse.com>2022-03-23 09:46:34 -0700
committerGitHub <noreply@github.com>2022-03-23 09:46:34 -0700
commitec7eae680c2d6bc2f1852091cafce45e00e93f45 (patch)
tree03dc2ccce55c085a19ae48bc52ef8c33415e3848
parent53c51a7525435c539697da128081e54fad13df09 (diff)
parentfd14dd8316b1317d3ee2ff28b9d013198be40d70 (diff)
downloadopen-iscsi-ec7eae680c2d6bc2f1852091cafce45e00e93f45.tar.gz
Merge pull request #324 from gonzoleeman/cleanup_build_system_and_templates
Clean up Makefile build system.
-rw-r--r--Makefile118
-rw-r--r--etc/Makefile81
-rw-r--r--etc/systemd/.gitignore4
-rw-r--r--etc/systemd/iscsi-init.service.template (renamed from etc/systemd/iscsi-init.service)0
-rw-r--r--etc/systemd/iscsi.service.template (renamed from etc/systemd/iscsi.service)0
-rw-r--r--etc/systemd/iscsid.service.template (renamed from etc/systemd/iscsid.service)0
-rw-r--r--etc/systemd/iscsiuio.service.template (renamed from etc/systemd/iscsiuio.service)0
-rw-r--r--usr/Makefile18
-rw-r--r--utils/.gitignore3
-rw-r--r--utils/50-iscsi-firmware-login.rules.template (renamed from utils/50-iscsi-firmware-login.rules)0
-rw-r--r--utils/Makefile66
-rw-r--r--[-rwxr-xr-x]utils/iscsi-gen-initiatorname.sh.template (renamed from utils/iscsi-gen-initiatorname)0
-rwxr-xr-xutils/iscsi_discovery.sh (renamed from utils/iscsi_discovery)0
-rw-r--r--utils/iscsi_fw_login.sh.template (renamed from utils/iscsi_fw_login)0
-rwxr-xr-xutils/iscsi_offload.sh (renamed from utils/iscsi_offload)0
15 files changed, 200 insertions, 90 deletions
diff --git a/Makefile b/Makefile
index 5f513de..2e2627d 100644
--- a/Makefile
+++ b/Makefile
@@ -6,33 +6,15 @@
# that you want everything installed into.
DESTDIR ?=
-SED = /usr/bin/sed
-
prefix = /usr
exec_prefix =
-sbindir = $(exec_prefix)/sbin
-bindir = $(exec_prefix)/bin
+sbindir ?= $(exec_prefix)/sbin
mandir = $(prefix)/share/man
-etcdir = /etc
-initddir = $(etcdir)/init.d
-rulesdir = $(etcdir)/udev/rules.d
-systemddir = $(prefix)/lib/systemd
MANPAGES = doc/iscsid.8 doc/iscsiadm.8 doc/iscsi_discovery.8 \
iscsiuio/docs/iscsiuio.8 doc/iscsi_fw_login.8 doc/iscsi-iname.8 \
doc/iscsistart.8 doc/iscsi-gen-initiatorname.8
-PROGRAMS = usr/iscsid usr/iscsiadm utils/iscsi-iname iscsiuio/src/unix/iscsiuio \
- usr/iscsistart
-SCRIPTS = utils/iscsi_discovery utils/iscsi_fw_login utils/iscsi_offload \
- utils/iscsi-gen-initiatorname
INSTALL = install
-CONFIGFILE = etc/iscsid.conf
-IFACEFILES = etc/iface.example
-RULESFILES = utils/50-iscsi-firmware-login.rules
-SYSTEMDFILES = etc/systemd/iscsi.service \
- etc/systemd/iscsi-init.service \
- etc/systemd/iscsid.service etc/systemd/iscsid.socket \
- etc/systemd/iscsiuio.service etc/systemd/iscsiuio.socket
export DESTDIR prefix INSTALL
@@ -62,12 +44,13 @@ endif
all: user
user: iscsiuio/Makefile
- $(MAKE) -C libopeniscsiusr SBINDIR=$(sbindir)
- $(MAKE) -C utils/sysdeps
- $(MAKE) -C utils/fwparam_ibft
- $(MAKE) -C usr
- $(MAKE) -C utils
- $(MAKE) -C iscsiuio
+ $(MAKE) $(MFLAGS) -C libopeniscsiusr SBINDIR=$(sbindir)
+ $(MAKE) $(MFLAGS) -C utils/sysdeps
+ $(MAKE) $(MFLAGS) -C utils/fwparam_ibft
+ $(MAKE) $(MFLAGS) -C usr SBINDIR=$(sbindir)
+ $(MAKE) $(MFLAGS) -C utils SBINDIR=$(sbindir)
+ $(MAKE) $(MFLAGS) -C etc SBINDIR=$(sbindir)
+ $(MAKE) $(MFLAGS) -C iscsiuio
@echo
@echo "Compilation complete Output file"
@echo "----------------------------------- ----------------"
@@ -88,13 +71,14 @@ iscsiuio/configure iscsiuio/Makefile.in: iscsiuio/configure.ac iscsiuio/Makefile
force: ;
clean:
- $(MAKE) -C utils/sysdeps clean
- $(MAKE) -C utils/fwparam_ibft clean
- $(MAKE) -C utils clean
- $(MAKE) -C usr clean
- $(MAKE) -C libopeniscsiusr clean
- [ ! -f iscsiuio/Makefile ] || $(MAKE) -C iscsiuio clean
- [ ! -f iscsiuio/Makefile ] || $(MAKE) -C iscsiuio distclean
+ $(MAKE) $(MFLAGS) -C utils/sysdeps clean
+ $(MAKE) $(MFLAGS) -C utils/fwparam_ibft clean
+ $(MAKE) $(MFLAGS) -C utils clean
+ $(MAKE) $(MFLAGS) -C usr clean
+ $(MAKE) $(MFLAGS) -C etc clean
+ $(MAKE) $(MFLAGS) -C libopeniscsiusr clean
+ [ ! -f iscsiuio/Makefile ] || $(MAKE) $(MFLAGS) -C iscsiuio clean
+ [ ! -f iscsiuio/Makefile ] || $(MAKE) $(MFLAGS) -C iscsiuio distclean
# this is for safety
# now -jXXX will still be safe
@@ -104,64 +88,24 @@ clean:
install_etc install_iface install_doc install_iname
install: install_programs install_doc install_etc \
- install_systemd install_iname install_iface install_libopeniscsiusr
+ install_systemd install_iname install_iface install_libopeniscsiusr \
+ install_iscsiuio
+
+install_iscsiuio:
+ $(MAKE) $(MFLAGS) -C iscsiuio install
install_user: install_programs install_doc install_etc \
install_systemd install_iname install_iface
install_udev_rules:
- $(INSTALL) -d $(DESTDIR)$(rulesdir)
- $(INSTALL) -m 644 $(RULESFILES) $(DESTDIR)$(rulesdir)
- for f in $(RULESFILES); do \
- p=$(DESTDIR)$(rulesdir)/$${f##*/}; \
- $(SED) -i -e 's:@SBINDIR@:$(sbindir):' $$p; \
- done
-
-install_systemd:
- $(INSTALL) -d $(DESTDIR)$(systemddir)/system
- $(INSTALL) -m 644 $(SYSTEMDFILES) $(DESTDIR)$(systemddir)/system
- for f in $(SYSTEMDFILES); do \
- p=$(DESTDIR)$(systemddir)/system/$${f##*/}; \
- $(SED) -i -e 's:@SBINDIR@:$(sbindir):' $$p; \
- done
+ $(MAKE) $(MFLAGS) -C utils $@
-install_programs: $(PROGRAMS) $(SCRIPTS)
- $(INSTALL) -d $(DESTDIR)$(sbindir)
- $(INSTALL) -m 755 $^ $(DESTDIR)$(sbindir)
- for f in $(SCRIPTS); do \
- p=$(DESTDIR)$(sbindir)/$${f##*/}; \
- $(SED) -i -e 's:@SBINDIR@:$(sbindir):' $$p; \
- done
+install_programs:
+ $(MAKE) $(MFLAGS) -C utils install
+ $(MAKE) $(MFLAGS) -C usr install
-# ugh, auto-detection is evil
-# Gentoo maintains their own init.d stuff
-install_initd:
- if [ -f /etc/debian_version ]; then \
- $(MAKE) install_initd_debian ; \
- elif [ -f /etc/redhat-release ]; then \
- $(MAKE) install_initd_redhat ; \
- fi
-
-# these are external targets to allow bypassing distribution detection
-install_initd_redhat:
- $(INSTALL) -d $(DESTDIR)$(initddir)
- $(INSTALL) -m 755 etc/initd/initd.redhat \
- $(DESTDIR)$(initddir)/open-iscsi
-
-install_initd_debian:
- $(INSTALL) -d $(DESTDIR)$(initddir)
- $(INSTALL) -m 755 etc/initd/initd.debian \
- $(DESTDIR)$(initddir)/open-iscsi
-
-install_iface: $(IFACEFILES)
- $(INSTALL) -d $(DESTDIR)$(etcdir)/iscsi/ifaces
- $(INSTALL) -m 644 $^ $(DESTDIR)$(etcdir)/iscsi/ifaces
-
-install_etc: $(CONFIGFILE)
- if [ ! -f $(DESTDIR)/etc/iscsi/iscsid.conf ]; then \
- $(INSTALL) -d $(DESTDIR)$(etcdir)/iscsi ; \
- $(INSTALL) -m 644 $^ $(DESTDIR)$(etcdir)/iscsi ; \
- fi
+install_initd install_initd_redhat install_initd_debian install_ifae install_etc install_systemd install_iface:
+ $(MAKE) $(MFLAGS) -C etc $@
install_doc: $(MANPAGES)
$(INSTALL) -d $(DESTDIR)$(mandir)/man8
@@ -177,11 +121,15 @@ install_iname:
fi
install_libopeniscsiusr:
- $(MAKE) -C libopeniscsiusr install
+ $(MAKE) $(MFLAGS) -C libopeniscsiusr install
depend:
for dir in usr utils utils/fwparam_ibft; do \
- $(MAKE) -C $$dir $@; \
+ $(MAKE) $(MFLAGS) -C $$dir $@; \
done
+.PHONY: all user install force clean install_user install_udev_rules install_systemd \
+ install_programs install_initrd install_initrd_redhat install_initrd_debian \
+ install_etc install_doc install_iname install_libopeniscsiusr
+
# vim: ft=make tw=72 sw=4 ts=4:
diff --git a/etc/Makefile b/etc/Makefile
new file mode 100644
index 0000000..8a7d7c0
--- /dev/null
+++ b/etc/Makefile
@@ -0,0 +1,81 @@
+#
+# gnu Makefile for the etc subdirectory, including
+# initd and systemd subdirectories
+#
+
+prefix = /usr
+DESTDIR ?=
+SBINDIR ?= $(DESTDIR)/sbin
+
+systemddir ?= $(DESTDIR)$(prefix)/lib/systemd
+etcdir = $(DESTDIR)/etc
+initddir ?= $(etcdir)/init.d
+
+HOMEDIR ?= $(etcdir)/iscsi
+
+SED = /usr/bin/sed
+INSTALL = install
+
+SYSTEMD_SOURCE_FILES = iscsid.socket iscsiuio.socket
+SYSTEMD_SOURCES = $(addprefix systemd/,$(SYSTEMD_SOURCE_FILES))
+SYSTEMD_TEMPLATE_FILES = iscsi-init.service.template \
+ iscsid.service.template \
+ iscsi.service.template \
+ iscsiuio.service.template
+SYSTEMD_TEMPLATES = $(addprefix systemd/,$(SYSTEMD_TEMPLATE_FILES))
+SYSTEMD_GENERATED_SERVICE_FILES = $(SYSTEMD_TEMPLATES:.template=)
+SYSTEMD_DEST_FILES = $(addprefix $(systemddir)/system/,$(notdir $(SYSTEMD_SOURCES))) \
+ $(addprefix $(systemddir)/system/,$(notdir $(SYSTEMD_GENERATED_SERVICE_FILES)))
+IFACE_FILES = iface.example
+IFACE_DEST_FILES = $(addprefix $(HOMEDIR)/ifaces/,$(IFACE_FILES))
+ETC_FILES = iscsid.conf
+ETC_DEST_FILES = $(addprefix $(HOMEDIR)/,$(ETC_FILES))
+
+all: $(SYSTEMD_SOURCES) $(SYSTEMD_GENERATED_SERVICE_FILES)
+
+$(SYSTEMD_GENERATED_SERVICE_FILES): systemd/%.service: systemd/%.service.template
+ $(SED) -e 's:@SBINDIR@:$(SBINDIR):' $? > $@
+
+install: install_systemd install_iface install_etc
+
+install_iface: $(IFACE_DEST_FILES)
+
+$(IFACE_DEST_FILES): $(HOMEDIR)/ifaces/%: %
+ $(INSTALL) -m 644 $? $@
+
+install_etc: $(ETC_DEST_FILES)
+
+$(ETC_DEST_FILES): $(HOMEDIR)/%: %
+ $(INSTALL) -m 644 $? $@
+
+install_initd_distro = $(INSTALL) -m 755 $(1) $(initddir)/open-iscsi/
+
+install_initd: $(initddir)/open-iscsi
+ @if [ -f /etc/debian_version ]; then \
+ $(call install_initd_distro,initd/initd.redhat) ; \
+ elif [ -f /etc/redhat-release ]; then \
+ $(call install_initd_distro,initd/initd.debian) ; \
+ fi
+
+$(initddir)/open-iscsi:
+ [ -d $@ ] || $(INSTALL) -d $@
+
+install_initd_redhat: $(initddir)/open-iscsi
+ $(call install_initd_distro,initd/initd.redhat)
+
+install_initd_debian: $(initddir)/open-iscsi
+ $(call install_initd_distro,initd/initd.debian)
+
+install_systemd: $(systemddir)/system $(SYSTEMD_DEST_FILES)
+
+$(systemddir)/system:
+ [ -d $@ ] || $(INSTALL) -d -m 775 $@
+
+$(SYSTEMD_DEST_FILES): $(systemddir)/system/%: systemd/%
+ $(INSTALL) $? $@
+
+clean:
+ $(RM) $(SYSTEMD_GENERATED_SERVICE_FILES)
+
+.PHONY: all clean install install_iface install_initd install_initd_redhat \
+ install_initd_debian install_systemd
diff --git a/etc/systemd/.gitignore b/etc/systemd/.gitignore
new file mode 100644
index 0000000..2b3a64e
--- /dev/null
+++ b/etc/systemd/.gitignore
@@ -0,0 +1,4 @@
+iscsi-init.service
+iscsi.service
+iscsid.service
+iscsiuio.service
diff --git a/etc/systemd/iscsi-init.service b/etc/systemd/iscsi-init.service.template
index 8f9a8aa..8f9a8aa 100644
--- a/etc/systemd/iscsi-init.service
+++ b/etc/systemd/iscsi-init.service.template
diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service.template
index 6becab4..6becab4 100644
--- a/etc/systemd/iscsi.service
+++ b/etc/systemd/iscsi.service.template
diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service.template
index e2a50d3..e2a50d3 100644
--- a/etc/systemd/iscsid.service
+++ b/etc/systemd/iscsid.service.template
diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service.template
index 2e721fe..2e721fe 100644
--- a/etc/systemd/iscsiuio.service
+++ b/etc/systemd/iscsiuio.service.template
diff --git a/usr/Makefile b/usr/Makefile
index fe7430a..e7ba803 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -4,6 +4,11 @@ ifeq ($(TOPDIR),)
TOPDIR = ..
endif
+INSTALL = install
+
+DESTDR ?=
+SBINDIR ?= $(DESTDIR)/sbin
+
OSNAME=$(shell uname -s)
# allow users to override these
@@ -46,7 +51,9 @@ LDFLAGS += $(shell $(PKG_CONFIG) --libs libsystemd)
else
CFLAGS += -DNO_SYSTEMD
endif
-PROGRAMS = iscsid iscsiadm iscsistart
+
+PROGRAMS = iscsid iscsiadm iscsistart
+PROGRAMS_DEST = $(addprefix $(SBINDIR)/,$(PROGRAMS))
# libc compat files
SYSDEPS_SRCS = $(sort $(wildcard ../utils/sysdeps/*.o))
@@ -77,6 +84,15 @@ iscsiadm: $(ISCSI_LIB_SRCS) $(DISCOVERY_SRCS) iscsiadm.o session_mgmt.o mntcheck
iscsistart: $(ISCSI_LIB_SRCS) $(INITIATOR_SRCS) $(FW_BOOT_SRCS) \
iscsistart.o statics.o
$(CC) $(CFLAGS) $^ -o $@ -lcrypto -lrt $(LDFLAGS) $(ISCSI_LIB)
+
+install: $(SBINDIR) $(PROGRAMS_DEST)
+
+$(SBINDIR):
+ [ -d $@ ] || $(INSTALL) -d $@
+
+$(PROGRAMS_DEST): $(SBINDIR)/%: %
+ $(INSTALL) -m 755 $? $@
+
clean:
rm -f *.o $(PROGRAMS) .depend $(LIBSYS)
diff --git a/utils/.gitignore b/utils/.gitignore
index 7efe3fd..7b4beea 100644
--- a/utils/.gitignore
+++ b/utils/.gitignore
@@ -1 +1,4 @@
iscsi-iname
+50-iscsi-firmware-login.rules
+iscsi-gen-initiatorname.sh
+iscsi_fw_login.sh
diff --git a/utils/50-iscsi-firmware-login.rules b/utils/50-iscsi-firmware-login.rules.template
index 9fa1e7d..9fa1e7d 100644
--- a/utils/50-iscsi-firmware-login.rules
+++ b/utils/50-iscsi-firmware-login.rules.template
diff --git a/utils/Makefile b/utils/Makefile
index aed3bb0..92af01e 100644
--- a/utils/Makefile
+++ b/utils/Makefile
@@ -1,16 +1,74 @@
# This Makefile will work only with GNU make.
+#
+# Make file for the util sub-directory
+#
+# This make file does not control the fwparam_ibft
+# or sysdeps subdirectories. Those are still controlled
+# from the top-level make file.
+#
+
+SED = /usr/bin/sed
+INSTALL = install
+CHMOD = chmod
+
+DESTDIR ?=
+SBINDIR ?= $(DESTDIR)/sbin
+
+ETCDIR = $(DESTDIR)/etc
+RULESDIR = $(ETCDIR)/udev/rules.d
CFLAGS ?= -O2 -fno-inline -g
CFLAGS += -Wall -Wextra -Wstrict-prototypes
-PROGRAMS = iscsi-iname
-all: $(PROGRAMS)
+PROGRAMS = iscsi-iname
+PROGRAMS_DEST = $(addprefix $(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 $(SBINDIR)/,$(basename $(SCRIPTS_GENERATED))) \
+ $(addprefix $(SBINDIR)/,$(basename $(SCRIPTS_SOURCES)))
+
+RULESFILES_TEMPLATES = 50-iscsi-firmware-login.rules.template
+RULESFILES_GENERATED = $(RULESFILES_TEMPLATES:.template=)
+RULESFILES_DEST = $(addprefix $(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):' $? > $@
+ $(CHMOD) 755 $@
-iscsi-iname: md5.o iscsi-iname.o
+$(RULESFILES_GENERATED): %.rules: %.rules.template
+ $(SED) -e 's:@SBINDIR@:$(SBINDIR):' $? > $@
+
+iscsi-iname: $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) $^ $(DBM_LIB) -o $@
+install: $(SBINDIR) $(RULESDIR) $(PROGRAMS_DEST) $(SCRIPTS_DEST) $(RULESFILES_DEST)
+
+$(PROGRAMS_DEST): $(SBINDIR)/%: %
+ $(INSTALL) -m 755 $? $@
+
+$(SCRIPTS_DEST): $(SBINDIR)/%: %.sh
+ $(INSTALL) -m 755 $? $@
+
+install_udev_rules: $(RULESFILES_DEST)
+
+$(RULESFILES_DEST): $(RULESDIR)/%: %
+ $(INSTALL) -m 644 $? $@
+
+$(SBINDIR) $(RULESDIR):
+ [ -d $@ ] || $(INSTALL) -d $@
+
clean:
- rm -f *.o $(PROGRAMS) .depend
+ $(RM) $(OBJS)
+ $(RM) $(PROGRAMS)
+ $(RM) $(SCRIPTS_GENERATED)
+ $(RM) $(RULESFILES_GENERATED)
+ $(RM) .depend
depend:
gcc $(CFLAGS) -M `ls *.c` > .depend
diff --git a/utils/iscsi-gen-initiatorname b/utils/iscsi-gen-initiatorname.sh.template
index 70ad8bf..70ad8bf 100755..100644
--- a/utils/iscsi-gen-initiatorname
+++ b/utils/iscsi-gen-initiatorname.sh.template
diff --git a/utils/iscsi_discovery b/utils/iscsi_discovery.sh
index be2f390..be2f390 100755
--- a/utils/iscsi_discovery
+++ b/utils/iscsi_discovery.sh
diff --git a/utils/iscsi_fw_login b/utils/iscsi_fw_login.sh.template
index aae9e4c..aae9e4c 100644
--- a/utils/iscsi_fw_login
+++ b/utils/iscsi_fw_login.sh.template
diff --git a/utils/iscsi_offload b/utils/iscsi_offload.sh
index 1869fe1..1869fe1 100755
--- a/utils/iscsi_offload
+++ b/utils/iscsi_offload.sh