cfg-$(1) ?= $(defcfg-$(1))
-test-$(1)-$(NAME).cfg: $$(cfg-$(1)) FORCE
- @{ cat $$< $(TEST-EXTRA-CFG) ;} | \
- sed -e "s/@@NAME@@/$$(NAME)/g" \
- -e "s/@@ENV@@/$(1)/g" \
- -e "s!@@XTFDIR@@!$$(xtfdir)!g" \
- > $$@.tmp
+test-$(1)-$(NAME).cfg: $(ROOT)/build/mkcfg.py $$(cfg-$(1)) $(TEST-EXTRA-CFG) FORCE
+ @$(PYTHON) $$< $$@.tmp "$$(cfg-$(1))" "$(TEST-EXTRA-CFG)"
@$(call move-if-changed,$$@.tmp,$$@)
-include $$(link-$(1):%.lds=%.d)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+Construct an xl configuration file for a test (from various fragments), and
+substitue variables appropriately.
+"""
+
+import sys, os
+
+# Usage: mkcfg.py $OUT $DEFAULT-CFG $EXTRA-CFG
+_, out, defcfg, extracfg = sys.argv
+
+# Evaluate environment and name from $OUT
+_, env, name = out.split('.')[0].split('-', 2)
+
+def expand(text):
+ """ Expand certain variables in text """
+ return (text
+ .replace("@@NAME@@", name)
+ .replace("@@ENV@@", env)
+ .replace("@@XTFDIR@@", os.environ["xtfdir"])
+ )
+
+config = open(defcfg).read()
+
+if extracfg:
+ config += "\n# Test Extra Configuration:\n"
+ config += open(extracfg).read()
+
+cfg = expand(config)
+
+open(out, "w").write(cfg)