4 REM Environment setup script.
8 REM Copyright (c) 2005-2024 knut st. osmundsen <bird-kBuild-spamx@anduin.net>
10 REM This file is part of kBuild.
12 REM kBuild is free software; you can redistribute it and/or modify
13 REM it under the terms of the GNU General Public License as published by
14 REM the Free Software Foundation; either version 2 of the License, or
15 REM (at your option) any later version.
17 REM kBuild is distributed in the hope that it will be useful,
18 REM but WITHOUT ANY WARRANTY; without even the implied warranty of
19 REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 REM GNU General Public License for more details.
22 REM You should have received a copy of the GNU General Public License
23 REM along with kBuild; if not, write to the Free Software
24 REM Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30 set _KBUILD_CURDIR
=%CD%
31 for /f
"tokens=*" %%d in
('cd') do set _KBUILD_CURDIR
=%%d
33 set _KBUILD_PATH
=%KBUILD_PATH%
34 set _KBUILD_BIN_PATH
=%KBUILD_BIN_PATH%
35 set _KBUILD_TYPE
=%KBUILD_TYPE%
36 set _KBUILD_TARGET
=%KBUILD_TARGET%
37 set _KBUILD_TARGET_ARCH
=%KBUILD_TARGET_ARCH%
38 set _KBUILD_TARGET_CPU
=%KBUILD_TARGET_CPU%
39 set _KBUILD_HOST
=%KBUILD_HOST%
40 set _KBUILD_HOST_ARCH
=%KBUILD_HOST_ARCH%
41 set _KBUILD_HOST_CPU
=%KBUILD_HOST_CPU%
43 set _KBUILD_OVERRIDE_TYPE
=0
44 set _KBUILD_OVERRIDE_TARGET
=0
45 set _KBUILD_OVERRIDE_TARGET_ARCH
=0
48 REM Parse the arguments.
50 REM Note: The 0 argument must be saved as it is also shifted.
53 set _KBUILD_OPT_FULL
=0
54 set _KBUILD_OPT_LEGACY
=0
56 set _KBUILD_OPT_VALUE_ONLY
=0
57 set _KBUILD_SHOW_VAR_PREFIX
=
59 set _KBUILD_OPT_OVERRIDE_ALL
=0
62 if ".%1" == ".-h" goto do_help
63 if ".%1" == "./h" goto do_help
64 if ".%1" == "./H" goto do_help
65 if ".%1" == ".-h" goto do_help
66 if ".%1" == ".-help" goto do_help
67 if ".%1" == ".--help" goto do_help
69 if ".%1" == ".--win" goto want_win
70 if ".%1" == ".-win" goto want_win
71 if ".%1" == ".--win32" goto want_win32_bit
72 if ".%1" == ".-win32" goto want_win32_bit
73 if ".%1" == ".-win64" goto want_win64_bit
74 if ".%1" == ".--win64" goto want_win64_bit
75 if ".%1" == ".--nt" goto want_nt
76 if ".%1" == ".-nt" goto want_nt
77 if ".%1" == ".--nt32" goto want_nt32_bit
78 if ".%1" == ".-nt32" goto want_nt32_bit
79 if ".%1" == ".--nt64" goto want_nt64_bit
80 if ".%1" == ".-nt64" goto want_nt64_bit
82 if ".%1" == ".--release" goto want_release
83 if ".%1" == ".--profile" goto want_profile
84 if ".%1" == ".--debug" goto want_debug
86 if ".%1" == ".--full" goto opt_full
87 if ".%1" == ".--normal" goto opt_normal
88 if ".%1" == ".--legacy" goto opt_legacy
89 if ".%1" == ".--no-legacy" goto opt_no_legacy
90 if ".%1" == ".--debug-script" goto opt_debug_script
91 if ".%1" == ".--no-debug-script" goto opt_no_debug_script
92 if ".%1" == ".--var" goto opt_var
93 if ".%1" == ".--value-only" goto opt_value_only
94 if ".%1" == ".--name-and-value" goto opt_name_and_value
95 if ".%1" == ".--set" goto opt_set
96 if ".%1" == ".--no-set" goto opt_no_set
102 set _KBUILD_TARGET
=win
103 set _KBUILD_OVERRIDE_TARGET
=1
108 set _KBUILD_TARGET
=win
109 set _KBUILD_TARGET_ARCH
=x86
110 set _KBUILD_OVERRIDE_TARGET
=1
111 set _KBUILD_OVERRIDE_TARGET_ARCH
=1
116 set _KBUILD_TARGET
=win
117 set _KBUILD_TARGET_ARCH
=amd64
118 set _KBUILD_OVERRIDE_TARGET
=1
119 set _KBUILD_OVERRIDE_TARGET_ARCH
=1
124 set _KBUILD_TARGET
=nt
125 set _KBUILD_OVERRIDE_TARGET
=1
130 set _KBUILD_TARGET
=nt
131 set _KBUILD_TARGET_ARCH
=x86
132 set _KBUILD_OVERRIDE_TARGET
=1
133 set _KBUILD_OVERRIDE_TARGET_ARCH
=1
138 set _KBUILD_TARGET
=nt
139 set _KBUILD_TARGET_ARCH
=amd64
140 set _KBUILD_OVERRIDE_TARGET
=1
141 set _KBUILD_OVERRIDE_TARGET_ARCH
=1
146 set _KBUILD_TYPE
=release
147 set _KBUILD_OVERRIDE_TYPE
=1
152 set _KBUILD_TYPE
=profile
153 set _KBUILD_OVERRIDE_TYPE
=1
158 set _KBUILD_TYPE
=debug
159 set _KBUILD_OVERRIDE_TYPE
=1
164 set _KBUILD_OPT_FULL
=1
169 set _KBUILD_OPT_FULL
=0
174 set _KBUILD_OPT_LEGACY
=1
179 set _KBUILD_OPT_LEGACY
=0
184 set _KBUILD_OPT_DBG
=1
189 set _KBUILD_OPT_DBG
=0
194 if ".%1" == "." echo syntax error
: --var is missing it
's variable name.
195 if ".%1" == "." goto failure
196 set _KBUILD_OPT_VAR=%_KBUILD_OPT_VAR% %1
202 set _KBUILD_OPT_VALUE_ONLY=1
207 set _KBUILD_OPT_VALUE_ONLY=0
212 set _KBUILD_SHOW_VAR_PREFIX=SET %_KBUILD_NON_EXISTING_VAR%
217 set _KBUILD_SHOW_VAR_PREFIX=
225 echo kBuild environment setup script for Windows NT.
226 echo Syntax: envwin.cmd [options] [command to be executed]
227 echo or: envwin.cmd [options] --var varname
231 echo Force windows target and host platform.
233 echo Force x86 32-bit windows target platform.
235 echo Force AMD64 64-bit windows target platform.
237 echo Force NT target and host platform.
239 echo Force x86 32-bit NT target platform.
241 echo Force AMD64 64-bit NT target platform.
242 echo --debug, --release, --profile
243 echo Alternative way of specifying KBUILD_TYPE.
244 echo --full, --normal
245 echo Controls the variable set. Default: --normal
246 echo --legacy, --no-legacy
247 echo Include legacy variables in result. Default: --legacy
248 echo --value-only, --name-and-value
249 echo Controls what the result of a --var query. Default: --name-and-value
251 echo Whether to prefix the variable output with 'SET' or not.
252 echo Default: --no-set
259 REM Convert legacy variable names.
261 if ".%_KBUILD_OPT_OVERRIDE_ALL%" == ".1" goto legacy_convertion_done
263 set _KBUILD_VARS=KBUILD_HOST (%_KBUILD_HOST%) and BUILD_PLATFORM (%BUILD_PLATFORM%)
264 if not ".%BUILD_PLATFORM%" == "." if not ".%_KBUILD_HOST%" == "." if ".%_KBUILD_HOST%" == ".%BUILD_PLATFORM%" goto legacy_mismatch
265 if not ".%BUILD_PLATFORM%" == "." set _KBUILD_HOST=%BUILD_PLATFORM%
267 set _KBUILD_VARS=KBUILD_HOST_ARCH (%_KBUILD_HOST_ARCH%) and BUILD_PLATFORM_ARCH (%BUILD_PLATFORM_ARCH%)
268 if not ".%BUILD_PLATFORM_ARCH%" == "." if not ".%_KBUILD_HOST_ARCH%" == "." if ".%_KBUILD_HOST_ARCH%" == ".%BUILD_PLATFORM_ARCH%" goto legacy_mismatch
269 if not ".%BUILD_PLATFORM_ARCH%" == "." set _KBUILD_HOST_ARCH=%BUILD_PLATFORM_ARCH%
271 set _KBUILD_VARS=KBUILD_HOST_CPU (%_KBUILD_HOST_CPU%) and BUILD_PLATFORM_CPU (%BUILD_PLATFORM_CPU%)
272 if not ".%BUILD_PLATFORM_CPU%" == "." if not ".%_KBUILD_HOST_CPU%" == "." if ".%_KBUILD_HOST_CPU%" == ".%BUILD_PLATFORM_CPU%" goto legacy_mismatch
273 if not ".%BUILD_PLATFORM_CPU%" == "." set _KBUILD_HOST_CPU=%BUILD_PLATFORM_CPU%
275 if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_target
276 set _KBUILD_VARS=KBUILD_TARGET (%_KBUILD_TARGET%) and BUILD_TARGET (%BUILD_TARGET%)
277 if not ".%BUILD_TARGET%" == "." if not ".%_KBUILD_TARGET%" == "." if ".%_KBUILD_TARGET%" == ".%BUILD_TARGET%" goto legacy_mismatch
278 if not ".%BUILD_TARGET%" == "." set _KBUILD_TARGET=%BUILD_TARGET%
281 if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_target_arch
282 set _KBUILD_VARS=KBUILD_TARGET_ARCH (%_KBUILD_TARGET_ARCH%) and BUILD_TARGET_ARCH (%BUILD_TARGET_ARCH%)
283 if not ".%BUILD_TARGET_ARCH%" == "." if not ".%_KBUILD_TARGET_ARCH%" == "." if ".%_KBUILD_TARGET_ARCH%" == ".%BUILD_TARGET_ARCH%" goto legacy_mismatch
284 if not ".%BUILD_TARGET_ARCH%" == "." set _KBUILD_TARGET_ARCH=%BUILD_TARGET_ARCH%
285 :legacy_skip_target_arch
287 if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_target_cpu
288 set _KBUILD_VARS=KBUILD_TARGET_CPU (%_KBUILD_TARGET_CPU%) and BUILD_TARGET_CPU (%BUILD_TARGET_CPU%)
289 if not ".%BUILD_TARGET_CPU%" == "." if not ".%_KBUILD_TARGET_CPU%" == "." if ".%_KBUILD_TARGET_CPU%" == ".%BUILD_TARGET_CPU%" goto legacy_mismatch
290 if not ".%BUILD_TARGET_CPU%" == "." set _KBUILD_TARGET_CPU=%BUILD_TARGET_CPU%
291 :legacy_skip_target_cpu
293 if ".%_KBUILD_OVERRIDE_TARGET%" == ".1" goto legacy_skip_type
294 set _KBUILD_VARS=KBUILD_TYPE (%_KBUILD_TYPE%) and BUILD_TYPE (%BUILD_TYPE%)
295 if not ".%BUILD_TYPE%" == "." if not ".%_KBUILD_TYPE%" == "." if ".%_KBUILD_TYPE%" == ".%BUILD_TYPE%" goto legacy_mismatch
296 if not ".%BUILD_TYPE%" == "." set _KBUILD_TYPE=%BUILD_TYPE%
299 set _KBUILD_VARS=KBUILD_PATH (%_KBUILD_PATH%) and PATH_KBUILD (%PATH_KBUILD%)
300 if not ".%PATH_KBUILD%" == "." if not ".%_KBUILD_PATH%" == "." if ".%_KBUILD_PATH%" == ".%PATH_KBUILD%" goto legacy_mismatch
301 if not ".%PATH_KBUILD%" == "." set _KBUILD_PATH=%PATH_KBUILD%
302 goto legacy_convertion_done
305 echo error: %_KBUILD_VARS% disagree.
308 :legacy_convertion_done
312 REM Check for illegal target/platforms.
315 if "%_KBUILD_TARGET" == "win32" goto illegal_target
316 if "%_KBUILD_TARGET" == "win64" goto illegal_target
317 if "%_KBUILD_HOST" == "win32" goto illegal_host
318 if "%_KBUILD_HOST" == "win64" goto illegal_host
319 goto target_and_platform_ok
322 echo error: KBUILD_TARGET=%KBUILD_TARGET% is no longer valid.
323 echo Only 'win
' and 'nt
' are permitted for targeting microsoft windows.
327 echo error: KBUILD_HOST=%KBUILD_HOST is no longer valid.
328 echo Only 'win
' and 'nt
' are permitted for building on microsoft windows.
331 :target_and_platform_ok
336 REM We'll try determin the location of this script first and
use that
337 REM as a starting point for guessing the kBuild directory.
340 REM Check if set via KBUILD_PATH.
341 if not ".%_KBUILD_PATH%" == "." if exist %_KBUILD_PATH%\footer.kmk
goto found_kbuild
343 REM Determin a correct self - by %0
344 if exist "%_KBUILD_SELF%" goto found_self
345 set _KBUILD_SELF
=%_KBUILD_SELF%.
cmd
346 if exist "%_KBUILD_SELF%" goto found_self
348 REM Determin a correct self - by the PATH
349 REM This is very verbose because nested for loops didn't work out.
350 for /f
"tokens=1 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
351 if exist "%_KBUILD_SELF%" goto found_self
352 for /f
"tokens=2 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
353 if exist "%_KBUILD_SELF%" goto found_self
354 for /f
"tokens=3 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
355 if exist "%_KBUILD_SELF%" goto found_self
356 for /f
"tokens=4 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
357 if exist "%_KBUILD_SELF%" goto found_self
358 for /f
"tokens=5 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
359 if exist "%_KBUILD_SELF%" goto found_self
360 for /f
"tokens=6 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
361 if exist "%_KBUILD_SELF%" goto found_self
362 for /f
"tokens=7 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
363 if exist "%_KBUILD_SELF%" goto found_self
364 for /f
"tokens=8 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
365 if exist "%_KBUILD_SELF%" goto found_self
366 for /f
"tokens=9 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
367 if exist "%_KBUILD_SELF%" goto found_self
368 for /f
"tokens=10 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
369 if exist "%_KBUILD_SELF%" goto found_self
370 for /f
"tokens=11 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
371 if exist "%_KBUILD_SELF%" goto found_self
372 for /f
"tokens=12 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
373 if exist "%_KBUILD_SELF%" goto found_self
374 for /f
"tokens=13 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
375 if exist "%_KBUILD_SELF%" goto found_self
376 for /f
"tokens=14 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
377 if exist "%_KBUILD_SELF%" goto found_self
378 for /f
"tokens=15 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
379 if exist "%_KBUILD_SELF%" goto found_self
380 for /f
"tokens=16 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
381 if exist "%_KBUILD_SELF%" goto found_self
382 for /f
"tokens=17 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
383 if exist "%_KBUILD_SELF%" goto found_self
384 for /f
"tokens=18 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
385 if exist "%_KBUILD_SELF%" goto found_self
386 for /f
"tokens=19 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
387 if exist "%_KBUILD_SELF%" goto found_self
388 for /f
"tokens=20 delims=;" %%d in
("%PATH%") do set _KBUILD_SELF
=%%d\envwin.
cmd
389 if exist "%_KBUILD_SELF%" goto found_self
393 cd "%_KBUILD_SELF%\.."
394 for /f
"tokens=*" %%d in
('cd') do set _KBUILD_PATH
=%%d
395 cd "%_KBUILD_CURDIR%"
396 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
398 REM Try relative to the current directory.
400 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
401 set _KBUILD_PATH
=%_KBUILD_CURDIR%
402 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
403 set _KBUILD_PATH
=%_KBUILD_CURDIR%\kBuild
404 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
405 set _KBUILD_PATH
=%_KBUILD_CURDIR%\..\kBuild
406 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
407 set _KBUILD_PATH
=%_KBUILD_CURDIR%\..\..\kBuild
408 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
409 set _KBUILD_PATH
=%_KBUILD_CURDIR%\..\..\..\kBuild
410 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
411 set _KBUILD_PATH
=%_KBUILD_CURDIR%\..\..\..\..\kBuild
412 if exist "%_KBUILD_PATH%\footer.kmk" goto found_kbuild
413 echo kBuild
: Can
't find the kBuild directory!
419 for /f "tokens=*" %%d in ('cd') do set _KBUILD_PATH=%%d
420 cd "%_KBUILD_CURDIR%"
421 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_PATH=%_KBUILD_PATH%
425 REM Type - release is the default.
427 if not ".%_KBUILD_TYPE%" == "." goto have_type
428 set _KBUILD_TYPE=release
430 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TYPE=%_KBUILD_TYPE%
434 REM Host platform - windows
436 if not ".%_KBUILD_HOST%" == "." goto have_host
438 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_HOST=%_KBUILD_HOST%
441 if not ".%_KBUILD_HOST_ARCH%" == "." goto have_host_arch
442 REM try guess from _KBUILD_HOST_CPU
443 if ".%KBUILD_HOST_CPU%" == ".i386" set _KBUILD_HOST_ARCH=x86
444 if ".%KBUILD_HOST_CPU%" == ".i486" set _KBUILD_HOST_ARCH=x86
445 if ".%KBUILD_HOST_CPU%" == ".i586" set _KBUILD_HOST_ARCH=x86
446 if ".%KBUILD_HOST_CPU%" == ".i686" set _KBUILD_HOST_ARCH=x86
447 if ".%KBUILD_HOST_CPU%" == ".i786" set _KBUILD_HOST_ARCH=x86
448 if ".%KBUILD_HOST_CPU%" == ".i886" set _KBUILD_HOST_ARCH=x86
449 if ".%KBUILD_HOST_CPU%" == ".i986" set _KBUILD_HOST_ARCH=x86
450 if ".%KBUILD_HOST_CPU%" == ".k8" set _KBUILD_HOST_ARCH=amd64
451 if ".%KBUILD_HOST_CPU%" == ".k9" set _KBUILD_HOST_ARCH=amd64
452 if ".%KBUILD_HOST_CPU%" == ".k10" set _KBUILD_HOST_ARCH=amd64
453 if not ".%_KBUILD_HOST_ARCH%" == "." goto have_host_arch
454 REM try guess from PROCESSOR_ARCHITECTURE, PROCESSOR_ARCHITEW6432, and
455 REM PROCESSOR_IDENTIFIER (latter for arm running non-native shells (tcc.exe)).
456 set _KBUILD_TMP=%PROCESSOR_ARCHITECTURE%
457 if not ".%PROCESSOR_ARCHITEW6432%" == "." set _KBUILD_TMP=%PROCESSOR_ARCHITEW6432%
458 if "%_KBUILD_TMP%" == "x86" set _KBUILD_HOST_ARCH=x86
459 if "%_KBUILD_TMP%" == "X86" set _KBUILD_HOST_ARCH=x86
460 if "%_KBUILD_TMP%" == "amd64" set _KBUILD_HOST_ARCH=amd64
461 if "%_KBUILD_TMP%" == "Amd64" set _KBUILD_HOST_ARCH=amd64
462 if "%_KBUILD_TMP%" == "AMD64" set _KBUILD_HOST_ARCH=amd64
463 if "%_KBUILD_TMP%" == "x64" set _KBUILD_HOST_ARCH=amd64
464 if "%_KBUILD_TMP%" == "X64" set _KBUILD_HOST_ARCH=amd64
465 if /i "%PROCESSOR_IDENTIFIER:~0,5%" == "ARMv8" set _KBUILD_HOST_ARCH=arm64
466 if /i "%PROCESSOR_IDENTIFIER:~0,5%" == "ARMv9" set _KBUILD_HOST_ARCH=arm64
467 if not ".%_KBUILD_HOST_ARCH%" == "." goto have_host_arch
468 echo error: Cannot figure KBUILD_HOST_ARCH!
471 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_HOST_ARCH=%_KBUILD_HOST_ARCH%
473 if not ".%_KBUILD_HOST_CPU%" == "." goto have_host_cpu
474 set _KBUILD_HOST_CPU=blend
476 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_HOST_CPU=%_KBUILD_HOST_CPU%
479 REM The target platform.
480 REM Defaults to the host when not specified.
482 if not ".%_KBUILD_TARGET%" == "." goto have_target
483 set _KBUILD_TARGET=%_KBUILD_HOST%
485 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TARGET=%_KBUILD_TARGET%
487 if not ".%_KBUILD_TARGET_ARCH%" == "." goto have_target_arch
488 set _KBUILD_TARGET_ARCH=%_KBUILD_HOST_ARCH%
490 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH%
492 if not ".%_KBUILD_TARGET_CPU%" == "." goto have_target_cpu
493 if ".%_KBUILD_TARGET_ARCH%" == ".%_KBUILD_HOST_ARCH%" set _KBUILD_TARGET_CPU=%_KBUILD_HOST_CPU%
494 if not ".%_KBUILD_TARGET_CPU%" == "." goto have_target_cpu
495 set _KBUILD_TARGET_CPU=%_KBUILD_HOST_CPU%
497 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_TARGET_CPU=%_KBUILD_TARGET_CPU%
500 REM Calc KBUILD_BIN_PATH and the new PATH value.
502 if not ".%_KBUILD_BIN_PATH%" == "." goto have_kbuild_bin_path
503 set _KBUILD_BIN_PATH=%_KBUILD_PATH%\bin\win.%_KBUILD_HOST_ARCH%
504 :have_kbuild_bin_path
505 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_BIN_PATH=%_KBUILD_BIN_PATH%
507 set _KBUILD_NEW_PATH=%_KBUILD_BIN_PATH%;%PATH%
508 if ".%_KBUILD_OPT_DBG%" == ".1" echo dbg: _KBUILD_NEW_PATH=%_KBUILD_NEW_PATH%
513 if not exist "%_KBUILD_BIN_PATH%" goto missing_bin_path
514 if not exist "%_KBUILD_BIN_PATH%" goto done_chekcing_for_tools
515 set _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
516 for %%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
)"
517 goto done_chekcing_for_tools
520 echo warning: The bin directory for this platform doesn't exist. (%_KBUILD_BIN_PATH%)
521 :done_chekcing_for_tools
524 REM The environment is in place, now take the requested action.
526 if ".
%_KBUILD_OPT_VAR%" == ".
" goto exec_or_setup_env
530 REM Show a set of variables.
532 REM Note: 4nt doesn't grok the setlocal delayed expansion option.
533 REM So, we'll have to identify which shell we're running.
536 for %%i in ( %_KBUILD_OPT_VAR% ) do if "%%i
" == "all
" goto show_all_variables
538 if not ".
%_4VER%" == ".
" goto 4nt
539 setlocal ENABLEDELAYEDEXPANSION
540 if errorlevel 1 goto no_delay_expansion
542 for %%i in ( %_KBUILD_OPT_VAR% ) do (
545 if "%%i
" == "KBUILD_PATH
" set _KBUILD_TMP=%_KBUILD_PATH%
546 if "%%i
" == "KBUILD_BIN_PATH
" set _KBUILD_TMP=%_KBUILD_BIN_PATH%
547 if "%%i
" == "KBUILD_TYPE
" set _KBUILD_TMP=%_KBUILD_TYPE%
548 if "%%i
" == "KBUILD_HOST
" set _KBUILD_TMP=%_KBUILD_HOST%
549 if "%%i
" == "KBUILD_HOST_ARCH
" set _KBUILD_TMP=%_KBUILD_HOST_ARCH%
550 if "%%i
" == "KBUILD_HOST_CPU
" set _KBUILD_TMP=%_KBUILD_HOST_CPU%
551 if "%%i
" == "KBUILD_TARGET
" set _KBUILD_TMP=%_KBUILD_TARGET%
552 if "%%i
" == "KBUILD_TARGET_ARCH
" set _KBUILD_TMP=%_KBUILD_TARGET_ARCH%
553 if "%%i
" == "KBUILD_TARGET_CPU
" set _KBUILD_TMP=%_KBUILD_TARGET_CPU%
554 if ".
!_KBUILD_TMP
!" == ".
" goto varible_not_found
555 if not ".
%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo %_KBUILD_SHOW_VAR_PREFIX%%%i=!_KBUILD_TMP!
556 if ".
%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo !_KBUILD_TMP!
563 echo error: Unable to enable delayed expansion in the shell.
566 for %%i in ( %_KBUILD_OPT_VAR% ) do (
569 if "%%i
" == "KBUILD_PATH
" set _KBUILD_TMP=%_KBUILD_PATH%
570 if "%%i
" == "KBUILD_BIN_PATH
" set _KBUILD_TMP=%_KBUILD_BIN_PATH%
571 if "%%i
" == "KBUILD_TYPE
" set _KBUILD_TMP=%_KBUILD_TYPE%
572 if "%%i
" == "KBUILD_HOST
" set _KBUILD_TMP=%_KBUILD_HOST%
573 if "%%i
" == "KBUILD_HOST_ARCH
" set _KBUILD_TMP=%_KBUILD_HOST_ARCH%
574 if "%%i
" == "KBUILD_HOST_CPU
" set _KBUILD_TMP=%_KBUILD_HOST_CPU%
575 if "%%i
" == "KBUILD_TARGET
" set _KBUILD_TMP=%_KBUILD_TARGET%
576 if "%%i
" == "KBUILD_TARGET_ARCH
" set _KBUILD_TMP=%_KBUILD_TARGET_ARCH%
577 if "%%i
" == "KBUILD_TARGET_CPU
" set _KBUILD_TMP=%_KBUILD_TARGET_CPU%
578 if ".
%_KBUILD_TMP%" == ".
" goto varible_not_found
579 if not ".
%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo %_KBUILD_SHOW_VAR_PREFIX%%i=%_KBUILD_TMP%
580 if ".
%_KBUILD_OPT_VALUE_ONLY%" == ".1" echo %_KBUILD_TMP%
585 echo error: Unknown variable %_KBUILD_VAR% specified in --var request.
589 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_PATH=%_KBUILD_PATH%
590 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_BIN_PATH=%_KBUILD_BIN_PATH%
591 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TYPE=%_KBUILD_TYPE%
592 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_HOST=%_KBUILD_HOST%
593 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_HOST_ARCH=%_KBUILD_HOST_ARCH%
594 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_HOST_CPU=%_KBUILD_HOST_CPU%
595 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TARGET=%_KBUILD_TARGET%
596 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH%
597 echo %_KBUILD_SHOW_VAR_PREFIX%KBUILD_TARGET_CPU=%_KBUILD_TARGET_CPU%
601 REM Setup environment for the current shell or execute a command.
603 REM Note: We use setlocal if we're going to execute a command as we
604 REM don't want the environment of the invoking shell to be changed.
607 if not ".
%1" == ".
" setlocal
609 REM The PATH is always set.
610 set PATH=%_KBUILD_NEW_PATH%
612 REM Clear up anything that should be overridden.
613 if not "%_KBUILD_OPT_OVERRIDE_ALL%" == "1" goto skip_override_all
616 set KBUILD_HOST_ARCH=
619 set KBUILD_TARGET_ARCH=
620 set KBUILD_TARGET_CPU=
623 if not "%_KBUILD_OPT_LEGACY%" == "1" goto skip_override_all
626 set BUILD_PLATFORM_ARCH=
627 set BUILD_PLATFORM_CPU=
629 set BUILD_TARGET_ARCH=
630 set BUILD_TARGET_CPU=
635 REM Specific overrides, these implicitly deletes the legacy variable.
636 if "%_KBUILD_OVERRIDE_TARGET%" == "1" set KBUILD_TARGET=%_KBUILD_TARGET%
637 if "%_KBUILD_OVERRIDE_TARGET%" == "1" set BUILD_TARGET=
638 if "%_KBUILD_OVERRIDE_TARGET_ARCH%" == "1" set KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH%
639 if "%_KBUILD_OVERRIDE_TARGET_ARCH%" == "1" set BUILD_TARGET_ARCH=
640 if "%_KBUILD_OVERRIDE_TYPE%" == "1" set KBUILD_TYPE=%_KBUILD_TYPE%
641 if "%_KBUILD_OVERRIDE_TYPE%" == "1" set BUILD_TYPE=
643 if not "%_KBUILD_OPT_FULL%" == "1" goto env_setup_done
644 set KBUILD_PATH=%_KBUILD_PATH%
645 set KBUILD_BIN_PATH=%_KBUILD_BIN_PATH%
646 set KBUILD_TYPE=%_KBUILD_TYPE%
647 set KBUILD_HOST=%_KBUILD_HOST%
648 set KBUILD_HOST_ARCH=%_KBUILD_HOST_ARCH%
649 set KBUILD_HOST_CPU=%_KBUILD_HOST_CPU%
650 set KBUILD_TARGET=%_KBUILD_TARGET%
651 set KBUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH%
652 set KBUILD_TARGET_CPU=%_KBUILD_TARGET_CPU%
654 if not "%_KBUILD_OPT_LEGACY%" == "1" goto env_setup_done
655 set PATH_KBUILD=%_KBUILD_PATH%
656 set PATH_KBUILD_BIN=%_KBUILD_BIN_PATH%
657 set BUILD_TYPE=%_KBUILD_TYPE%
658 set BUILD_PLATFORM=%_KBUILD_HOST%
659 set BUILD_PLATFORM_ARCH=%_KBUILD_HOST_ARCH%
660 set BUILD_PLATFORM_CPU=%_KBUILD_HOST_CPU%
661 set BUILD_TARGET=%_KBUILD_TARGET%
662 set BUILD_TARGET_ARCH=%_KBUILD_TARGET_ARCH%
663 set BUILD_TARGET_CPU=%_KBUILD_TARGET_CPU%
666 if ".
%1" == ".
" goto end
668 REM Execute the specified command
669 if ".
%_KBUILD_OPT_DBG%" == ".1" echo dbg: Executing: %1 %2 %3 %4 %5 %6 %7 %8 %9
670 set _KBUILD_CLEAN_GOTO=exec_command & goto cleanup
672 SET _KBUILD_CLEAN_GOTO=
673 %1 %2 %3 %4 %5 %6 %7 %8 %9
680 REM All exit paths leads to 'end' or 'failed' depending on
681 REM which exit code is desire. This is required as we're manually
682 REM performing environment cleanup (setlocal/endlocal is crap).
687 set _KBUILD_BIN_PATH=
688 set _KBUILD_NEW_PATH=
691 set _KBUILD_TARGET_ARCH=
692 set _KBUILD_TARGET_CPU=
694 set _KBUILD_HOST_ARCH=
695 set _KBUILD_HOST_CPU=
696 set _KBUILD_OPT_OVERRIDE_ALL=
697 set _KBUILD_OVERRIDE_TYPE=
698 set _KBUILD_OVERRIDE_TARGET=
699 set _KBUILD_OVERRIDE_TARGET_ARCH=
702 set _KBUILD_OPT_FULL=
703 set _KBUILD_OPT_LEGACY=
705 set _KBUILD_OPT_VALUE_ONLY=
706 set _KBUILD_SHOW_VAR_PREFIX=
708 set _KBUILD_OPT_OVERRIDE_ALL=
713 goto %_KBUILD_CLEAN_GOTO%
716 set _KBUILD_CLEAN_GOTO=failed_done & goto cleanup
718 set _KBUILD_CLEAN_GOTO=
722 set _KBUILD_CLEAN_GOTO=end_done & goto cleanup
724 set _KBUILD_CLEAN_GOTO=