tree 79ccb5a86ebcd76116240e3933b468771a9f5746
parent 0a2b8eac80f164f10b2cbc126890db0d295790cd
author David 'Digit' Turner <digit@google.com> 1708080037 +0100
committer GN LUCI <gn-scoped@luci-project-accounts.iam.gserviceaccount.com> 1708334120 +0000

Enable C++ runtime assertions in debug mode.

Enabling these runtime assertions should prevent
bugs like the one introduced in [1], which went
unnoticed, and had to be fixed in [2].

This should work on non-Windows platforms when using
libstdc++ or libc++.

This is also disabled on MacOS due to linking errors
with the system-installed XCode on Catalina. E.g.:

```
/opt/s/w/ir/x/w/cipd/bin/clang++ --target=x86_64-apple-darwin --sysroot=/opt/s/w/ir/cache/macos_sdk/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -mmacosx-version-min=10.9 -pthread -o gn src/gn/gn_main.o  base.a gn_lib.a
ld64.lld: error: undefined symbol: std::__1::__libcpp_debug_function
```

(where __libcpp_debug_function is supposed to be provided by libc++
and is the function called in case of runtime assertion failure). Looking
for clues on your favorite search engine does not provide any answer
to the issue :-(

+ Fix compiler warnings with GCC 13 in json_project_writer.cc.
  In debug mode, the compiler complains that with a warning that
  doesn't really make sense, but which can be work-around by
  using assign() instead of clear() + insert() on a vector.

  The error looks like:

  ```
  /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/debug/functions.h:110:44: error: no matching function for call to '__addressof'
        return __foreign_iterator_aux4(__it, std::__addressof(*__other));
  ...
  ../src/gn/json_project_writer.cc:74:14: note: in instantiation of function template specialization 'std::vector<const Target *>::insert<PointerSet<const Target>::const_iter
ator, void>' requested here
      targets->insert(targets->end(), target_set.begin(), target_set.end());
               ^
  /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/move.h:51:5: note: candidate function [with _Tp = const Target *] not viable: expects an lvalue for
  1st argument
      __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
  ```

[1] https://gn-review.googlesource.com/c/gn/+/16620
[2] https://gn-review.googlesource.com/c/gn/+/16700

Change-Id: I71cad8103b221145db75e639a6237f006c8fa37a
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/16740
Commit-Queue: David Turner <digit@google.com>
Reviewed-by: Takuto Ikuta <tikuta@google.com>
