| :<<"::WINDOWS_ONLY" | |
| @echo off | |
| :: Copyright 2023 The Pigweed Authors | |
| :: | |
| :: Licensed under the Apache License, Version 2.0 (the "License"); you may not | |
| :: use this file except in compliance with the License. You may obtain a copy of | |
| :: the License at | |
| :: | |
| :: https://www.apache.org/licenses/LICENSE-2.0 | |
| :: | |
| :: Unless required by applicable law or agreed to in writing, software | |
| :: distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |
| :: WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |
| :: License for the specific language governing permissions and limitations under | |
| :: the License. | |
| ::WINDOWS_ONLY | |
| :; echo "ERROR: Attempting to run Windows .bat from a Unix/POSIX shell!" | |
| :; echo "Instead, run the following command." | |
| :; echo "" | |
| :; echo " source ./activate.sh" | |
| :; echo "" | |
| :<<"::WINDOWS_ONLY" | |
| :: The bootstrap.bat must be run initially to install all required programs. | |
| :: After that, use activate.bat to enter the environment in a shell. | |
| :: ~dp0 is the batchism for the directory in which a .bat file resides. | |
| set "KUDZU_ROOT=%~dp0." | |
| :: Allow forcing a specific Python version through the environment variable | |
| :: PW_BOOTSTRAP_PYTHON. Otherwise, use the system Python if one exists. | |
| if not "%PW_BOOTSTRAP_PYTHON%" == "" ( | |
| set "python=%PW_BOOTSTRAP_PYTHON%" | |
| goto find_environment_root | |
| ) | |
| :: Detect python installation. | |
| where python >NUL 2>&1 | |
| if %ERRORLEVEL% EQU 0 ( | |
| set "python=python" | |
| goto find_environment_root | |
| ) | |
| echo. | |
| echo Error: no system Python present | |
| echo. | |
| echo Pigweed's bootstrap process requires a local system Python. | |
| echo Please install Python on your system, add it to your PATH | |
| echo and re-try running bootstrap. | |
| goto finish | |
| :find_environment_root | |
| set "PW_PROJECT_ROOT=%KUDZU_ROOT%" | |
| set "PW_ROOT=%KUDZU_ROOT%\third_party\pigweed" | |
| :: Set your project's banner and color. | |
| set "PW_BRANDING_BANNER=%KUDZU_ROOT%\banner.txt" | |
| set "PW_BRANDING_BANNER_COLOR=cyan" | |
| :: PW_ENVIRONMENT_ROOT allows developers to specify where the environment should | |
| :: be installed. _PW_ACTUAL_ENVIRONMENT_ROOT is where Pigweed keeps that | |
| :: information. This separation allows Pigweed to assume PW_ENVIRONMENT_ROOT | |
| :: came from the developer and not from a previous bootstrap possibly from | |
| :: another workspace. | |
| :: Not prefixing environment with "." since that doesn't hide it anyway. | |
| if "%PW_ENVIRONMENT_ROOT%"=="" ( | |
| :: Set the environment directory location to the root of this repo. | |
| set "_PW_ACTUAL_ENVIRONMENT_ROOT=%KUDZU_ROOT%\environment" | |
| ) else ( | |
| :: Set environment where the user specified. | |
| set "_PW_ACTUAL_ENVIRONMENT_ROOT=%PW_ENVIRONMENT_ROOT%" | |
| ) | |
| set "shell_file=%_PW_ACTUAL_ENVIRONMENT_ROOT%\activate.bat" | |
| if not exist "%shell_file%" ( | |
| echo Updating git submodules | |
| git submodule update --init | |
| ) | |
| set "_tinyusb_license=%~dp0.\third_party\pico-sdk\lib\tinyusb\LICENSE" | |
| if not exist "%_tinyusb_license%" ( | |
| cd third_party\pico-sdk | |
| git submodule update --init lib\tinyusb | |
| cd .. | |
| cd .. | |
| ) | |
| set "_pw_start_script=%PW_ROOT%\pw_env_setup\py\pw_env_setup\windows_env_start.py" | |
| :: If PW_SKIP_BOOTSTRAP is set, only run the activation stage instead of the | |
| :: complete env_setup. | |
| if not "%PW_SKIP_BOOTSTRAP%" == "" goto skip_bootstrap | |
| :: Without the trailing slash in %PW_ROOT%/, batch combines that token with | |
| :: the --shell-file argument. | |
| call "%python%" "%PW_ROOT%\pw_env_setup\py\pw_env_setup\env_setup.py" ^ | |
| --pw-root "%PW_ROOT%" ^ | |
| --shell-file "%shell_file%" ^ | |
| --install-dir "%_PW_ACTUAL_ENVIRONMENT_ROOT%" ^ | |
| --config-file "%KUDZU_ROOT%\pigweed.json" ^ | |
| --project-root "%PW_PROJECT_ROOT%" | |
| goto activate_shell | |
| :skip_bootstrap | |
| if exist "%shell_file%" ( | |
| call "%python%" "%_pw_start_script%" | |
| ) else ( | |
| call "%python%" "%_pw_start_script%" --no-shell-file | |
| goto finish | |
| ) | |
| :activate_shell | |
| call "%shell_file%" | |
| :: Add user-defined initial setup here. | |
| :finish | |
| ::WINDOWS_ONLY | |