<feed xmlns='http://www.w3.org/2005/Atom'>
<title>platform_build_kati/symtab.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>Var and Value classes cleanup and memory footprint reduction.</title>
<updated>2018-08-22T17:22:24+00:00</updated>
<author>
<name>Sasha Smundak</name>
<email>asmundak@google.com</email>
</author>
<published>2018-08-22T16:39:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=ae1d58c6d66c0c4be6447911588d09892a77a9d6'/>
<id>ae1d58c6d66c0c4be6447911588d09892a77a9d6</id>
<content type='text'>
* Reduce Var instance size by moving the diagnostic message string to a
hash map for the instances that really have it (there are actually very
few such instances).
* Move common members from Var subclasses to the base class and
represent them more compactly.
* Remove RuleVar wrapper class, it is an extra object per rule-specific
variable.
* Rename Expr class to ValueList.
* Use additional constructors and convenience factory methods in Value
and its subclasses to avoid creating ValueList with a single element and
then compacting it.
* Use method overloading instead of having NewExpr2/NewExpr3, move them
for the global namespace to be factory methods of the Value class.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Reduce Var instance size by moving the diagnostic message string to a
hash map for the instances that really have it (there are actually very
few such instances).
* Move common members from Var subclasses to the base class and
represent them more compactly.
* Remove RuleVar wrapper class, it is an extra object per rule-specific
variable.
* Rename Expr class to ValueList.
* Use additional constructors and convenience factory methods in Value
and its subclasses to avoid creating ValueList with a single element and
then compacting it.
* Use method overloading instead of having NewExpr2/NewExpr3, move them
for the global namespace to be factory methods of the Value class.
</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>Fix list of used environment variables</title>
<updated>2017-11-21T23:15:55+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2017-11-21T21:22:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=ff90ea321443ef949e993aa554a4836054cefbf5'/>
<id>ff90ea321443ef949e993aa554a4836054cefbf5</id>
<content type='text'>
With the introduction of deprecated / obsolete variable support, we
started calling LookupVarInLocalScope on the variable we were setting
with = or :=. This was fine, except it also marked those variables as
used environment variables (whether they were set in the environment or
not). So changing one of these environment variables would cause kati to
regenerate the ninja file even though nothing would change.

To fix this, add new Peek* functions that don't record the variables as
used, but can still be used to check to see if the variable has been
deprecated or is obsolete.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With the introduction of deprecated / obsolete variable support, we
started calling LookupVarInLocalScope on the variable we were setting
with = or :=. This was fine, except it also marked those variables as
used environment variables (whether they were set in the environment or
not). So changing one of these environment variables would cause kati to
regenerate the ninja file even though nothing would change.

To fix this, add new Peek* functions that don't record the variables as
used, but can still be used to check to see if the variable has been
deprecated or is obsolete.
</pre>
</div>
</content>
</entry>
<entry>
<title>`clang-format -i -style=file *.cc *.h`</title>
<updated>2017-10-12T05:20:49+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2017-10-12T05:17:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=3ce083f01d6e62e9fb9b328e312d97a074fe6128'/>
<id>3ce083f01d6e62e9fb9b328e312d97a074fe6128</id>
<content type='text'>
Change-Id: I62a87c5d8309b21265e904c0aeb9b3e094c9024a
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I62a87c5d8309b21265e904c0aeb9b3e094c9024a
</pre>
</div>
</content>
</entry>
<entry>
<title>Support marking variables as readonly</title>
<updated>2016-09-30T05:21:10+00:00</updated>
<author>
<name>Dan Willemsen</name>
<email>dwillemsen@google.com</email>
</author>
<published>2016-09-30T03:09:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=f87d49e41a5dd57733d02f3990c91dc38e557dad'/>
<id>f87d49e41a5dd57733d02f3990c91dc38e557dad</id>
<content type='text'>
When the magic variable .KATI_READONLY is set to a variable name, any
further attempts to modify the named variable will result in an error.

  FOO := bar
  .KATI_READONLY := FOO
  FOO := baz  # Error!

This is useful to make some global configuration readonly so that
another makefile cannot change it. In Android, we emulated this by
backing up some global configuration before including the Android.mk
files, then comparing the current values to the backed up values after
they've been included. But this means we don't know the location that
modified the variable, just that something did. And it's not perfect,
since the backup can also be changed.

Something similar to this could be implemented with `override`, but then
setting the variable silently fails, and it still could be overriden
with another override.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the magic variable .KATI_READONLY is set to a variable name, any
further attempts to modify the named variable will result in an error.

  FOO := bar
  .KATI_READONLY := FOO
  FOO := baz  # Error!

This is useful to make some global configuration readonly so that
another makefile cannot change it. In Android, we emulated this by
backing up some global configuration before including the Android.mk
files, then comparing the current values to the backed up values after
they've been included. But this means we don't know the location that
modified the variable, just that something did. And it's not perfect,
since the backup can also be changed.

Something similar to this could be implemented with `override`, but then
setting the variable silently fails, and it still could be overriden
with another override.
</pre>
</div>
</content>
</entry>
<entry>
<title>[C++] Allow command line variables to override file variables</title>
<updated>2016-06-25T02:12:22+00:00</updated>
<author>
<name>Po Hu</name>
<email>hupo1985@gmail.com</email>
</author>
<published>2016-06-24T12:05:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=6957e9aa7ceb33fa4308536632b4b28e1fa9966f'/>
<id>6957e9aa7ceb33fa4308536632b4b28e1fa9966f</id>
<content type='text'>
Test case:
$ cat Makefile
VAR := FAIL
$(info $(VAR))
all:
	@echo $(VAR)

$ ckati -f Makefile VAR=PASS
PASS
PASS
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Test case:
$ cat Makefile
VAR := FAIL
$(info $(VAR))
all:
	@echo $(VAR)

$ ckati -f Makefile VAR=PASS
PASS
PASS
</pre>
</div>
</content>
</entry>
<entry>
<title>[C++] Remove unnecessary #include</title>
<updated>2016-04-27T06:50:08+00:00</updated>
<author>
<name>Shinichiro Hamaji</name>
<email>shinichiro.hamaji@gmail.com</email>
</author>
<published>2016-04-27T06:49:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=02e5ee3284a45f761a6d8d1a851a1d5467d7fe0b'/>
<id>02e5ee3284a45f761a6d8d1a851a1d5467d7fe0b</id>
<content type='text'>
Was added in 29b9b7470cc33c2b7c4264f254335d788ef04c26
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Was added in 29b9b7470cc33c2b7c4264f254335d788ef04c26
</pre>
</div>
</content>
</entry>
<entry>
<title>[C++] Honor "override" when setting global variable</title>
<updated>2016-04-12T09:31:46+00:00</updated>
<author>
<name>Stefan Becker</name>
<email>stefanb@gpartner-nvidia.com</email>
</author>
<published>2016-04-07T10:29:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=29b9b7470cc33c2b7c4264f254335d788ef04c26'/>
<id>29b9b7470cc33c2b7c4264f254335d788ef04c26</id>
<content type='text'>
Regression when compared to GNU make behaviour.

Test case:

 $ cat Makefile.override-failure
 $(info VAR: '$(VAR)')
 override VAR := test
 $(info VAR: '$(VAR)')
 override VAR := test-new
 $(info VAR: '$(VAR)')
 VAR := test-should-not-work
 $(info VAR: '$(VAR)')

 $ make -f Makefile.override-failure
 VAR: ''
 VAR: 'test'
 VAR: 'test-new'
 VAR: 'test-new'
 make: *** No targets.  Stop.

 $ ckati -c --warn -f Makefile.override-failure
 VAR: ''
 VAR: 'test'
 VAR: 'test'
 VAR: 'test'
 *** No targets.

Fixes https://github.com/google/kati/issues/50

Change-Id: I9c4185c30cfcf5602da7e0ac98b7e9c420788005
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Regression when compared to GNU make behaviour.

Test case:

 $ cat Makefile.override-failure
 $(info VAR: '$(VAR)')
 override VAR := test
 $(info VAR: '$(VAR)')
 override VAR := test-new
 $(info VAR: '$(VAR)')
 VAR := test-should-not-work
 $(info VAR: '$(VAR)')

 $ make -f Makefile.override-failure
 VAR: ''
 VAR: 'test'
 VAR: 'test-new'
 VAR: 'test-new'
 make: *** No targets.  Stop.

 $ ckati -c --warn -f Makefile.override-failure
 VAR: ''
 VAR: 'test'
 VAR: 'test'
 VAR: 'test'
 *** No targets.

Fixes https://github.com/google/kati/issues/50

Change-Id: I9c4185c30cfcf5602da7e0ac98b7e9c420788005
</pre>
</div>
</content>
</entry>
<entry>
<title>[C++] Associate global variables with Symbols directly</title>
<updated>2016-02-22T07:19:42+00:00</updated>
<author>
<name>Shinichiro Hamaji</name>
<email>shinichiro.hamaji@gmail.com</email>
</author>
<published>2016-02-18T09:18:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/AOSP/platform_build_kati/commit/?id=c9b9e5eea8b477a103cdec951ef2a299f9cd49ba'/>
<id>c9b9e5eea8b477a103cdec951ef2a299f9cd49ba</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
