summaryrefslogtreecommitdiffstats
path: root/config/makefiles/functions.mk
diff options
context:
space:
mode:
Diffstat (limited to 'config/makefiles/functions.mk')
-rw-r--r--config/makefiles/functions.mk41
1 files changed, 41 insertions, 0 deletions
diff --git a/config/makefiles/functions.mk b/config/makefiles/functions.mk
new file mode 100644
index 0000000000..65c9a6749f
--- /dev/null
+++ b/config/makefiles/functions.mk
@@ -0,0 +1,41 @@
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#
+# functions.mk
+#
+# Defines functions that are needed by various Makefiles throughout the build
+# system, which are needed before config.mk can be included.
+#
+
+# Define an include-at-most-once flag
+ifdef INCLUDED_FUNCTIONS_MK
+$(error Do not include functions.mk twice!)
+endif
+INCLUDED_FUNCTIONS_MK = 1
+
+core_abspath = $(error core_abspath is unsupported, use $$(abspath) instead)
+core_realpath = $(error core_realpath is unsupported)
+
+core_winabspath = $(error core_winabspath is unsupported)
+
+# Run a named Python build action. The first argument is the name of the build
+# action. The second argument are the arguments to pass to the action (space
+# delimited arguments). e.g.
+#
+# libs::
+# $(call py_action,purge_manifests,_build_manifests/purge/foo.manifest)
+#
+# The first argument can optionally contain the name of the file being created
+# or processed. e.g.
+# libs::
+# $(call py_action,purge_manifests foo.manifest,_build_manifests/purge/foo.manifest)
+# This optional name will be displayed in build profiles.
+define py_action
+$(call BUILDSTATUS,START_$(firstword $(1)) $(or $(word 2,$(1)),$(2)))
+$(if $(3),cd $(3) && )$(PYTHON3) -m mozbuild.action.$(firstword $(1)) $(2)
+$(call BUILDSTATUS,END_$(firstword $(1)) $(or $(word 2,$(1)),$(2)))
+
+endef