From c1666adf30666b8a07839253361602e9e0e10344 Mon Sep 17 00:00:00 2001 From: Catherine Date: Sat, 18 May 2024 01:47:57 +0100 Subject: [PATCH] build.plat: allow spaces in environment variables on Windows. Specifically, allow spaces in: - set AMARANTH_ENV_=c:\program files\... - set =c:\program files\... --- amaranth/build/plat.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/amaranth/build/plat.py b/amaranth/build/plat.py index 508c9ec..fade608 100644 --- a/amaranth/build/plat.py +++ b/amaranth/build/plat.py @@ -184,7 +184,8 @@ class TemplatedPlatform(Platform): "build_{{name}}.bat": """ @rem {{autogenerated}} {{quiet("@echo off")}} - if defined {{platform._toolchain_env_var}} call %{{platform._toolchain_env_var}}% + SetLocal EnableDelayedExpansion + if defined {{platform._toolchain_env_var}} call "%{{platform._toolchain_env_var}}%" {{emit_commands("bat")}} """, } @@ -283,8 +284,8 @@ class TemplatedPlatform(Platform): template = ": ${{{env_var}:={name}}}" elif syntax == "bat": template = \ - "if [%{env_var}%] equ [\"\"] set {env_var}=\n" \ - "if [%{env_var}%] equ [] set {env_var}={name}" + "if [!{env_var}!] equ [\"\"] set {env_var}=\n" \ + "if [!{env_var}!] equ [] set {env_var}={name}" else: assert False commands.append(template.format(env_var=env_var, name=name)) @@ -308,7 +309,7 @@ class TemplatedPlatform(Platform): if context.parent["syntax"] == "sh": return f"\"${env_var}\"" elif context.parent["syntax"] == "bat": - return f"%{env_var}%" + return f"\"%{env_var}%\"" else: assert False