commit | 082fbe397d5217dc21b01c63c7f20eb6b77a3093 | [log] [tgz] |
---|---|---|
author | Tom Anderson <thomasanderson@chromium.org> | Thu Feb 14 17:31:32 2019 -0800 |
committer | Commit Bot <commit-bot@chromium.org> | Fri Feb 15 17:46:29 2019 +0000 |
tree | 5063236cd618f5f80b1bc98ad4ea8e43571f25dd | |
parent | d69a9c3765dee2e650bcccebbadf72c5d42d92b1 [diff] |
Pass -lpthread when linking instead of -pthread -pthread is meant to be passed when compiling, not linking. Prevents build errors on clang 9 like the following: clang++ -fuse-ld=lld -nodefaultlibs libc++.so -lc -lm -Wl,-rpath="\$ORIGIN/." -Wl,-rpath-link=. -O3 -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-strip-all -static-libstdc++ -Wl,--as-needed -pthread -o gn -Wl,--start-group tools/gn/gn_main.o base.a gn_lib.a -Wl,--end-group -ldl clang-9: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument] ld.lld: error: undefined symbol: pthread_create >>> referenced by worker_pool.cc >>> util/worker_pool.o:(WorkerPool::WorkerPool(unsigned long)) in archive gn_lib.a Verified the build works on earlier versions of clang and gcc. BUG=chromium:932041,chromium:807400 R=brettw Change-Id: I1b876ae43a5b9b04f82828680612641e49f86de2 Reviewed-on: https://gn-review.googlesource.com/c/4000 Reviewed-by: Brett Wilson <brettw@chromium.org> Commit-Queue: Brett Wilson <brettw@chromium.org>
GN is a meta-build system that generates build files for Ninja. There is documentation in docs/ and a presentation on it.
You can download the latest version of GN binary for Linux, macOS and Windows.
Alternatively, you can build GN from source:
git clone https://gn.googlesource.com/gn cd gn python build/gen.py ninja -C out # To run tests: out/gn_unittests
On Windows, it is expected that cl.exe
, link.exe
, and lib.exe
can be found in PATH
, so you'll want to run from a Visual Studio command prompt, or similar.
On Linux and Mac, the default compiler is clang++
, a recent version is expected to be found in PATH
. This can be overridden by setting CC
, CXX
, and AR
.
If you find a bug, you can see if it is known or report it in the bug database.
GN uses Gerrit for code review. The short version of how to patch is:
Register at https://gn-review.googlesource.com. ... edit code ... ninja -C out && out/gn_unittests
Then, to upload a change for review:
git commit git cl upload --gerrit
When revising a change, use:
git commit --amend git cl upload --gerrit
which will add the new changes to the existing code review, rather than creating a new one.
We ask that all contributors sign Google's Contributor License Agreement (either individual or corporate as appropriate, select ‘any other Google project’).
You may ask questions and follow along w/ GN‘s development on Chromium’s gn-dev@ Google Group.