mirror of
https://github.com/golang/go
synced 2024-11-22 11:44:41 -07:00
551d8b9ff5
This CL adds a step to the build procedure for cgo programs. It uses 'ld -r' to combine all gcc compiled object file and generate a relocatable object file for our ld. Additionally, this linking step will combine some static linking gcc library into the relocatable object file, so that we can use libgcc, libmingwex and libmingw32 without problem. Fixes #3261. Fixes #1741. Added a testcase for linking in libgcc. TODO: 1. still need to fix the INDIRECT_SYMBOL_LOCAL problem on Darwin/386. 2. still need to enable the libgcc test on Linux/ARM, because 5l can't deal with thumb libgcc. Tested on Darwin/amd64, Darwin/386, FreeBSD/amd64, FreeBSD/386, Linux/amd64, Linux/386, Linux/ARM, Windows/amd64, Windows/386 R=iant, rsc, bradfitz, coldredlemur CC=golang-dev https://golang.org/cl/5822049
104 lines
2.2 KiB
Batchfile
104 lines
2.2 KiB
Batchfile
:: Copyright 2012 The Go Authors. All rights reserved.
|
|
:: Use of this source code is governed by a BSD-style
|
|
:: license that can be found in the LICENSE file.
|
|
@echo off
|
|
|
|
:: Keep environment variables within this script
|
|
:: unless invoked with --no-local.
|
|
if x%1==x--no-local goto nolocal
|
|
if x%2==x--no-local goto nolocal
|
|
setlocal
|
|
:nolocal
|
|
|
|
set GOBUILDFAIL=0
|
|
|
|
:: we disallow local import for non-local packages, if %GOROOT% happens
|
|
:: to be under %GOPATH%, then some tests below will fail
|
|
set GOPATH=
|
|
|
|
rem TODO avoid rebuild if possible
|
|
|
|
if x%1==x--no-rebuild goto norebuild
|
|
echo # Building packages and commands.
|
|
go install -a -v std
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
:norebuild
|
|
|
|
:: we must unset GOROOT_FINAL before tests, because runtime/debug requires
|
|
:: correct access to source code, so if we have GOROOT_FINAL in effect,
|
|
:: at least runtime/debug test will fail.
|
|
set GOROOT_FINAL=
|
|
|
|
:: get CGO_ENABLED
|
|
go env > env.bat
|
|
if errorlevel 1 goto fail
|
|
call env.bat
|
|
del env.bat
|
|
echo.
|
|
|
|
echo # Testing packages.
|
|
go test std -short -timeout=120s
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
|
|
echo # runtime -cpu=1,2,4
|
|
go test runtime -short -timeout=120s -cpu=1,2,4
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
|
|
echo # sync -cpu=10
|
|
go test sync -short -timeout=120s -cpu=10
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
|
|
echo # ..\misc\dashboard\builder ..\misc\goplay
|
|
go build ..\misc\dashboard\builder ..\misc\goplay
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
|
|
:: TODO(brainman): disabled, because it fails with: mkdir C:\Users\ADMINI~1\AppData\Local\Temp\2.....\test\bench\: The filename or extension is too long.
|
|
::echo # ..\test\bench\go1
|
|
::go test ..\test\bench\go1
|
|
::if errorlevel 1 goto fail
|
|
::echo.
|
|
|
|
:: cgo tests
|
|
if x%CGO_ENABLED% == x0 goto nocgo
|
|
echo # ..\misc\cgo\life
|
|
go run %GOROOT%\test\run.go - ..\misc\cgo\life
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
|
|
:: TODO ..\misc\cgo\stdio
|
|
|
|
echo # ..\misc\cgo\test
|
|
go test ..\misc\cgo\test
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
:nocgo
|
|
|
|
:: TODO: The other tests in run.bash.
|
|
|
|
echo # test
|
|
cd ..\test
|
|
set FAIL=0
|
|
go run run.go
|
|
if errorlevel 1 set FAIL=1
|
|
cd ..\src
|
|
echo.
|
|
if %FAIL%==1 goto fail
|
|
|
|
echo # Checking API compatibility.
|
|
go tool api -c ..\api\go1.txt -next ..\api\next.txt
|
|
if errorlevel 1 goto fail
|
|
echo.
|
|
|
|
echo ALL TESTS PASSED
|
|
goto end
|
|
|
|
:fail
|
|
set GOBUILDFAIL=1
|
|
|
|
:end
|