Blame Makefile

Packit dd4ba5
CFLAGS ?= -O2 -g -Wall -Werror
Packit dd4ba5
override CFLAGS += -std=gnu99 -I.
Packit dd4ba5
override CPPFLAGS += -D_GNU_SOURCE -D__CHECK_ENDIAN__
Packit dd4ba5
LIBUUID = $(shell $(LD) -o /dev/null -luuid >/dev/null 2>&1; echo $$?)
Packit dd4ba5
LIBHUGETLBFS = $(shell $(LD) -o /dev/null -lhugetlbfs >/dev/null 2>&1; echo $$?)
Packit dd4ba5
HAVE_SYSTEMD = $(shell pkg-config --exists libsystemd  --atleast-version=242; echo $$?)
Packit dd4ba5
NVME = nvme
Packit dd4ba5
INSTALL ?= install
Packit dd4ba5
DESTDIR =
Packit dd4ba5
DESTDIROLD = /usr/local/sbin
Packit dd4ba5
PREFIX ?= /usr
Packit dd4ba5
SYSCONFDIR = /etc
Packit dd4ba5
SBINDIR = $(PREFIX)/sbin
Packit dd4ba5
LIBDIR ?= $(PREFIX)/lib
Packit dd4ba5
SYSTEMDDIR ?= $(LIBDIR)/systemd
Packit dd4ba5
UDEVDIR ?= $(SYSCONFDIR)/udev
Packit dd4ba5
UDEVRULESDIR ?= $(UDEVDIR)/rules.d
Packit dd4ba5
DRACUTDIR ?= $(LIBDIR)/dracut
Packit dd4ba5
LIB_DEPENDS =
Packit dd4ba5
Packit dd4ba5
ifeq ($(LIBUUID),0)
Packit dd4ba5
	override LDFLAGS += -luuid
Packit dd4ba5
	override CFLAGS += -DLIBUUID
Packit dd4ba5
	override LIB_DEPENDS += uuid
Packit dd4ba5
endif
Packit dd4ba5
Packit dd4ba5
ifeq ($(LIBHUGETLBFS),0)
Packit dd4ba5
	override LDFLAGS += -lhugetlbfs
Packit dd4ba5
	override CFLAGS += -DLIBHUGETLBFS
Packit dd4ba5
	override LIB_DEPENDS += hugetlbfs
Packit dd4ba5
endif
Packit dd4ba5
Packit dd4ba5
INC=-Iutil
Packit dd4ba5
Packit dd4ba5
ifeq ($(HAVE_SYSTEMD),0)
Packit dd4ba5
	override LDFLAGS += -lsystemd
Packit dd4ba5
	override CFLAGS += -DHAVE_SYSTEMD
Packit dd4ba5
endif
Packit dd4ba5
Packit dd4ba5
RPMBUILD = rpmbuild
Packit dd4ba5
TAR = tar
Packit dd4ba5
RM = rm -f
Packit dd4ba5
Packit dd4ba5
AUTHOR=Keith Busch <kbusch@kernel.org>
Packit dd4ba5
Packit dd4ba5
ifneq ($(findstring $(MAKEFLAGS),s),s)
Packit dd4ba5
ifndef V
Packit dd4ba5
	QUIET_CC	= @echo '   ' CC $@;
Packit dd4ba5
endif
Packit dd4ba5
endif
Packit dd4ba5
Packit dd4ba5
default: $(NVME)
Packit dd4ba5
Packit dd4ba5
NVME-VERSION-FILE: FORCE
Packit dd4ba5
	@$(SHELL_PATH) ./NVME-VERSION-GEN
Packit dd4ba5
-include NVME-VERSION-FILE
Packit dd4ba5
override CFLAGS += -DNVME_VERSION='"$(NVME_VERSION)"'
Packit dd4ba5
Packit dd4ba5
NVME_DPKG_VERSION=1~`lsb_release -sc`
Packit dd4ba5
Packit dd4ba5
OBJS := nvme-print.o nvme-ioctl.o \
Packit dd4ba5
	nvme-lightnvm.o fabrics.o nvme-models.o plugin.o \
Packit dd4ba5
	nvme-status.o nvme-filters.o nvme-topology.o
Packit dd4ba5
Packit dd4ba5
UTIL_OBJS := util/argconfig.o util/suffix.o util/json.o util/parser.o
Packit dd4ba5
Packit dd4ba5
PLUGIN_OBJS :=					\
Packit dd4ba5
	plugins/intel/intel-nvme.o		\
Packit dd4ba5
	plugins/lnvm/lnvm-nvme.o		\
Packit dd4ba5
	plugins/memblaze/memblaze-nvme.o	\
Packit dd4ba5
	plugins/wdc/wdc-nvme.o			\
Packit dd4ba5
	plugins/wdc/wdc-utils.o			\
Packit dd4ba5
	plugins/huawei/huawei-nvme.o		\
Packit dd4ba5
	plugins/netapp/netapp-nvme.o		\
Packit dd4ba5
	plugins/toshiba/toshiba-nvme.o		\
Packit dd4ba5
	plugins/micron/micron-nvme.o		\
Packit dd4ba5
	plugins/seagate/seagate-nvme.o 		\
Packit dd4ba5
	plugins/virtium/virtium-nvme.o		\
Packit dd4ba5
	plugins/shannon/shannon-nvme.o		\
Packit dd4ba5
	plugins/dera/dera-nvme.o            \
Packit dd4ba5
	plugins/scaleflux/sfx-nvme.o        \
Packit dd4ba5
    plugins/transcend/transcend-nvme.o
Packit dd4ba5
Packit dd4ba5
nvme: nvme.c nvme.h $(OBJS) $(PLUGIN_OBJS) $(UTIL_OBJS) NVME-VERSION-FILE
Packit dd4ba5
	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) $(INC) $< -o $(NVME) $(OBJS) $(PLUGIN_OBJS) $(UTIL_OBJS) $(LDFLAGS)
Packit dd4ba5
Packit dd4ba5
verify-no-dep: nvme.c nvme.h $(OBJS) NVME-VERSION-FILE
Packit dd4ba5
	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) $< -o $@ $(OBJS) $(LDFLAGS)
Packit dd4ba5
Packit dd4ba5
nvme.o: nvme.c nvme.h nvme-print.h nvme-ioctl.h util/argconfig.h util/suffix.h nvme-lightnvm.h fabrics.h
Packit dd4ba5
	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) $(INC) -c $<
Packit dd4ba5
Packit dd4ba5
%.o: %.c %.h nvme.h linux/nvme.h linux/nvme_ioctl.h nvme-ioctl.h nvme-print.h util/argconfig.h
Packit dd4ba5
	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) $(INC) -o $@ -c $<
Packit dd4ba5
Packit dd4ba5
%.o: %.c nvme.h linux/nvme.h linux/nvme_ioctl.h nvme-ioctl.h nvme-print.h util/argconfig.h
Packit dd4ba5
	$(QUIET_CC)$(CC) $(CPPFLAGS) $(CFLAGS) $(INC) -o $@ -c $<
Packit dd4ba5
Packit dd4ba5
doc: $(NVME)
Packit dd4ba5
	$(MAKE) -C Documentation
Packit dd4ba5
Packit dd4ba5
test:
Packit dd4ba5
	$(MAKE) -C tests/ run
Packit dd4ba5
Packit dd4ba5
all: doc
Packit dd4ba5
Packit dd4ba5
clean:
Packit dd4ba5
	$(RM) $(NVME) $(OBJS) $(PLUGIN_OBJS) $(UTIL_OBJS) *~ a.out NVME-VERSION-FILE *.tar* nvme.spec version control nvme-*.deb 70-nvmf-autoconnect.conf
Packit dd4ba5
	$(MAKE) -C Documentation clean
Packit dd4ba5
	$(RM) tests/*.pyc
Packit dd4ba5
	$(RM) verify-no-dep
Packit dd4ba5
Packit dd4ba5
clobber: clean
Packit dd4ba5
	$(MAKE) -C Documentation clobber
Packit dd4ba5
Packit dd4ba5
install-man:
Packit dd4ba5
	$(MAKE) -C Documentation install-no-build
Packit dd4ba5
Packit dd4ba5
install-bin: default
Packit dd4ba5
	$(RM) $(DESTDIROLD)/nvme
Packit dd4ba5
	$(INSTALL) -d $(DESTDIR)$(SBINDIR)
Packit dd4ba5
	$(INSTALL) -m 755 nvme $(DESTDIR)$(SBINDIR)
Packit dd4ba5
Packit dd4ba5
install-bash-completion:
Packit dd4ba5
	$(INSTALL) -d $(DESTDIR)$(PREFIX)/share/bash-completion/completions
Packit dd4ba5
	$(INSTALL) -m 644 -T ./completions/bash-nvme-completion.sh $(DESTDIR)$(PREFIX)/share/bash-completion/completions/nvme
Packit dd4ba5
Packit dd4ba5
install-systemd:
Packit dd4ba5
	$(INSTALL) -d $(DESTDIR)$(SYSTEMDDIR)/system
Packit dd4ba5
	$(INSTALL) -m 644 ./nvmf-autoconnect/systemd/* $(DESTDIR)$(SYSTEMDDIR)/system
Packit dd4ba5
Packit dd4ba5
install-udev:
Packit dd4ba5
	$(INSTALL) -d $(DESTDIR)$(UDEVRULESDIR)
Packit dd4ba5
	$(INSTALL) -m 644 ./nvmf-autoconnect/udev-rules/* $(DESTDIR)$(UDEVRULESDIR)
Packit dd4ba5
Packit dd4ba5
install-dracut: 70-nvmf-autoconnect.conf
Packit dd4ba5
	$(INSTALL) -d $(DESTDIR)$(DRACUTDIR)/dracut.conf.d
Packit dd4ba5
	$(INSTALL) -m 644 $< $(DESTDIR)$(DRACUTDIR)/dracut.conf.d
Packit dd4ba5
Packit dd4ba5
install-zsh-completion:
Packit dd4ba5
	$(INSTALL) -d $(DESTDIR)$(PREFIX)/share/zsh/site-functions
Packit dd4ba5
	$(INSTALL) -m 644 -T ./completions/_nvme $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_nvme
Packit dd4ba5
Packit dd4ba5
install-hostparams: install-etc
Packit dd4ba5
	if [ ! -s $(DESTDIR)$(SYSCONFDIR)/nvme/hostnqn ]; then \
Packit dd4ba5
		echo `$(DESTDIR)$(SBINDIR)/nvme gen-hostnqn` > $(DESTDIR)$(SYSCONFDIR)/nvme/hostnqn; \
Packit dd4ba5
	fi
Packit dd4ba5
	if [ ! -s $(DESTDIR)$(SYSCONFDIR)/nvme/hostid ]; then \
Packit dd4ba5
		uuidgen > $(DESTDIR)$(SYSCONFDIR)/nvme/hostid; \
Packit dd4ba5
	fi
Packit dd4ba5
Packit dd4ba5
install-etc:
Packit dd4ba5
	$(INSTALL) -d $(DESTDIR)$(SYSCONFDIR)/nvme
Packit dd4ba5
	touch $(DESTDIR)$(SYSCONFDIR)/nvme/hostnqn
Packit dd4ba5
	touch $(DESTDIR)$(SYSCONFDIR)/nvme/hostid
Packit dd4ba5
	if [ ! -f $(DESTDIR)$(SYSCONFDIR)/nvme/discovery.conf ]; then \
Packit dd4ba5
		$(INSTALL) -m 644 -T ./etc/discovery.conf.in $(DESTDIR)$(SYSCONFDIR)/nvme/discovery.conf; \
Packit dd4ba5
	fi
Packit dd4ba5
Packit Bot 53ff50
install-spec: install-bin install-man install-bash-completion install-zsh-completion install-systemd install-udev install-dracut
Packit Bot 53ff50
install: install-spec
Packit dd4ba5
Packit dd4ba5
nvme.spec: nvme.spec.in NVME-VERSION-FILE
Packit dd4ba5
	sed -e 's/@@VERSION@@/$(NVME_VERSION)/g' < $< > $@+
Packit dd4ba5
	mv $@+ $@
Packit dd4ba5
Packit dd4ba5
70-nvmf-autoconnect.conf: nvmf-autoconnect/dracut-conf/70-nvmf-autoconnect.conf.in
Packit dd4ba5
	sed -e 's#@@UDEVRULESDIR@@#$(UDEVRULESDIR)#g' < $< > $@+
Packit dd4ba5
	mv $@+ $@
Packit dd4ba5
Packit dd4ba5
dist: nvme.spec
Packit dd4ba5
	git archive --format=tar --prefix=nvme-$(NVME_VERSION)/ HEAD > nvme-$(NVME_VERSION).tar
Packit dd4ba5
	@echo $(NVME_VERSION) > version
Packit dd4ba5
	$(TAR) rf  nvme-$(NVME_VERSION).tar nvme.spec version
Packit dd4ba5
	gzip -f -9 nvme-$(NVME_VERSION).tar
Packit dd4ba5
Packit dd4ba5
control: nvme.control.in NVME-VERSION-FILE
Packit dd4ba5
	sed -e 's/@@VERSION@@/$(NVME_VERSION)/g' < $< > $@+
Packit dd4ba5
	mv $@+ $@
Packit dd4ba5
	sed -e 's/@@DEPENDS@@/$(LIB_DEPENDS)/g' < $@ > $@+
Packit dd4ba5
	mv $@+ $@
Packit dd4ba5
Packit dd4ba5
pkg: control nvme.control.in
Packit dd4ba5
	mkdir -p nvme-$(NVME_VERSION)$(SBINDIR)
Packit dd4ba5
	mkdir -p nvme-$(NVME_VERSION)$(PREFIX)/share/man/man1
Packit dd4ba5
	mkdir -p nvme-$(NVME_VERSION)/DEBIAN/
Packit dd4ba5
	cp Documentation/*.1 nvme-$(NVME_VERSION)$(PREFIX)/share/man/man1
Packit dd4ba5
	cp nvme nvme-$(NVME_VERSION)$(SBINDIR)
Packit dd4ba5
	cp control nvme-$(NVME_VERSION)/DEBIAN/
Packit dd4ba5
Packit dd4ba5
# Make a reproducible tar.gz in the super-directory. Uses
Packit dd4ba5
# git-restore-mtime if available to adjust timestamps.
Packit dd4ba5
../nvme-cli_$(NVME_VERSION).orig.tar.gz:
Packit dd4ba5
	find . -type f -perm -u+rwx -exec chmod 0755 '{}' +
Packit dd4ba5
	find . -type f -perm -u+rw '!' -perm -u+x -exec chmod 0644 '{}' +
Packit dd4ba5
	if which git-restore-mtime >/dev/null; then git-restore-mtime; fi
Packit dd4ba5
	git ls-files | tar cf ../nvme-cli_$(NVME_VERSION).orig.tar \
Packit dd4ba5
	  --owner=root --group=root \
Packit dd4ba5
	  --transform='s#^#nvme-cli-$(NVME_VERSION)/#' --files-from -
Packit dd4ba5
	touch -d "`git log --format=%ci -1`" ../nvme-cli_$(NVME_VERSION).orig.tar
Packit dd4ba5
	gzip -f -9 ../nvme-cli_$(NVME_VERSION).orig.tar
Packit dd4ba5
Packit dd4ba5
dist-orig: ../nvme-cli_$(NVME_VERSION).orig.tar.gz
Packit dd4ba5
Packit dd4ba5
# Create a throw-away changelog, which dpkg-buildpackage uses to
Packit dd4ba5
# determine the package version.
Packit dd4ba5
deb-changelog:
Packit dd4ba5
	printf '%s\n\n  * Auto-release.\n\n %s\n' \
Packit dd4ba5
          "nvme-cli ($(NVME_VERSION)-$(NVME_DPKG_VERSION)) `lsb_release -sc`; urgency=low" \
Packit dd4ba5
          "-- $(AUTHOR)  `git log -1 --format=%cD`" \
Packit dd4ba5
	  > debian/changelog
Packit dd4ba5
Packit dd4ba5
deb: deb-changelog dist-orig
Packit dd4ba5
	dpkg-buildpackage -uc -us -sa
Packit dd4ba5
Packit dd4ba5
# After this target is build you need to do a debsign and dput on the
Packit dd4ba5
# ../<name>.changes file to upload onto the relevant PPA. For example:
Packit dd4ba5
#
Packit dd4ba5
#  > make AUTHOR='First Last <first.last@company.com>' \
Packit dd4ba5
#        NVME_DPKG_VERSION='0ubuntu1' deb-ppa
Packit dd4ba5
#  > debsign <name>.changes
Packit dd4ba5
#  > dput ppa:<lid>/ppa <name>.changes
Packit dd4ba5
#
Packit dd4ba5
# where lid is your launchpad.net ID.
Packit dd4ba5
deb-ppa: deb-changelog dist-orig
Packit dd4ba5
	debuild -uc -us -S
Packit dd4ba5
Packit dd4ba5
deb-light: $(NVME) pkg nvme.control.in
Packit dd4ba5
	dpkg-deb --build nvme-$(NVME_VERSION)
Packit dd4ba5
Packit dd4ba5
rpm: dist
Packit dd4ba5
	$(RPMBUILD) --define '_libdir ${LIBDIR}' -ta nvme-$(NVME_VERSION).tar.gz
Packit dd4ba5
Packit dd4ba5
.PHONY: default doc all clean clobber install-man install-bin install
Packit dd4ba5
.PHONY: dist pkg dist-orig deb deb-light rpm FORCE test