• J
    build: do not relink every single binary just for a timestamp · a42324e3
    Jim Meyering 提交于
    Summary:
    Prior to this change, "make check" would always waste a lot of
    time relinking 60+ binaries. With this change, it does that
    only when the generated file, util/build_version.cc, changes,
    and that happens only when the date changes or when the
    current git SHA changes.
    
    This change makes some other improvements: before, there was no
    rule to build a deleted util/build_version.cc. If it was somehow
    removed, any attempt to link a program would fail.
    There is no longer any need for the separate file,
    build_tools/build_detect_version.  Its functionality is
    now in the Makefile.
    
    * Makefile (DEPFILES): Don't filter-out util/build_version.cc.
    No need, and besides, removing that dependency was wrong.
    (date, git_sha, gen_build_version): New helper variables.
    (util/build_version.cc): New rule, to create this file
    and update it only if it would contain new information.
    * build_tools/build_detect_platform: Remove file.
    * db/db_impl.cc: Now, print only date (not the time).
    * util/build_version.h (rocksdb_build_compile_time): Remove
    declaration.  No longer used.
    
    Test Plan:
    - Run "make check" twice, and note that the second time no linking is performed.
    - Remove util/build_version.cc and ensure that any "make"
    command regenerates it before doing anything else.
    - Run this: strings librocksdb.a|grep _build_.
    That prints output including the following:
    
      rocksdb_build_git_date:2015-02-19
      rocksdb_build_git_sha:2.8.fb-1792-g3cb6cc0
    
    Reviewers: ljin, sdong, igor
    
    Reviewed By: igor
    
    Subscribers: dhruba
    
    Differential Revision: https://reviews.facebook.net/D33591
    a42324e3
db_impl.cc 139.3 KB