<feed xmlns='http://www.w3.org/2005/Atom'>
<title>platform_build_kati/func.cc, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/'/>
<entry>
<title>Refactor source tree into directories</title>
<updated>2020-06-27T01:52:06+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2020-06-27T01:46:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=979e7ae6e417ae4ee45e835104b66191ae16a14c'/>
<id>979e7ae6e417ae4ee45e835104b66191ae16a14c</id>
<content type='text'>
Now instead of almost every file in the top level, move the old go code
into its own directory 'golang', and the C++ code into it's own 'src'

Also removes a few obsolete scripts that were used to work on Android
before Android fully switched to Kati.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now instead of almost every file in the top level, move the old go code
into its own directory 'golang', and the C++ code into it's own 'src'

Also removes a few obsolete scripts that were used to work on Android
before Android fully switched to Kati.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add debug location info into the regen stamp file</title>
<updated>2020-04-21T06:12:45+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2020-04-14T06:56:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=0cf3d2d5c0204fed5023575698da9c8b9d8681fe'/>
<id>0cf3d2d5c0204fed5023575698da9c8b9d8681fe</id>
<content type='text'>
This makes it easier to figure out where different shell commands are
coming from.

Change-Id: I0eef9cd28eb39e5ca2961ee650bd498e34e94ced
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes it easier to figure out where different shell commands are
coming from.

Change-Id: I0eef9cd28eb39e5ca2961ee650bd498e34e94ced
</pre>
</div>
</content>
</entry>
<entry>
<title>func: rewrite a loop to appease -Wunreachable-code-loop-increment</title>
<updated>2020-03-10T04:11:05+00:00</updated>
<author>
<name>George Burgess IV</name>
<email>gbiv@google.com</email>
</author>
<published>2020-03-10T04:06:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=a901c231ced74501805acbd09fc172e29dbaf3d0'/>
<id>a901c231ced74501805acbd09fc172e29dbaf3d0</id>
<content type='text'>
This warning catches loops that can only execute once. It's unhappy
about the following code:

```
build/kati/func.cc:286:3: error: loop will run at most once (loop
increment never executed) [-Werror,-Wunreachable-code-loop-increment]
  for (StringPiece tok : WordScanner(text)) {
  ^~~
```

Since that behavior seems intended here, just tweak the code to silence
the warning.

b/150166387

Test: TreeHugger passed at
https://android-review.googlesource.com/c/platform/build/kati/+/1252837
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This warning catches loops that can only execute once. It's unhappy
about the following code:

```
build/kati/func.cc:286:3: error: loop will run at most once (loop
increment never executed) [-Werror,-Wunreachable-code-loop-increment]
  for (StringPiece tok : WordScanner(text)) {
  ^~~
```

Since that behavior seems intended here, just tweak the code to silence
the warning.

b/150166387

Test: TreeHugger passed at
https://android-review.googlesource.com/c/platform/build/kati/+/1252837
</pre>
</div>
</content>
</entry>
<entry>
<title>Collect stats about how long it takes to process included makefiles</title>
<updated>2019-08-13T21:52:56+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2019-08-13T01:01:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=3a2b85d9ea33c9121617c2fab3820a2bc937ac77'/>
<id>3a2b85d9ea33c9121617c2fab3820a2bc937ac77</id>
<content type='text'>
For example, from a simple AOSP build:

  *kati*: included makefiles: 110.994136 / 190877 (1270 unique)
  *kati*:  22.172 /     1 out/soong/Android-aosp_arm.mk
  *kati*:  18.603 / 21745 build/make/core/base_rules.mk
  *kati*:  16.156 / 15372 build/make/core/soong_cc_prebuilt.mk
  *kati*:   2.629 /   370 build/make/core/package.mk
  *kati*:   2.621 /   370 build/make/core/package_internal.mk
  *kati*:   2.326 /     1 build/make/core/config.mk
  *kati*:   2.305 /     1 build/make/core/envsetup.mk
  *kati*:   2.039 /     1 build/make/core/aux_config.mk
  *kati*:   1.959 / 22488 build/make/core/clear_vars.mk
  *kati*:   1.643 /  1959 build/make/core/soong_java_prebuilt.mk

It would them be possible to measure how long part of a makefile took by
extracting the text into a new makefile and 'include'ing it. To ensure
that the extracted makefile shows up in the logs, you can use the newly
added $(KATI_profile_makefile ...) function:

  $(KATI_profile_makefile build/make/core/Makefile bionic/Android.mk,doesnotexist)

will add:

  *kati*:   0.364 /     1 build/make/core/Makefile
  *kati*:   0.293 /     1 bionic/Android.mk
  *kati*:   0.000 /     0 doesnotexist

Change-Id: Iea71612cf6a18b3923bba2a288e62a5fc59d2529
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For example, from a simple AOSP build:

  *kati*: included makefiles: 110.994136 / 190877 (1270 unique)
  *kati*:  22.172 /     1 out/soong/Android-aosp_arm.mk
  *kati*:  18.603 / 21745 build/make/core/base_rules.mk
  *kati*:  16.156 / 15372 build/make/core/soong_cc_prebuilt.mk
  *kati*:   2.629 /   370 build/make/core/package.mk
  *kati*:   2.621 /   370 build/make/core/package_internal.mk
  *kati*:   2.326 /     1 build/make/core/config.mk
  *kati*:   2.305 /     1 build/make/core/envsetup.mk
  *kati*:   2.039 /     1 build/make/core/aux_config.mk
  *kati*:   1.959 / 22488 build/make/core/clear_vars.mk
  *kati*:   1.643 /  1959 build/make/core/soong_java_prebuilt.mk

It would them be possible to measure how long part of a makefile took by
extracting the text into a new makefile and 'include'ing it. To ensure
that the extracted makefile shows up in the logs, you can use the newly
added $(KATI_profile_makefile ...) function:

  $(KATI_profile_makefile build/make/core/Makefile bionic/Android.mk,doesnotexist)

will add:

  *kati*:   0.364 /     1 build/make/core/Makefile
  *kati*:   0.293 /     1 bionic/Android.mk
  *kati*:   0.000 /     0 doesnotexist

Change-Id: Iea71612cf6a18b3923bba2a288e62a5fc59d2529
</pre>
</div>
</content>
</entry>
<entry>
<title>Run clang-format</title>
<updated>2018-11-06T00:18:44+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2018-11-06T00:18:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=ee57a3f992817cf7a378afc7bf069dbe992efc7a'/>
<id>ee57a3f992817cf7a378afc7bf069dbe992efc7a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Mark fallthrough cases with [[clang::fallthrough]]</title>
<updated>2018-10-10T01:04:38+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2018-10-10T01:04:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=72887f2f9a2f1c4fc50ac6f32572322764dfdd72'/>
<id>72887f2f9a2f1c4fc50ac6f32572322764dfdd72</id>
<content type='text'>
That way they don't cause warnings when -Wimplicit-fallthrough is
enabled in clang.

Change-Id: Ica9ec59550f558c051092a8c0faab157096847fc
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
That way they don't cause warnings when -Wimplicit-fallthrough is
enabled in clang.

Change-Id: Ica9ec59550f558c051092a8c0faab157096847fc
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix deprecate/obsolete vars in ifdef/call</title>
<updated>2018-09-15T20:02:06+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2018-09-15T19:57:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=cf01530228bb67bf61dd7386a3eb33c1bfe1bb35'/>
<id>cf01530228bb67bf61dd7386a3eb33c1bfe1bb35</id>
<content type='text'>
We hadn't been checking variables that were used in ifdef/ifndef or
$(call) to see if they were deprecated.

Change-Id: I097dbfb081a703ec38d1f00473d5e1095100f483
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We hadn't been checking variables that were used in ifdef/ifndef or
$(call) to see if they were deprecated.

Change-Id: I097dbfb081a703ec38d1f00473d5e1095100f483
</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up Symbol handling.</title>
<updated>2018-08-15T03:02:21+00:00</updated>
<author>
<name>Sasha Smundak</name>
<email>asmundak@google.com</email>
</author>
<published>2018-08-13T18:07:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=8174f9ba20320ef2afd5c2466f7e9e3f0a185a57'/>
<id>8174f9ba20320ef2afd5c2466f7e9e3f0a185a57</id>
<content type='text'>
* Introduce SymbolSet class. As each Symbol contains sequentially
assigned ordinal value, representing a set of Symbols as a growable
bitset is faster and more space-efficient than generic unordered_bitmap
(for the full build, we save about 1500MB).
* Remove useless constructor argument.
* Make a Symbol for .KATI_READONLY constant instead of Evaluator member.
* Avoid testing 'this' for nullness in Value::DebugString, it's not
standard-compliant. Make Value::DebugString static instead.
* Avoid 'fallthrough' compiler warning.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Introduce SymbolSet class. As each Symbol contains sequentially
assigned ordinal value, representing a set of Symbols as a growable
bitset is faster and more space-efficient than generic unordered_bitmap
(for the full build, we save about 1500MB).
* Remove useless constructor argument.
* Make a Symbol for .KATI_READONLY constant instead of Evaluator member.
* Avoid testing 'this' for nullness in Value::DebugString, it's not
standard-compliant. Make Value::DebugString static instead.
* Avoid 'fallthrough' compiler warning.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add KATI_(deprecate|obsolete)_export</title>
<updated>2018-02-27T11:14:23+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2018-02-27T08:25:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=c3f6a9791d9b747a49dfd02602bb5662ba6e2783'/>
<id>c3f6a9791d9b747a49dfd02602bb5662ba6e2783</id>
<content type='text'>
Allow makefiles to mark the `export` and `unexport` keywords as
deprecated or obsolete. In large builds like Android, we've got our own
ways to set global environment variables, it's very unlikely that
individual makefiles need to set an environment variable for every
single rule.

We expect to eventually add environment variables to the list of inputs
that ninja checks to see if a command needs to run again (currently it
just checks the timestamps and commandline). Reducing the ability for
makefiles to export global variables per-configuration means that we're
more likely to share compile steps between configurations.

Change-Id: I8df0630ef264e39fd077b08dcac57e571ebe214f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow makefiles to mark the `export` and `unexport` keywords as
deprecated or obsolete. In large builds like Android, we've got our own
ways to set global environment variables, it's very unlikely that
individual makefiles need to set an environment variable for every
single rule.

We expect to eventually add environment variables to the list of inputs
that ninja checks to see if a command needs to run again (currently it
just checks the timestamps and commandline). Reducing the ability for
makefiles to export global variables per-configuration means that we're
more likely to share compile steps between configurations.

Change-Id: I8df0630ef264e39fd077b08dcac57e571ebe214f
</pre>
</div>
</content>
</entry>
<entry>
<title>Expand PeekVar to KATI_(deprecated|obsolete)_var</title>
<updated>2017-12-28T00:50:09+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2017-12-28T00:50:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=741974195712be8c53529cffc0b8222c970f685c'/>
<id>741974195712be8c53529cffc0b8222c970f685c</id>
<content type='text'>
So that marking a variable as deprecated or obsolete does not cause the
variable to be inserted into the used environment table.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
So that marking a variable as deprecated or obsolete does not cause the
variable to be inserted into the used environment table.
</pre>
</div>
</content>
</entry>
</feed>
