Use all-uppercase toolchain_env_var names.

Accepts previous case for backwards compatibility.

Fixes #728.
This commit is contained in:
Adam Greig 2022-11-13 00:14:33 +00:00 committed by Catherine
parent db24a14b57
commit af7c11441d
6 changed files with 49 additions and 55 deletions

View file

@ -69,13 +69,20 @@ class Platform(ResourceManager, metaclass=ABCMeta):
yield filename
@property
def _deprecated_toolchain_env_var(self):
return f"NMIGEN_ENV_{tool_env_var(self.toolchain)}"
def _deprecated_toolchain_env_vars(self):
return (
f"NMIGEN_ENV_{self.toolchain}",
f"AMARANTH_ENV_{self.toolchain}",
)
@property
def _toolchain_env_var(self):
return f"AMARANTH_ENV_{tool_env_var(self.toolchain)}"
@property
def _all_toolchain_env_vars(self):
return self._deprecated_toolchain_env_vars + (self._toolchain_env_var,)
def build(self, elaboratable, name="top",
build_dir="build", do_build=True,
program_opts=None, do_program=False,
@ -92,8 +99,8 @@ class Platform(ResourceManager, metaclass=ABCMeta):
# may fail.
# This is OK because even if `require_tool` succeeds, the toolchain might be broken anyway.
# The check only serves to catch common errors earlier.
if do_build and (self._deprecated_toolchain_env_var not in os.environ and
self._toolchain_env_var not in os.environ):
got_env_var = any(v in os.environ for v in self._all_toolchain_env_vars)
if do_build and not got_env_var:
for tool in self.required_tools:
require_tool(tool)
@ -108,8 +115,7 @@ class Platform(ResourceManager, metaclass=ABCMeta):
self.toolchain_program(products, name, **(program_opts or {}))
def has_required_tools(self):
if (self._deprecated_toolchain_env_var in os.environ or
self._toolchain_env_var in os.environ):
if any(v in os.environ for v in self._all_toolchain_env_vars):
return True
return all(has_tool(name) for name in self.required_tools)
@ -275,15 +281,17 @@ class TemplatedPlatform(Platform):
"build_{{name}}.sh": """
# {{autogenerated}}
set -e{{verbose("x")}}
[ -n "${{platform._deprecated_toolchain_env_var}}" ] && . "${{platform._deprecated_toolchain_env_var}}"
[ -n "${{platform._toolchain_env_var}}" ] && . "${{platform._toolchain_env_var}}"
{% for var in platform._all_toolchain_env_vars %}
[ -n "${{var}}" ] && . "${{var}}"
{% endfor %}
{{emit_commands("sh")}}
""",
"build_{{name}}.bat": """
@rem {{autogenerated}}
{{quiet("@echo off")}}
if defined {{platform._deprecated_toolchain_env_var}} call %{{platform._deprecated_toolchain_env_var}}%
if defined {{platform._toolchain_env_var}} call %{{platform._toolchain_env_var}}%
{% for var in platform._all_toolchain_env_vars %}
if defined {{var}} call %{{var}}%
{% endfor %}
{{emit_commands("bat")}}
""",
}

View file

@ -84,16 +84,13 @@ class IntelPlatform(TemplatedPlatform):
**TemplatedPlatform.build_script_templates,
"build_{{name}}.sh": r"""
# {{autogenerated}}
if [ -n "${{platform._deprecated_toolchain_env_var}}" ]; then
QUARTUS_ROOTDIR=$(dirname $(dirname "${{platform._deprecated_toolchain_env_var}}"))
{% for var in platform._all_toolchain_env_vars %}
if [ -n "${{var}}" ]; then
QUARTUS_ROOTDIR=$(dirname $(dirname "${{var}}"))
# Quartus' qenv.sh does not work with `set -e`.
. "${{platform._deprecated_toolchain_env_var}}"
fi
if [ -n "${{platform._toolchain_env_var}}" ]; then
QUARTUS_ROOTDIR=$(dirname $(dirname "${{platform._toolchain_env_var}}"))
# Quartus' qenv.sh does not work with `set -e`.
. "${{platform._toolchain_env_var}}"
. "${{var}}"
fi
{% endfor %}
set -e{{verbose("x")}}
{{emit_commands("sh")}}
""",

View file

@ -189,14 +189,12 @@ class LatticeECP5Platform(TemplatedPlatform):
# {{autogenerated}}
set -e{{verbose("x")}}
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
if [ -n "${{platform._deprecated_toolchain_env_var}}" ]; then
bindir=$(dirname "${{platform._deprecated_toolchain_env_var}}")
. "${{platform._deprecated_toolchain_env_var}}"
fi
if [ -n "${{platform._toolchain_env_var}}" ]; then
bindir=$(dirname "${{platform._toolchain_env_var}}")
. "${{platform._toolchain_env_var}}"
{% for var in platform._all_toolchain_env_vars %}
if [ -n "${{var}}" ]; then
bindir=$(dirname "${{var}}")
. "${{var}}"
fi
{% endfor %}
{{emit_commands("sh")}}
""",
"{{name}}.v": r"""

View file

@ -180,31 +180,22 @@ class LatticeICE40Platform(TemplatedPlatform):
"build_{{name}}.sh": r"""
# {{autogenerated}}
set -e{{verbose("x")}}
if [ -n "${{platform._deprecated_toolchain_env_var}}" ]; then
{% for var in platform._all_toolchain_env_vars %}
if [ -n "${{var}}" ]; then
# LSE environment
export LD_LIBRARY_PATH=${{platform._deprecated_toolchain_env_var}}/LSE/bin/lin64:$LD_LIBRARY_PATH
export PATH=${{platform._deprecated_toolchain_env_var}}/LSE/bin/lin64:$PATH
export FOUNDRY=${{platform._deprecated_toolchain_env_var}}/LSE
export LD_LIBRARY_PATH=${{var}}/LSE/bin/lin64:$LD_LIBRARY_PATH
export PATH=${{var}}/LSE/bin/lin64:$PATH
export FOUNDRY=${{var}}/LSE
# Synplify environment
export LD_LIBRARY_PATH=${{platform._deprecated_toolchain_env_var}}/sbt_backend/bin/linux/opt/synpwrap:$LD_LIBRARY_PATH
export PATH=${{platform._deprecated_toolchain_env_var}}/sbt_backend/bin/linux/opt/synpwrap:$PATH
export SYNPLIFY_PATH=${{platform._deprecated_toolchain_env_var}}/synpbase
export LD_LIBRARY_PATH=${{var}}/sbt_backend/bin/linux/opt/synpwrap:$LD_LIBRARY_PATH
export PATH=${{var}}/sbt_backend/bin/linux/opt/synpwrap:$PATH
export SYNPLIFY_PATH=${{var}}/synpbase
# Common environment
export SBT_DIR=${{platform._deprecated_toolchain_env_var}}/sbt_backend
elif [ -n "${{platform._toolchain_env_var}}" ]; then
# LSE environment
export LD_LIBRARY_PATH=${{platform._toolchain_env_var}}/LSE/bin/lin64:$LD_LIBRARY_PATH
export PATH=${{platform._toolchain_env_var}}/LSE/bin/lin64:$PATH
export FOUNDRY=${{platform._toolchain_env_var}}/LSE
# Synplify environment
export LD_LIBRARY_PATH=${{platform._toolchain_env_var}}/sbt_backend/bin/linux/opt/synpwrap:$LD_LIBRARY_PATH
export PATH=${{platform._toolchain_env_var}}/sbt_backend/bin/linux/opt/synpwrap:$PATH
export SYNPLIFY_PATH=${{platform._toolchain_env_var}}/synpbase
# Common environment
export SBT_DIR=${{platform._toolchain_env_var}}/sbt_backend
export SBT_DIR=${{var}}/sbt_backend
else
echo "Variable ${{platform._toolchain_env_var}} must be set" >&2; exit 1
fi
{% endfor %}
{{emit_commands("sh")}}
""",
"{{name}}.v": r"""

View file

@ -55,14 +55,12 @@ class LatticeMachXO2Or3LPlatform(TemplatedPlatform):
# {{autogenerated}}
set -e{{verbose("x")}}
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
if [ -n "${{platform._deprecated_toolchain_env_var}}" ]; then
bindir=$(dirname "${{platform._deprecated_toolchain_env_var}}")
. "${{platform._deprecated_toolchain_env_var}}"
fi
if [ -n "${{platform._toolchain_env_var}}" ]; then
bindir=$(dirname "${{platform._toolchain_env_var}}")
. "${{platform._toolchain_env_var}}"
{% for var in platform._all_toolchain_env_vars %}
if [ -n "${{var}}" ]; then
bindir=$(dirname "${{var}}")
. "${{var}}"
fi
{% endfor %}
{{emit_commands("sh")}}
""",
"{{name}}.v": r"""

View file

@ -126,8 +126,9 @@ class XilinxPlatform(TemplatedPlatform):
# {{autogenerated}}
set -e{{verbose("x")}}
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
[ -n "${{platform._deprecated_toolchain_env_var}}" ] && . "${{platform._deprecated_toolchain_env_var}}"
[ -n "${{platform._toolchain_env_var}}" ] && . "${{platform._toolchain_env_var}}"
{% for var in platform._all_toolchain_env_vars %}
[ -n "${{var}}" ] && . "${{var}}"
{% endfor %}
{{emit_commands("sh")}}
""",
"{{name}}.v": r"""
@ -233,8 +234,9 @@ class XilinxPlatform(TemplatedPlatform):
# {{autogenerated}}
set -e{{verbose("x")}}
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
[ -n "${{platform._deprecated_toolchain_env_var}}" ] && . "${{platform._deprecated_toolchain_env_var}}"
[ -n "${{platform._toolchain_env_var}}" ] && . "${{platform._toolchain_env_var}}"
{% for var in platform._all_toolchain_env_vars %}
[ -n "${{var}}" ] && . "${{var}}"
{% endfor %}
{{emit_commands("sh")}}
""",
"{{name}}.v": r"""