Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Accept old mixed-case toolchain_env_var variable names #729

Merged
merged 1 commit into from Nov 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
28 changes: 18 additions & 10 deletions amaranth/build/plat.py
Expand Up @@ -69,13 +69,20 @@ def iter_files(self, *suffixes):
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,
Expand All @@ -92,8 +99,8 @@ def build(self, elaboratable, name="top",
# 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)

Expand All @@ -108,8 +115,7 @@ def build(self, elaboratable, name="top",
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)

Expand Down Expand Up @@ -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")}}
""",
}
Expand Down
13 changes: 5 additions & 8 deletions amaranth/vendor/intel.py
Expand Up @@ -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")}}
""",
Expand Down
12 changes: 5 additions & 7 deletions amaranth/vendor/lattice_ecp5.py
Expand Up @@ -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"""
Expand Down
29 changes: 10 additions & 19 deletions amaranth/vendor/lattice_ice40.py
Expand Up @@ -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"""
Expand Down
12 changes: 5 additions & 7 deletions amaranth/vendor/lattice_machxo_2_3l.py
Expand Up @@ -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"""
Expand Down
10 changes: 6 additions & 4 deletions amaranth/vendor/xilinx.py
Expand Up @@ -126,8 +126,9 @@ def _part(self):
# {{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"""
Expand Down Expand Up @@ -233,8 +234,9 @@ def _part(self):
# {{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"""
Expand Down