anchao opened a new pull request, #10576:
URL: https://github.com/apache/nuttx/pull/10576

   
   ## Summary
   
   nuttx/build: Restore ARLOCK to improve compile speed in incremental case
   
   To solve the issue of carrying object files from previous builds, Matias 
changed the archiving process to re-archive libapps.a on every compilation, if 
libapps.a carries more object files, incremental compilation will waste too 
many time in re-archiving, compared with the previous implement, this is a 
degradation of the build system.  Referring to mature engineering projects such 
as cmake, if there is configuration or source file changed, the best solution 
should be to reconfigure the environment.
   
   Revert this PR to ensure the compilation speed during incremental 
compilation.
   
   https://github.com/apache/nuttx/pull/1765
   ```
   |  commit 34b34e2d4519956f9a61f5985aca29947c4b8b23 (tag: 
nuttx-20200914-172150)
   |  Author: Matias N <[email protected]>
   |  Date:   Fri Sep 11 22:31:38 2020 -0300
   |
   |      Fix: ensure archive files do not carry object files from prior builds
   |
   |      In some cases, when NuttX configuration changes and this makes the
   |      object list used to build one of the .a libraries change as well,
   |      since the command used to build it is "ar crs" and this simply appends
   |      the list of object files, the library could still include object
   |      files from prior builds. This commit modifies the ARCHIVE macro to
   |      erase the .a file if it already exists.
   |
   |      Since in some cases this behavior was actually expected (object
   |      files from a subdirectory were appended to a library created one
   |      level above) I added a ARCHIVE_ADD which works as ARCHIVE did.
   |
   |      This change should greatly improve behavior of building after
   |      configuration changes.
   ```
   
   
   
   ## Impact
   
   Build system
   
   ## Testing
   
   
   Testing:
   
   ```
   sim:nsh
   -------------------------------
   |   Patched    |  Current
   -------------------------------
   |$ time make   |  $ time make
   |real 0m1.270s |  real 0m1.728s
   |user 0m0.971s |  user 0m1.276s
   |sys  0m0.363s |  sys         0m0.530s
   -------------------------------
   ```
   
   ```
   Private project (20+ 3rd library needs archive to libapps.a)
   -------------------------------
   |   Patched     |  Current
   -------------------------------
   |$ time make    |  $ time make
   |real 0m21.181s |  real 0m39.721s
   |user 0m14.638s |  user 0m24.837s
   |sys  0m6.919s  |  sys  0m14.394s
   -------------------------------
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to