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