1@echo off 2REM $Id: envwin.cmd 3113 2017-10-29 17:16:03Z bird $ 3REM REM @file 4REM Environment setup script. 5REM 6 7REM 8REM Copyright (c) 2005-2010 knut st. osmundsen <bird-kBuild-spamx@anduin.net> 9REM 10REM This file is part of kBuild. 11REM 12REM kBuild is free software; you can redistribute it and/or modify 13REM it under the terms of the GNU General Public License as published by 14REM the Free Software Foundation; either version 2 of the License, or 15REM (at your option) any later version. 16REM 17REM kBuild is distributed in the hope that it will be useful, 18REM but WITHOUT ANY WARRANTY; without even the implied warranty of 19REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20REM GNU General Public License for more details. 21REM 22REM You should have received a copy of the GNU General Public License 23REM along with kBuild; if not, write to the Free Software 24REM Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25REM 26 27REM 28REM Globals 29REM 30set _KBUILD_CURDIR=%CD% 31for /f "tokens=*" %%d in ('cd') do set _KBUILD_CURDIR=%%d 32 33set _KBUILD_PATH=%KBUILD_PATH% 34set _KBUILD_BIN_PATH=%KBUILD_BIN_PATH% 35set _KBUILD_TYPE=%KBUILD_TYPE% 36set _KBUILD_TARGET=%KBUILD_TARGET% 37set _KBUILD_TARGET_ARCH=%KBUILD_TARGET_ARCH% 38set _KBUILD_TARGET_CPU=%KBUILD_TARGET_CPU% 39set _KBUILD_HOST=%KBUILD_HOST% 40set _KBUILD_HOST_ARCH=%KBUILD_HOST_ARCH% 41set _KBUILD_HOST_CPU=%KBUILD_HOST_CPU% 42 43set _KBUILD_OVERRIDE_TYPE=0 44set _KBUILD_OVERRIDE_TARGET=0 45set _KBUILD_OVERRIDE_TARGET_ARCH=0 46 47REM 48REM Parse the arguments. 49REM 50REM Note: The 0 argument must be saved as it is also shifted. 51REM 52set _KBUILD_SELF=%0 53set _KBUILD_OPT_FULL=0 54set _KBUILD_OPT_LEGACY=0 55set _KBUILD_OPT_VAR= 56set _KBUILD_OPT_VALUE_ONLY=0 57set _KBUILD_SHOW_VAR_PREFIX= 58set _KBUILD_OPT_DBG=1 59set _KBUILD_OPT_OVERRIDE_ALL=0 60 61:argument_loop 62if ".%1" == ".-h" goto do_help 63if ".%1" == "./h" goto do_help 64if ".%1" == "./H" goto do_help 65if ".%1" == ".-h" goto do_help 66if ".%1" == ".-help" goto do_help 67if ".%1" == ".--help" goto do_help 68 69if ".%1" == ".--win" goto want_win 70if ".%1" == ".-win" goto want_win 71if ".%1" == ".--win32" goto want_win32_bit 72if ".%1" == ".-win32" goto want_win32_bit 73if ".%1" == ".-win64" goto want_win64_bit 74if ".%1" == ".--win64" goto want_win64_bit 75if ".%1" == ".--nt" goto want_nt 76if ".%1" == ".-nt" goto want_nt 77if ".%1" == ".--nt32" goto want_nt32_bit 78if ".%1" == ".-nt32" goto want_nt32_bit 79if ".%1" == ".--nt64" goto want_nt64_bit 80if ".%1" == ".-nt64" goto want_nt64_bit 81 82if ".%1" == ".--release" goto want_release 83if ".%1" == ".--profile" goto want_profile 84if ".%1" == ".--debug" goto want_debug 85 86if ".%1" == ".--full" goto opt_full 87if ".%1" == ".--normal" goto opt_normal 88if ".%1" == ".--legacy" goto opt_legacy 89if ".%1" == ".--no-legacy" goto opt_no_legacy 90if ".%1" == ".--debug-script" goto opt_debug_script 91if ".%1" == ".--no-debug-script" goto opt_no_debug_script 92if ".%1" == ".--var" goto opt_var 93if ".%1" == ".--value-only" goto opt_value_only 94if ".%1" == ".--name-and-value" goto opt_name_and_value 95if ".%1" == ".--set" goto opt_set 96if ".%1" == ".--no-set" goto opt_no_set 97 98goto done_arguments 99 100:want_win 101shift 102set _KBUILD_TARGET=win 103set _KBUILD_OVERRIDE_TARGET=1 104goto argument_loop 105 106:want_win32_bit 107shift 108set _KBUILD_TARGET=win 109set _KBUILD_TARGET_ARCH=x86 110set _KBUILD_OVERRIDE_TARGET=1 111set _KBUILD_OVERRIDE_TARGET_ARCH=1 112goto argument_loop 113 114:want_win64_bit 115shift 116set _KBUILD_TARGET=win 117set _KBUILD_TARGET_ARCH=amd64 118set _KBUILD_OVERRIDE_TARGET=1 119set _KBUILD_OVERRIDE_TARGET_ARCH=1 120goto argument_loop 121 122:want_nt 123shift 124set _KBUILD_TARGET=nt 125set _KBUILD_OVERRIDE_TARGET=1 126goto argument_loop 127 128:want_nt32_bit 129shift 130set _KBUILD_TARGET=nt 131set _KBUILD_TARGET_ARCH=x86 132set _KBUILD_OVERRIDE_TARGET=1 133set _KBUILD_OVERRIDE_TARGET_ARCH=1 134goto argument_loop 135 136:want_nt64_bit 137shift 138set _KBUILD_TARGET=nt 139set _KBUILD_TARGET_ARCH=amd64 140set _KBUILD_OVERRIDE_TARGET=1 141set _KBUILD_OVERRIDE_TARGET_ARCH=1 142goto argument_loop 143 144:want_release 145shift 146set _KBUILD_TYPE=release 147set _KBUILD_OVERRIDE_TYPE=1 148goto argument_loop 149 150:want_profile 151shift 152set _KBUILD_TYPE=profile 153set _KBUILD_OVERRIDE_TYPE=1 154goto argument_loop 155 156:want_debug 157shift 158set _KBUILD_TYPE=debug 159set _KBUILD_OVERRIDE_TYPE=1 160goto argument_loop 161 162:opt_full 163shift 164set _KBUILD_OPT_FULL=1 165goto argument_loop 166 167:opt_normal 168shift 169set _KBUILD_OPT_FULL=0 170goto argument_loop 171 172:opt_legacy 173shift 174set _KBUILD_OPT_LEGACY=1 175goto argument_loop 176 177:opt_no_legacy 178shift 179set _KBUILD_OPT_LEGACY=0 180goto argument_loop 181 182:opt_debug_script 183shift 184set _KBUILD_OPT_DBG=1 185goto argument_loop 186 187:opt_no_debug_script 188shift 189set _KBUILD_OPT_DBG=0 190goto argument_loop 191 192:opt_var 193shift 194if ".%1" == "." echo syntax error: --var is missing it's variable name. 195if ".%1" == "." goto failure 196set _KBUILD_OPT_VAR=%_KBUILD_OPT_VAR% %1 197shift 198goto argument_loop 199 200:opt_value_only 201shift 202set _KBUILD_OPT_VALUE_ONLY=1 203goto argument_loop 204 205:opt_name_and_value 206shift 207set _KBUILD_OPT_VALUE_ONLY=0 208goto argument_loop 209 210:opt_set 211shift 212set _KBUILD_SHOW_VAR_PREFIX=SET %_KBUILD_NON_EXISTING_VAR% 213goto argument_loop 214 215:opt_no_set 216shift 217set _KBUILD_SHOW_VAR_PREFIX= 218goto argument_loop 219 220 221REM # 222REM # Syntax 223REM # 224:do_help 225echo kBuild environment setup script for Windows NT. 226echo Syntax: envwin.cmd [options] [command to be executed] 227echo or: envwin.cmd [options] --var varname 228echo . 229echo Options: 230echo --win 231echo Force windows target and host platform. 232echo --win32 233echo Force x86 32-bit windows target platform. 234echo --win64 235echo Force AMD64 64-bit windows target platform. 236echo --nt 237echo Force NT target and host platform. 238echo --nt32 239echo Force x86 32-bit NT target platform. 240echo --nt64 241echo Force AMD64 64-bit NT target platform. 242echo --debug, --release, --profile 243echo Alternative way of specifying KBUILD_TYPE. 244echo --full, --normal 245echo Controls the variable set. Default: --normal 246echo --legacy, --no-legacy 247echo Include legacy variables in result. Default: --legacy 248echo --value-only, --name-and-value 249echo Controls what the result of a --var query. Default: --name-and-value 250echo --set, --no-set 251echo Whether to prefix the variable output with 'SET' or not. 252echo Default: --no-set 253 254goto end 255 256:done_arguments 257 258REM 259REM Convert legacy variable names. 260REM 261if ".%_KBUILD_OPT_OVERRIDE_ALL%" == ".1" goto legacy_convertion_done 262 263set _KBUILD_VARS=KBUILD_HOST (%_KBUILD_HOST%) and BUILD_PLATFORM (%BUILD_PLATFORM%) 264if not ".%BUILD_PLATFORM%" == "." if not ".%_KBUILD_HOST%" == "." if ".%_KBUILD_HOST%" == ".%BUILD_PLATFORM%" goto legacy_mismatch 265if not ".%BUILD_PLATFORM%" == "." set _KBUILD_HOST=%BUILD_PLATFORM% 266 267set _KBUILD_VARS=KBUILD_HOST_ARCH (%_KBUILD_HOST_ARCH%) and BUILD_PLATFORM_ARCH (%BUILD_PLATFORM_ARCH%) 268if not ".%BUILD_PLATFORM_ARCH%" == "." if not ".%_KBUILD_HOST_ARCH%" == "." if ".%_KBUILD_HOST_ARCH%" == ".%BUILD_PLATFORM_ARCH%" goto legacy_mismatch 269if not ".%BUILD_PLATFORM_ARCH%" == "." set _KBUILD_HOST_ARCH=%BUILD_PLATFORM_ARCH% 270 271set _KBUILD_VARS=KBUILD_HOST_CPU (%_KBUILD_HOST_CPU%) and BUILD_PLATFORM_CPU (%BUILD_PLATFORM_CPU%) 272if not ".%BUILD_PLATFORM_CPU%" == "." if not ".%_KBUILD_HOST_CPU%" == "." if ".%_KBUILD_HOST_CPU%" == ".%BUILD_PLATFORM_CPU%" goto legacy_mismatch 273if not ".%BUILD_PLATFORM_CPU%" == "." set _KBUILD_HOST_CPU=%BUILD_PLATFORM_CPU% 274 275if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_target 276set _KBUILD_VARS=KBUILD_TARGET (%_KBUILD_TARGET%) and BUILD_TARGET (%BUILD_TARGET%) 277if not ".%BUILD_TARGET%" == "." if not ".%_KBUILD_TARGET%" == "." if ".%_KBUILD_TARGET%" == ".%BUILD_TARGET%" goto legacy_mismatch 278if not ".%BUILD_TARGET%" == "." set _KBUILD_TARGET=%BUILD_TARGET% 279:legacy_skip_target 280 281if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_target_arch 282set _KBUILD_VARS=KBUILD_TARGET_ARCH (%_KBUILD_TARGET_ARCH%) and BUILD_TARGET_ARCH (%BUILD_TARGET_ARCH%) 283if not ".%BUILD_TARGET_ARCH%" == "." if not ".%_KBUILD_TARGET_ARCH%" == "." if ".%_KBUILD_TARGET_ARCH%" == ".%BUILD_TARGET_ARCH%" goto legacy_mismatch 284if not ".%BUILD_TARGET_ARCH%" == "." set _KBUILD_TARGET_ARCH=%BUILD_TARGET_ARCH% 285:legacy_skip_target_arch 286 287if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_target_cpu 288set _KBUILD_VARS=KBUILD_TARGET_CPU (%_KBUILD_TARGET_CPU%) and BUILD_TARGET_CPU (%BUILD_TARGET_CPU%) 289if not ".%BUILD_TARGET_CPU%" == "." if not ".%_KBUILD_TARGET_CPU%" == "." if ".%_KBUILD_TARGET_CPU%" == ".%BUILD_TARGET_CPU%" goto legacy_mismatch 290if not ".%BUILD_TARGET_CPU%" == "." set _KBUILD_TARGET_CPU=%BUILD_TARGET_CPU% 291:legacy_skip_target_cpu 292 293if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_type 294set _KBUILD_VARS=KBUILD_TYPE (%_KBUILD_TYPE%) and BUILD_TYPE (%BUILD_TYPE%) 295if not ".%BUILD_TYPE%" == "." if not ".%_KBUILD_TYPE%" == "." if ".%_KBUILD_TYPE%" == ".%BUILD_TYPE%" goto legacy_mismatch 296if not ".%BUILD_TYPE%" == "." set _KBUILD_TYPE=%BUILD_TYPE% 297:legacy_skip_type 298 299set _KBUILD_VARS=KBUILD_PATH (%_KBUILD_PATH%) and PATH_KBUILD (%PATH_KBUILD%) 300if not ".%PATH_KBUILD%" == "." if not ".%_KBUILD_PATH%" == "." if ".%_KBUILD_PATH%" == ".%PATH_KBUILD%" goto legacy_mismatch 301if not ".%PATH_KBUILD%" == "." set _KBUILD_PATH=%PATH_KBUILD% 302goto legacy_convertion_done 303 304:legacy_mismatch 305echo error: %_KBUILD_VARS% disagree. 306goto failed 307 308:legacy_convertion_done 309 310 311REM 312REM Check for illegal target/platforms. 313REM 314:target_and_platform 315if "%_KBUILD_TARGET" == "win32" goto illegal_target 316if "%_KBUILD_TARGET" == "win64" goto illegal_target 317if "%_KBUILD_HOST" == "win32" goto illegal_host 318if "%_KBUILD_HOST" == "win64" goto illegal_host 319goto target_and_platform_ok 320 321:illegal_target 322echo error: KBUILD_TARGET=%KBUILD_TARGET% is no longer valid. 323echo Only 'win' and 'nt' are permitted for targeting microsoft windows. 324goto failed 325 326:illegal_host 327echo error: KBUILD_HOST=%KBUILD_HOST is no longer valid. 328echo Only 'win' and 'nt' are permitted for building on microsoft windows. 329goto failed 330 331:target_and_platform_ok 332 333REM 334REM Find kBuild. 335REM 336REM We'll try determin the location of this script first and use that 337REM as a starting point for guessing the kBuild directory. 338REM 339 340REM Check if set via KBUILD_PATH. 341if not ".%_KBUILD_PATH%" == "." if exist %_KBUILD_PATH%\footer.kmk goto found_kbuild 342 343REM Determin a correct self - by %0 344if exist "%_KBUILD_SELF%" goto found_self 345set _KBUILD_SELF=%_KBUILD_SELF%.cmd 346if exist "%_KBUILD_SELF%" goto found_self 347 348REM Determin a correct self - by the PATH 349REM This is very verbose because nested for loops didn't work out. 350for /f "tokens=1 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 351if exist "%_KBUILD_SELF%" goto found_self 352for /f "tokens=2 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 353if exist "%_KBUILD_SELF%" goto found_self 354for /f "tokens=3 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 355if exist "%_KBUILD_SELF%" goto found_self 356for /f "tokens=4 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 357if exist "%_KBUILD_SELF%" goto found_self 358for /f "tokens=5 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 359if exist "%_KBUILD_SELF%" goto found_self 360for /f "tokens=6 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 361if exist "%_KBUILD_SELF%" goto found_self 362for /f "tokens=7 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 363if exist "%_KBUILD_SELF%" goto found_self 364for /f "tokens=8 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 365if exist "%_KBUILD_SELF%" goto found_self 366for /f "tokens=9 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 367if exist "%_KBUILD_SELF%" goto found_self 368for /f "tokens=10 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 369if exist "%_KBUILD_SELF%" goto found_self 370for /f "tokens=11 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 371if exist "%_KBUILD_SELF%" goto found_self 372for /f "tokens=12 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 373if exist "%_KBUILD_SELF%" goto found_self 374for /f "tokens=13 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 375if exist "%_KBUILD_SELF%" goto found_self 376for /f "tokens=14 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 377if exist "%_KBUILD_SELF%" goto found_self 378for /f "tokens=15 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 379if exist "%_KBUILD_SELF%" goto found_self 380for /f "tokens=16 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 381if exist "%_KBUILD_SELF%" goto found_self 382for /f "tokens=17 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 383if exist "%_KBUILD_SELF%" goto found_self 384for /f "tokens=18 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 385if exist "%_KBUILD_SELF%" goto found_self 386for /f "tokens=19 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 387if exist "%_KBUILD_SELF%" goto found_self 388for /f "tokens=20 delims=;" %%d in ("%PATH%") do set _KBUILD_SELF=%%d\envwin.cmd 389if exist "%_KBUILD_SELF%" goto found_self 390goto try_by_pwd 391 392:found_self 393cd "%_KBUILD_SELF%\.." 394for /f "tokens=*" %%d in ('cd') do set _KBUILD_PATH=%%d 395cd "%_KBUILD_CURDIR%" 396if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 397 398REM Try relative to the current directory. 399:try_by_pwd 400if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 401set _KBUILD_PATH=%_KBUILD_CURDIR% 402if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 403set _KBUILD_PATH=%_KBUILD_CURDIR%\kBuild 404if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 405set _KBUILD_PATH=%_KBUILD_CURDIR%\..\kBuild 406if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 407set _KBUILD_PATH=%_KBUILD_CURDIR%\..\..\kBuild 408if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 409set _KBUILD_PATH=%_KBUILD_CURDIR%\..\..\..\kBuild 410if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 411set _KBUILD_PATH=%_KBUILD_CURDIR%\..\..\..\..\kBuild 412if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild 413echo kBuild: Can't find the kBuild directory! 414set CURDIR= 415goto failed 416 417:found_kbuild 418cd "%_KBUILD_PATH%" 419for /f "tokens=*" %%d in ('cd') do set _KBUILD_PATH=%%d 420cd "%_KBUILD_CURDIR%" 421if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_PATH=%_KBUILD_PATH% 422 423 424REM 425REM Type - release is the default. 426REM 427if not ".%_KBUILD_TYPE%" == "." goto have_type 428set _KBUILD_TYPE=release 429:have_type 430if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TYPE=%_KBUILD_TYPE% 431 432 433REM 434REM Host platform - windows 435REM 436if not ".%_KBUILD_HOST%" == "." goto have_host 437set _KBUILD_HOST=win 438if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_HOST=%_KBUILD_HOST% 439:have_host 440 441if not ".%_KBUILD_HOST_ARCH%" == "." goto have_host_arch 442REM try guess from _KBUILD_HOST_CPU 443if ".%KBUILD_HOST_CPU%" == ".i386" set _KBUILD_HOST_ARCH=x86 444if ".%KBUILD_HOST_CPU%" == ".i486" set _KBUILD_HOST_ARCH=x86 445if ".%KBUILD_HOST_CPU%" == ".i586" set _KBUILD_HOST_ARCH=x86 446if ".%KBUILD_HOST_CPU%" == ".i686" set _KBUILD_HOST_ARCH=x86 447if ".%KBUILD_HOST_CPU%" == ".i786" set _KBUILD_HOST_ARCH=x86 448if ".%KBUILD_HOST_CPU%" == ".i886" set _KBUILD_HOST_ARCH=x86 449if ".%KBUILD_HOST_CPU%" == ".i986" set _KBUILD_HOST_ARCH=x86 450if ".%KBUILD_HOST_CPU%" == ".k8" set _KBUILD_HOST_ARCH=amd64 451if ".%KBUILD_HOST_CPU%" == ".k9" set _KBUILD_HOST_ARCH=amd64 452if ".%KBUILD_HOST_CPU%" == ".k10" set _KBUILD_HOST_ARCH=amd64 453if not ".%_KBUILD_HOST_ARCH%" == "." goto have_host_arch 454REM try guess from PROCESSOR_ARCHITEW6432 and PROCESSOR_ARCHITECTURE 455set _KBUILD_TMP=%PROCESSOR_ARCHITECTURE% 456if not ".%PROCESSOR_ARCHITEW6432%" == "." set _KBUILD_TMP=%PROCESSOR_ARCHITEW6432% 457if "%_KBUILD_TMP%" == "x86" set _KBUILD_HOST_ARCH=x86 458if "%_KBUILD_TMP%" == "X86" set _KBUILD_HOST_ARCH=x86 459if "%_KBUILD_TMP%" == "amd64" set _KBUILD_HOST_ARCH=amd64 460if "%_KBUILD_TMP%" == "Amd64" set _KBUILD_HOST_ARCH=amd64 461if "%_KBUILD_TMP%" == "AMD64" set _KBUILD_HOST_ARCH=amd64 462if "%_KBUILD_TMP%" == "x64" set _KBUILD_HOST_ARCH=amd64 463if "%_KBUILD_TMP%" == "X64" set _KBUILD_HOST_ARCH=amd64 464if not ".%_KBUILD_HOST_ARCH%" == "." goto have_host_arch 465echo error: Cannot figure KBUILD_HOST_ARCH! 466goto failed 467:have_host_arch 468if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_HOST_ARCH=%_KBUILD_HOST_ARCH% 469 470if not ".%_KBUILD_HOST_CPU%" == "." goto have_host_cpu 471set _KBUILD_HOST_CPU=blend 472:have_host_cpu 473if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_HOST_CPU=%_KBUILD_HOST_CPU% 474 475REM 476REM The target platform. 477REM Defaults to the host when not specified. 478REM 479if not ".%_KBUILD_TARGET%" == "." goto have_target 480set _KBUILD_TARGET=%_KBUILD_HOST% 481:have_target 482if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TARGET=%_KBUILD_TARGET% 483 484if not ".%_KBUILD_TARGET_ARCH%" == "." goto have_target_arch 485set _KBUILD_TARGET_ARCH=%_KBUILD_HOST_ARCH% 486:have_target_arch 487if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH% 488 489if not ".%_KBUILD_TARGET_CPU%" == "." goto have_target_cpu 490if ".%_KBUILD_TARGET_ARCH%" == ".%_KBUILD_HOST_ARCH%" set _KBUILD_TARGET_CPU=%_KBUILD_HOST_CPU% 491if not ".%_KBUILD_TARGET_CPU%" == "." goto have_target_cpu 492set _KBUILD_TARGET_CPU=%_KBUILD_HOST_CPU% 493:have_target_cpu 494if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TARGET_CPU=%_KBUILD_TARGET_CPU% 495 496REM 497REM Calc KBUILD_BIN_PATH and the new PATH value. 498REM 499if not ".%_KBUILD_BIN_PATH%" == "." goto have_kbuild_bin_path 500set _KBUILD_BIN_PATH=%_KBUILD_PATH%\bin\win.%_KBUILD_HOST_ARCH% 501:have_kbuild_bin_path 502if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_BIN_PATH=%_KBUILD_BIN_PATH% 503 504set _KBUILD_NEW_PATH=%_KBUILD_BIN_PATH%;%PATH% 505if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_NEW_PATH=%_KBUILD_NEW_PATH% 506 507REM 508REM Sanity check. 509REM 510if not exist "%_KBUILD_BIN_PATH%" goto missing_bin_path 511if not exist "%_KBUILD_BIN_PATH%" goto done_chekcing_for_tools 512set _KBUILD_TMP=kmk kDepPre kDepIDB kmk_append kmk_ash kmk_cat kmk_cp kmk_echo kmk_install kmk_ln kmk_mkdir kmk_mv kmk_rm kmk_rmdir kmk_sed 513for %%i in ( %_KBUILD_TMP% ) do if not exist "%_KBUILD_BIN_PATH%\%%i.exe" echo warning: The %%i program doesn't exist for this platform. (%_KBUILD_BIN_PATH%\%%i.exe)" 514goto done_chekcing_for_tools 515 516:missing_bin_path 517echo warning: The bin directory for this platform doesn't exist. (%_KBUILD_BIN_PATH%) 518:done_chekcing_for_tools 519 520REM 521REM The environment is in place, now take the requested action. 522REM 523if ".%_KBUILD_OPT_VAR%" == "." goto exec_or_setup_env 524goto show_variable 525 526REM 527REM Show a set of variables. 528REM 529REM Note: 4nt doesn't grok the setlocal delayed expansion option. 530REM So, we'll have to identify which shell we're running. 531REM 532:show_variable 533for %%i in ( %_KBUILD_OPT_VAR% ) do if "%%i" == "all" goto show_all_variables 534 535if not ".%_4VER%" == "." goto 4nt 536setlocal ENABLEDELAYEDEXPANSION 537if errorlevel 1 goto no_delay_expansion 538 539for %%i in ( %_KBUILD_OPT_VAR% ) do ( 540 set _KBUILD_VAR=%%i 541 set _KBUILD_TMP= 542 if "%%i" == "KBUILD_PATH" set _KBUILD_TMP=%_KBUILD_PATH% 543 if "%%i" == "KBUILD_BIN_PATH" set _KBUILD_TMP=%_KBUILD_BIN_PATH% 544 if "%%i" == "KBUILD_TYPE" set _KBUILD_TMP=%_KBUILD_TYPE% 545 if "%%i" == "KBUILD_HOST" set _KBUILD_TMP=%_KBUILD_HOST% 546 if "%%i" == "KBUILD_HOST_ARCH" set _KBUILD_TMP=%_KBUILD_HOST_ARCH% 547 if "%%i" == "KBUILD_HOST_CPU" set _KBUILD_TMP=%_KBUILD_HOST_CPU% 548 if "%%i" == "KBUILD_TARGET" set _KBUILD_TMP=%_KBUILD_TARGET% 549 if "%%i" == "KBUILD_TARGET_ARCH" set _KBUILD_TMP=%_KBUILD_TARGET_ARCH% 550 if "%%i" == "KBUILD_TARGET_CPU" set _KBUILD_TMP=%_KBUILD_TARGET_CPU% 551 if ".!_KBUILD_TMP!" == "." goto varible_not_found 552 if not ".%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo %_KBUILD_SHOW_VAR_PREFIX%%%i=!_KBUILD_TMP! 553 if ".%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo !_KBUILD_TMP! 554) 555 556endlocal 557goto end 558 559:no_delay_expansion 560echo error: Unable to enable delayed expansion in the shell. 561 562:4nt 563for %%i in ( %_KBUILD_OPT_VAR% ) do ( 564 set _KBUILD_VAR=%%i 565 set _KBUILD_TMP= 566 if "%%i" == "KBUILD_PATH" set _KBUILD_TMP=%_KBUILD_PATH% 567 if "%%i" == "KBUILD_BIN_PATH" set _KBUILD_TMP=%_KBUILD_BIN_PATH% 568 if "%%i" == "KBUILD_TYPE" set _KBUILD_TMP=%_KBUILD_TYPE% 569 if "%%i" == "KBUILD_HOST" set _KBUILD_TMP=%_KBUILD_HOST% 570 if "%%i" == "KBUILD_HOST_ARCH" set _KBUILD_TMP=%_KBUILD_HOST_ARCH% 571 if "%%i" == "KBUILD_HOST_CPU" set _KBUILD_TMP=%_KBUILD_HOST_CPU% 572 if "%%i" == "KBUILD_TARGET" set _KBUILD_TMP=%_KBUILD_TARGET% 573 if "%%i" == "KBUILD_TARGET_ARCH" set _KBUILD_TMP=%_KBUILD_TARGET_ARCH% 574 if "%%i" == "KBUILD_TARGET_CPU" set _KBUILD_TMP=%_KBUILD_TARGET_CPU% 575 if ".%_KBUILD_TMP%" == "." goto varible_not_found 576 if not ".%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo %_KBUILD_SHOW_VAR_PREFIX%%i=%_KBUILD_TMP% 577 if ".%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo %_KBUILD_TMP% 578) 579goto end 580 581:varible_not_found 582echo error: Unknown variable %_KBUILD_VAR% specified in --var request. 583goto failed 584 585:show_all_variables 586echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_PATH=%_KBUILD_PATH% 587echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_BIN_PATH=%_KBUILD_BIN_PATH% 588echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TYPE=%_KBUILD_TYPE% 589echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_HOST=%_KBUILD_HOST% 590echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_HOST_ARCH=%_KBUILD_HOST_ARCH% 591echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_HOST_CPU=%_KBUILD_HOST_CPU% 592echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TARGET=%_KBUILD_TARGET% 593echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH% 594echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TARGET_CPU=%_KBUILD_TARGET_CPU% 595goto end 596 597REM 598REM Setup environment for the current shell or execute a command. 599REM 600REM Note: We use setlocal if we're going to execute a command as we 601REM don't want the environment of the invoking shell to be changed. 602REM 603:exec_or_setup_env 604if not ".%1" == "." setlocal 605 606REM The PATH is always set. 607set PATH=%_KBUILD_NEW_PATH% 608 609REM Clear up anything that should be overridden. 610if not "%_KBUILD_OPT_OVERRIDE_ALL%" == "1" goto skip_override_all 611set KBUILD_TYPE= 612set KBUILD_HOST= 613set KBUILD_HOST_ARCH= 614set KBUILD_HOST_CPU= 615set KBUILD_TARGET= 616set KBUILD_TARGET_ARCH= 617set KBUILD_TARGET_CPU= 618set KBUILD_PATH= 619set KBUILD_BIN_PATH= 620if not "%_KBUILD_OPT_LEGACY%" == "1" goto skip_override_all 621set BUILD_TYPE= 622set BUILD_PLATFORM= 623set BUILD_PLATFORM_ARCH= 624set BUILD_PLATFORM_CPU= 625set BUILD_TARGET= 626set BUILD_TARGET_ARCH= 627set BUILD_TARGET_CPU= 628set PATH_KBUILD= 629set PATH_KBUILD_BIN= 630:skip_override_all 631 632REM Specific overrides, these implicitly deletes the legacy variable. 633if "%_KBUILD_OVERRIDE_TARGET%" == "1" set KBUILD_TARGET=%_KBUILD_TARGET% 634if "%_KBUILD_OVERRIDE_TARGET%" == "1" set BUILD_TARGET= 635if "%_KBUILD_OVERRIDE_TARGET_ARCH%" == "1" set KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH% 636if "%_KBUILD_OVERRIDE_TARGET_ARCH%" == "1" set BUILD_TARGET_ARCH= 637if "%_KBUILD_OVERRIDE_TYPE%" == "1" set KBUILD_TYPE=%_KBUILD_TYPE% 638if "%_KBUILD_OVERRIDE_TYPE%" == "1" set BUILD_TYPE= 639 640if not "%_KBUILD_OPT_FULL%" == "1" goto env_setup_done 641set KBUILD_PATH=%_KBUILD_PATH% 642set KBUILD_BIN_PATH=%_KBUILD_BIN_PATH% 643set KBUILD_TYPE=%_KBUILD_TYPE% 644set KBUILD_HOST=%_KBUILD_HOST% 645set KBUILD_HOST_ARCH=%_KBUILD_HOST_ARCH% 646set KBUILD_HOST_CPU=%_KBUILD_HOST_CPU% 647set KBUILD_TARGET=%_KBUILD_TARGET% 648set KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH% 649set KBUILD_TARGET_CPU=%_KBUILD_TARGET_CPU% 650 651if not "%_KBUILD_OPT_LEGACY%" == "1" goto env_setup_done 652set PATH_KBUILD=%_KBUILD_PATH% 653set PATH_KBUILD_BIN=%_KBUILD_BIN_PATH% 654set BUILD_TYPE=%_KBUILD_TYPE% 655set BUILD_PLATFORM=%_KBUILD_HOST% 656set BUILD_PLATFORM_ARCH=%_KBUILD_HOST_ARCH% 657set BUILD_PLATFORM_CPU=%_KBUILD_HOST_CPU% 658set BUILD_TARGET=%_KBUILD_TARGET% 659set BUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH% 660set BUILD_TARGET_CPU=%_KBUILD_TARGET_CPU% 661 662:env_setup_done 663if ".%1" == "." goto end 664 665REM Execute the specified command 666if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: Executing: %1 %2 %3 %4 %5 %6 %7 %8 %9 667set _KBUILD_CLEAN_GOTO=exec_command & goto cleanup 668:exec_command 669SET _KBUILD_CLEAN_GOTO= 670%1 %2 %3 %4 %5 %6 %7 %8 %9 671endlocal 672goto end_no_exit 673 674 675 676REM 677REM All exit paths leads to 'end' or 'failed' depending on 678REM which exit code is desire. This is required as we're manually 679REM performing environment cleanup (setlocal/endlocal is crap). 680REM 681:cleanup 682set _KBUILD_CURDIR= 683set _KBUILD_PATH= 684set _KBUILD_BIN_PATH= 685set _KBUILD_NEW_PATH= 686set _KBUILD_TYPE= 687set _KBUILD_TARGET= 688set _KBUILD_TARGET_ARCH= 689set _KBUILD_TARGET_CPU= 690set _KBUILD_HOST= 691set _KBUILD_HOST_ARCH= 692set _KBUILD_HOST_CPU= 693set _KBUILD_OPT_OVERRIDE_ALL= 694set _KBUILD_OVERRIDE_TYPE= 695set _KBUILD_OVERRIDE_TARGET= 696set _KBUILD_OVERRIDE_TARGET_ARCH= 697 698set _KBUILD_SELF= 699set _KBUILD_OPT_FULL= 700set _KBUILD_OPT_LEGACY= 701set _KBUILD_OPT_VAR= 702set _KBUILD_OPT_VALUE_ONLY= 703set _KBUILD_SHOW_VAR_PREFIX= 704set _KBUILD_OPT_DBG= 705set _KBUILD_OPT_OVERRIDE_ALL= 706 707set _KBUILD_TMP= 708set _KBUILD_VAR= 709set _KBUILD_VARS= 710goto %_KBUILD_CLEAN_GOTO% 711 712:failed 713set _KBUILD_CLEAN_GOTO=failed_done & goto cleanup 714:failed_done 715set _KBUILD_CLEAN_GOTO= 716exit /b 1 717 718:end 719set _KBUILD_CLEAN_GOTO=end_done & goto cleanup 720:end_done 721set _KBUILD_CLEAN_GOTO= 722exit /b 0 723 724:end_no_exit 725 726