Merge pull request #2061 from samolisov:building-with-bazel-as-a-dll-on-windows

PiperOrigin-RevId: 234845565
This commit is contained in:
Gennadiy Civil 2019-02-20 15:22:42 -05:00
commit 1411d27a94
5 changed files with 81 additions and 17 deletions

View File

@ -104,12 +104,20 @@ cc_library(
], ],
"//conditions:default": [], "//conditions:default": [],
}), }),
features = select({
":windows": ["windows_export_all_symbols"],
"//conditions:default": [],
})
) )
cc_library( cc_library(
name = "gtest_main", name = "gtest_main",
srcs = ["googlemock/src/gmock_main.cc"], srcs = ["googlemock/src/gmock_main.cc"],
deps = [":gtest"], deps = [":gtest"],
features = select({
":windows": ["windows_export_all_symbols"],
"//conditions:default": [],
})
) )
# The following rules build samples of how to use gTest. # The following rules build samples of how to use gTest.
@ -127,6 +135,10 @@ cc_library(
"googletest/samples/sample3-inl.h", "googletest/samples/sample3-inl.h",
"googletest/samples/sample4.h", "googletest/samples/sample4.h",
], ],
features = select({
":windows": ["windows_export_all_symbols"],
"//conditions:default": [],
})
) )
cc_test( cc_test(
@ -149,6 +161,7 @@ cc_test(
"gtest_sample_lib", "gtest_sample_lib",
":gtest_main", ":gtest_main",
], ],
linkstatic = 0,
) )
cc_test( cc_test(

View File

@ -56,7 +56,6 @@ Google test has been used on a variety of platforms:
* MinGW * MinGW
* Windows Mobile * Windows Mobile
* Symbian * Symbian
* PlatformIO
## Who Is Using Google Test? ## ## Who Is Using Google Test? ##

View File

@ -6,21 +6,31 @@ environment:
matrix: matrix:
- compiler: msvc-15-seh - compiler: msvc-15-seh
generator: "Visual Studio 15 2017" generator: "Visual Studio 15 2017"
build_system: cmake
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- compiler: msvc-15-seh - compiler: msvc-15-seh
generator: "Visual Studio 15 2017 Win64" generator: "Visual Studio 15 2017 Win64"
build_system: cmake
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
enabled_on_pr: yes
- compiler: msvc-15-seh
build_system: bazel
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
enabled_on_pr: yes enabled_on_pr: yes
- compiler: msvc-14-seh - compiler: msvc-14-seh
build_system: cmake
generator: "Visual Studio 14 2015" generator: "Visual Studio 14 2015"
enabled_on_pr: yes enabled_on_pr: yes
- compiler: msvc-14-seh - compiler: msvc-14-seh
build_system: cmake
generator: "Visual Studio 14 2015 Win64" generator: "Visual Studio 14 2015 Win64"
- compiler: gcc-6.3.0-posix - compiler: gcc-6.3.0-posix
build_system: cmake
generator: "MinGW Makefiles" generator: "MinGW Makefiles"
cxx_path: 'C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin' cxx_path: 'C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin'
enabled_on_pr: yes enabled_on_pr: yes
@ -46,6 +56,12 @@ install:
} }
} }
# install Bazel
if ($env:build_system -eq "bazel") {
appveyor DownloadFile https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-windows-x86_64.exe -FileName bazel.exe
}
if ($env:build_system -eq "cmake") {
# git bash conflicts with MinGW makefiles # git bash conflicts with MinGW makefiles
if ($env:generator -eq "MinGW Makefiles") { if ($env:generator -eq "MinGW Makefiles") {
$env:path = $env:path.replace("C:\Program Files\Git\usr\bin;", "") $env:path = $env:path.replace("C:\Program Files\Git\usr\bin;", "")
@ -53,13 +69,31 @@ install:
$env:path += ";$env:cxx_path" $env:path += ";$env:cxx_path"
} }
} }
}
before_build:
- ps: |
$env:root=$env:APPVEYOR_BUILD_FOLDER
Write-Output "env:root: $env:root"
build_script: build_script:
- ps: | - ps: |
# Only enable some builds for pull requests, the AppVeyor queue is too long. # Only enable some builds for pull requests, the AppVeyor queue is too long.
if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) { if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) {
return return
} else {
# special case - build with Bazel
if ($env:build_system -eq "bazel") {
& $env:root\bazel.exe build -c opt //:gtest_samples
if ($LastExitCode -eq 0) { # bazel writes to StdErr and PowerShell interprets it as an error
$host.SetShouldExit(0)
} else { # a real error
throw "Exec: $ErrorMessage"
} }
return
}
}
# by default build with CMake
md _build -Force | Out-Null md _build -Force | Out-Null
cd _build cd _build
@ -88,16 +122,33 @@ test_script:
if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) { if ((Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER) -And (-not (Test-Path env:enabled_on_pr) -or $env:enabled_on_pr -ne "yes")) {
return return
} }
if ($env:build_system -eq "bazel") {
# special case - testing with Bazel
& $env:root\bazel.exe test //:gtest_samples
if ($LastExitCode -eq 0) { # bazel writes to StdErr and PowerShell interprets it as an error
$host.SetShouldExit(0)
} else { # a real error
throw "Exec: $ErrorMessage"
}
}
if ($env:build_system -eq "cmake") {
# built with CMake - test with CTest
if ($env:generator -eq "MinGW Makefiles") { if ($env:generator -eq "MinGW Makefiles") {
return # No test available for MinGW return # No test available for MinGW
} }
& ctest -C $env:configuration --timeout 600 --output-on-failure & ctest -C $env:configuration --timeout 600 --output-on-failure
if ($LastExitCode -ne 0) { if ($LastExitCode -ne 0) {
throw "Exec: $ErrorMessage" throw "Exec: $ErrorMessage"
} }
}
artifacts: artifacts:
- path: '_build/CMakeFiles/*.log' - path: '_build/CMakeFiles/*.log'
name: logs name: logs
- path: '_build/Testing/**/*.xml' - path: '_build/Testing/**/*.xml'
name: test_results name: test_results
- path: 'bazel-testlogs/**/test.log'
name: test_logs
- path: 'bazel-testlogs/**/test.xml'
name: test_results

View File

@ -252,7 +252,7 @@ command line. Generally, these macros are named like `GTEST_XYZ` and you define
them to either 1 or 0 to enable or disable a certain feature. them to either 1 or 0 to enable or disable a certain feature.
We list the most frequently used macros below. For a complete list, see file We list the most frequently used macros below. For a complete list, see file
[include/gtest/internal/gtest-port.h](https://github.com/google/googletest/blob/master/googletest/include/gtest/internal/gtest-port.h). [include/gtest/internal/gtest-port.h](https://github.com/google/googletest/blob/master/include/gtest/internal/gtest-port.h).
### Multi-threaded Tests ### Multi-threaded Tests

View File

@ -1198,7 +1198,7 @@ also supports per-test-suite set-up/tear-down. To use it:
1. Outside your test fixture class (typically just below it), define those 1. Outside your test fixture class (typically just below it), define those
member variables, optionally giving them initial values. member variables, optionally giving them initial values.
1. In the same test fixture class, define a `static void SetUpTestSuite()` 1. In the same test fixture class, define a `static void SetUpTestSuite()`
function (remember not to spell it as **`SetupTestSuite`** with a small `u`!) function (remember not to spell it as **`SetUpTestSuite`** with a small `u`!)
to set up the shared resources and a `static void TearDownTestSuite()` to set up the shared resources and a `static void TearDownTestSuite()`
function to tear them down. function to tear them down.
@ -2430,7 +2430,7 @@ could generate this report:
"failures": 1, "failures": 1,
"errors": 0, "errors": 0,
"time": "0.035s", "time": "0.035s",
"timestamp": "2011-10-31T18:52:42Z", "timestamp": "2011-10-31T18:52:42Z"
"name": "AllTests", "name": "AllTests",
"testsuites": [ "testsuites": [
{ {
@ -2447,11 +2447,11 @@ could generate this report:
"classname": "", "classname": "",
"failures": [ "failures": [
{ {
"message": "Value of: add(1, 1)\n Actual: 3\nExpected: 2", "message": "Value of: add(1, 1)\x0A Actual: 3\x0AExpected: 2",
"type": "" "type": ""
}, },
{ {
"message": "Value of: add(1, -1)\n Actual: 1\nExpected: 0", "message": "Value of: add(1, -1)\x0A Actual: 1\x0AExpected: 0",
"type": "" "type": ""
} }
] ]
@ -2463,7 +2463,7 @@ could generate this report:
"classname": "" "classname": ""
} }
] ]
}, }
{ {
"name": "LogicTest", "name": "LogicTest",
"tests": 1, "tests": 1,
@ -2517,3 +2517,4 @@ environment variable to `0`, or use the `--gtest_catch_exceptions=0` flag when
running the tests. running the tests.
**Availability**: Linux, Windows, Mac. **Availability**: Linux, Windows, Mac.