14f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Copyright 2012 The Go Authors. All rights reserved.
24f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Use of this source code is governed by a BSD-style
34f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: license that can be found in the LICENSE file.
44f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
54f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Environment variables that control make.bat:
64f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
74f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: GOROOT_FINAL: The expected final Go root, baked into binaries.
84f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: The default is the location of the Go tree during the build.
94f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
104f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: GOHOSTARCH: The architecture for host tools (compilers and
114f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: binaries).  Binaries of this type must be executable on the current
124f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: system, so the only common reason to set this is to set
134f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: GOHOSTARCH=386 on an amd64 machine.
144f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
154f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: GOARCH: The target architecture for installed packages and tools.
164f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
174f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: GOOS: The target operating system for installed packages and tools.
184f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
194f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: GO_GCFLAGS: Additional go tool compile arguments to use when
204f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: building the packages and commands.
214f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
224f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: GO_LDFLAGS: Additional go tool link arguments to use when
234f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: building the commands.
244f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
254f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: CGO_ENABLED: Controls cgo usage during the build. Set it to 1
264f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: to include all cgo related files, .c and .go file with "cgo"
274f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: build directive, in the build. Set it to 0 to ignore them.
284f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
294f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: CC: Command line to run to compile C code for GOHOSTARCH.
304f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Default is "gcc".
314f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
324f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: CC_FOR_TARGET: Command line to run compile C code for GOARCH.
334f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: This is used by cgo. Default is CC.
344f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen::
354f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: FC: Command line to run to compile Fortran code.
364f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: This is used by cgo. Default is "gfortran".
374f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
384f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen@echo off
394f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
404f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Keep environment variables within this script
414f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: unless invoked with --no-local.
424f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif x%1==x--no-local goto nolocal
434f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif x%2==x--no-local goto nolocal
444f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsensetlocal
454f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:nolocal
464f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
474f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOBUILDFAIL=0
484f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
494f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif exist make.bat goto ok
504f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho Must run make.bat from Go src directory.
514f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsengoto fail 
524f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:ok
534f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
544f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Clean old generated file that will cause problems in the build.
554f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsendel /F ".\pkg\runtime\runtime_defs.go" 2>NUL
564f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
574f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Set GOROOT for build.
584f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsencd ..
594f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOROOT=%CD%
604f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsencd src
614f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
624f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho ##### Building Go bootstrap tool.
634f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho cmd/dist
644f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif not exist ..\bin\tool mkdir ..\bin\tool
654f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif "x%GOROOT_BOOTSTRAP%"=="x" set GOROOT_BOOTSTRAP=%HOMEDRIVE%%HOMEPATH%\Go1.4
664f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif not exist "%GOROOT_BOOTSTRAP%\bin\go.exe" goto bootstrapfail
674f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsensetlocal
684f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOROOT=%GOROOT_BOOTSTRAP%
694f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOOS=
704f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOARCH=
714f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOBIN=
724f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen"%GOROOT_BOOTSTRAP%\bin\go" build -o cmd\dist\dist.exe .\cmd\dist
734f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenendlocal
744f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif errorlevel 1 goto fail
754f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen.\cmd\dist\dist env -w -p >env.bat
764f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif errorlevel 1 goto fail
774f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsencall env.bat
784f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsendel env.bat
794f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho.
804f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
814f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif x%1==x--dist-tool goto copydist
824f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif x%2==x--dist-tool goto copydist
834f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
844f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset buildall=-a
854f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif x%1==x--no-clean set buildall=
864f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen.\cmd\dist\dist bootstrap %buildall% -v
874f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif errorlevel 1 goto fail
884f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: Delay move of dist tool to now, because bootstrap cleared tool directory.
894f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenmove .\cmd\dist\dist.exe "%GOTOOLDIR%\dist.exe"
904f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho.
914f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
924f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif not %GOHOSTARCH% == %GOARCH% goto localbuild
934f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif not %GOHOSTOS% == %GOOS% goto localbuild
944f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsengoto mainbuild
954f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
964f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:localbuild
974f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho ##### Building packages and commands for host, %GOHOSTOS%/%GOHOSTARCH%.
984f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the
994f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:: host, however, use the host compiler, CC, from `cmd/dist/dist env` instead.
1004f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsensetlocal
1014f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOOS=%GOHOSTOS%
1024f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOARCH=%GOHOSTARCH%
1034f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen"%GOTOOLDIR%\go_bootstrap" install -gcflags "%GO_GCFLAGS%" -ldflags "%GO_LDFLAGS%" -v std cmd
1044f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenendlocal
1054f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif errorlevel 1 goto fail
1064f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho.
1074f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
1084f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:mainbuild
1094f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho ##### Building packages and commands for %GOOS%/%GOARCH%.
1104f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsensetlocal
1114f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset CC=%CC_FOR_TARGET%
1124f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen"%GOTOOLDIR%\go_bootstrap" install -gcflags "%GO_GCFLAGS%" -ldflags "%GO_LDFLAGS%" -a -v std cmd
1134f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenendlocal
1144f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif errorlevel 1 goto fail
1154f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsendel "%GOTOOLDIR%\go_bootstrap.exe"
1164f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho.
1174f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
1184f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif x%1==x--no-banner goto nobanner
1194f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen"%GOTOOLDIR%\dist" banner
1204f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:nobanner
1214f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
1224f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsengoto end
1234f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
1244f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:copydist
1254f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenmkdir "%GOTOOLDIR%" 2>NUL
1264f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsencopy cmd\dist\dist.exe "%GOTOOLDIR%\"
1274f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsengoto end
1284f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
1294f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:bootstrapfail
1304f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho ERROR: Cannot find %GOROOT_BOOTSTRAP%\bin\go.exe
1314f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenecho "Set GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4."
1324f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
1334f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:fail
1344f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenset GOBUILDFAIL=1
1354f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsenif x%GOBUILDEXIT%==x1 exit %GOBUILDFAIL%
1364f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen
1374f7f559a4b744258a796dd591b11bd88e4a6dc7Dan Willemsen:end
138