The macro CacheFind is a bit awkward to use with FillCacheFind. The naming is also not that great. This patch tries to improve this situation. The main difference is naming of the macros. Now the main entry point is "FindFiles". There are a couple of others as well, see MakeBase.gmk for details. Another notable difference is that FillCacheFind is now called FillFindCache and should not be called with $(eval) anymore.

As an alternative to running $(shell find ...), I have implemented a recursive macro using $(wildcard ...) that mimics the basic FindFiles functionality. I have found that on Windows/Cygwin, it's generally a bit faster than spawning external processes. With this change, the default FindFiles will use the wildcard find macro on Windows.

My initial idea for this patch was to essentially get rid of FillFindCache and have FindFiles add everything to the cache automatically. Unfortunately, that did not do anything to improve performance as in the large majority of cases, we do not reuse find results. I think it's better to explicitly cache things in the few locations where it actually helps.

I have added a decent set of tests in TestMakeBase.gmk that verifies the functionality of the new macros.

Bug: https://bugs.openjdk.java.net/browse/JDK-8189861 <https://bugs.openjdk.java.net/browse/JDK-8189861?filter=-1>

Webrev: http://cr.openjdk.java.net/~erikj/8189861/webrev.01/index.html

/Erik

Reply via email to