summaryrefslogtreecommitdiff
path: root/makext.mk
diff options
context:
space:
mode:
Diffstat (limited to 'makext.mk')
-rw-r--r--makext.mk46
1 files changed, 46 insertions, 0 deletions
diff --git a/makext.mk b/makext.mk
new file mode 100644
index 0000000..bbfa148
--- /dev/null
+++ b/makext.mk
@@ -0,0 +1,46 @@
+# Makext is a collection of useful extensions for Makefiles, aimed at
+# simplifying and enhancing the functionality of Make-based projects. These
+# extensions provide additional features and convenience functions to
+# improve the build process, manage dependencies, and streamline common
+# tasks.
+#
+# Visit the GitHub repository at https://github.com/mitjafelicijan/makext
+# to learn more and contribute to the project.
+#
+# `makext` was written by Mitja Felicijan and is released under the BSD
+# two-clause license, see the LICENSE file for more information.
+
+# Load environmental files from `MEX_ENVIRONMENT`. By default GNU make
+# loads what is already in `env`. This extends it to other files.
+ifdef MEX_ENVIRONMENT
+TEMP_ENV_FILES=$(shell echo $(MEX_ENVIRONMENT) | tr ',' ' ')
+$(foreach file,$(TEMP_ENV_FILES),$(eval include $(file)))
+endif
+
+# Help extension that lists all the targets with descriptions
+# and adds description and license information if data provided.
+.PHONY: .help
+.help:
+ifdef MEX_DESCRIPTION
+ @printf "%s\n\n" $(MEX_DESCRIPTION) | fmt
+endif
+ @echo "Targets:"
+ @grep -vE '^[[:space:]]' $(MAKEFILE_LIST) | grep -E '^.*:.* #' | sed -E 's/(.*):(.*):.*#(.*)/ \2###\3/' | column -t -s '###'
+ifdef MEX_LICENSE
+ @printf "\n%s" $(MEX_LICENSE) | fmt
+endif
+
+# Checks `MEX_ASSURE` variable if all the programs declared actually
+# exist on a machine. If not this exists make with error.
+.PHONY: .assure
+.assure:
+ifndef MEX_ASSURE
+ @printf "Variable MEX_ASSURE is not defined. Can not check for programs.\n"
+else
+ @for prog in $(shell echo $(MEX_ASSURE)); do \
+ if ! which $$prog > /dev/null; then \
+ echo "Error: '$$prog' not found on this machine."; \
+ exit 1; \
+ fi; \
+ done
+endif