2025-02-16 12:41:59 +01:00
|
|
|
# Copyright (c) 2021, Dell Inc. or its subsidiaries. All rights reserved.
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# See the LICENSE file for details.
|
|
|
|
#
|
|
|
|
# This file is part of NVMe STorage Appliance Services (nvme-stas).
|
|
|
|
#
|
|
|
|
# Authors: Martin Belanger <Martin.Belanger@dell.com>
|
|
|
|
#
|
|
|
|
.DEFAULT_GOAL := stas
|
|
|
|
BUILD-DIR := .build
|
|
|
|
DEB-PKG-DIR := ${BUILD-DIR}/deb-pkg
|
|
|
|
RPM-BUILDROOT-DIR := ${BUILD-DIR}/rpmbuild
|
|
|
|
|
|
|
|
ifneq (,$(strip $(filter $(MAKECMDGOALS),rpm deb dist)))
|
|
|
|
XTRA-MESON-OPTS := --wrap-mode=nodownload
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: update-subprojects
|
|
|
|
update-subprojects:
|
|
|
|
meson subprojects update
|
|
|
|
|
|
|
|
${BUILD-DIR}:
|
|
|
|
BUILD_DIR=${BUILD-DIR} ./configure ${XTRA-MESON-OPTS}
|
|
|
|
@echo "Configuration located in: $@"
|
|
|
|
@echo "-------------------------------------------------------"
|
|
|
|
|
|
|
|
.PHONY: stas
|
|
|
|
stas: ${BUILD-DIR}
|
2025-02-16 12:53:58 +01:00
|
|
|
meson compile -C ${BUILD-DIR}
|
2025-02-16 12:41:59 +01:00
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
|
|
|
ifneq ("$(wildcard ${BUILD-DIR})","")
|
2025-02-16 12:53:58 +01:00
|
|
|
meson compile --clean -C ${BUILD-DIR}
|
2025-02-16 12:41:59 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: purge
|
|
|
|
purge:
|
|
|
|
ifneq ("$(wildcard ${BUILD-DIR})","")
|
|
|
|
rm -rf ${BUILD-DIR}
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: install
|
|
|
|
install: stas
|
|
|
|
sudo meson $@ -C ${BUILD-DIR} --skip-subprojects
|
|
|
|
|
|
|
|
.PHONY: uninstall
|
|
|
|
uninstall: ${BUILD-DIR}
|
2025-02-16 12:53:58 +01:00
|
|
|
sudo ninja $@ -C ${BUILD-DIR}
|
2025-02-16 12:41:59 +01:00
|
|
|
|
|
|
|
.PHONY: dist
|
|
|
|
dist: stas
|
|
|
|
meson $@ -C ${BUILD-DIR} --formats gztar
|
|
|
|
|
|
|
|
.PHONY: test
|
|
|
|
test: stas
|
|
|
|
meson $@ -C ${BUILD-DIR} --suite nvme-stas
|
|
|
|
|
2025-02-16 12:53:58 +01:00
|
|
|
################################################################################
|
2025-02-16 12:41:59 +01:00
|
|
|
.PHONY: loc
|
|
|
|
loc:
|
|
|
|
@cloc --by-file --exclude-dir=${BUILD-DIR},doc,subprojects,test,utils,debian,obj-x86_64-linux-gnu,.github --exclude-lang=Markdown,"NAnt script",XML,"Bourne Again Shell",make,"Bourne Shell",Meson,YAML,XSLT .
|
|
|
|
|
|
|
|
.PHONY: loc-full
|
|
|
|
loc-full:
|
|
|
|
@cloc --by-file --exclude-dir=${BUILD-DIR},subprojects,debian,obj-x86_64-linux-gnu,.github .
|
|
|
|
|
|
|
|
.PHONY: black
|
|
|
|
black:
|
|
|
|
black --diff --color --line-length 120 --skip-string-normalization --extend-exclude="(subprojects|debian|.build)" .
|
|
|
|
|
|
|
|
# Coverage requirements:
|
|
|
|
# pip install coverage
|
|
|
|
.PHONY: coverage
|
|
|
|
coverage: stas
|
|
|
|
cd ${BUILD-DIR} && ./coverage.sh
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Debian (*.deb)
|
|
|
|
# Use "DEB_BUILD_OPTIONS=nocheck make deb" to skip unit testing.
|
|
|
|
# This requires: sudo apt install -y debhelper dh-python
|
|
|
|
ifeq (deb,$(strip $(MAKECMDGOALS)))
|
|
|
|
ifneq (SUCCESS,$(shell dpkg -s debhelper dh-python > /dev/null 2>&1 && echo "SUCCESS" || echo "FAIL"))
|
|
|
|
$(error Missing packages. Run -> "sudo apt install -y debhelper dh-python")
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: deb
|
|
|
|
deb: ${BUILD-DIR}
|
|
|
|
mkdir -p ${DEB-PKG-DIR}
|
|
|
|
dpkg-buildpackage -us -uc
|
|
|
|
@mv ../nvme-stas_*.deb ${DEB-PKG-DIR}
|
|
|
|
@mv ../nvme-stas_*.buildinfo ${DEB-PKG-DIR}
|
|
|
|
@mv ../nvme-stas_*.changes ${DEB-PKG-DIR}
|
|
|
|
@mv ../nvme-stas_*.dsc ${DEB-PKG-DIR}
|
|
|
|
@mv ../nvme-stas_*.tar.gz ${DEB-PKG-DIR}
|
|
|
|
@echo "======================================================="
|
|
|
|
@echo "Debian packages located in: ${DEB-PKG-DIR}/"
|
|
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# RedHat (*.rpm)
|
|
|
|
${BUILD-DIR}/nvme-stas.spec: ${BUILD-DIR} nvme-stas.spec.in
|
|
|
|
meson --wrap-mode=nodownload --reconfigure ${BUILD-DIR}
|
|
|
|
|
|
|
|
${RPM-BUILDROOT-DIR}: ${BUILD-DIR}/nvme-stas.spec
|
|
|
|
rpmbuild -ba $< --build-in-place --clean --nocheck --define "_topdir $(abspath ${BUILD-DIR}/rpmbuild)"
|
|
|
|
@echo "======================================================="
|
|
|
|
@echo "RPM packages located in: ${RPM-BUILDROOT-DIR}/"
|
|
|
|
|
|
|
|
.PHONY: rpm
|
|
|
|
rpm: ${RPM-BUILDROOT-DIR}
|