convert build system to autotools #177

pull jaromil wants to merge 2 commits into bitcoin:master from jaromil:autotools2 changing 101 files +2672 −64
  1. jaromil commented at 8:13 pm on April 21, 2011: contributor

    adding autotools for build checks, configure flags for compile time configuration and handling of #define directives inside code and things that will possibily make it better for bitcoin to be packaged inside distributions, as well ported to different architectures.

    this pull request follows my first sloppy attempt here: #162 i’ve followed suggestions given by jgarzik, thanks for your patience

    this pull request is a rebase of this branch https://github.com/jaromil/bitcoin/commits/master which eliminates all those commits and squashes them in this.

    the bitcoind code itself was never modified, just moved around, with two exceptions:

    1. 9141f2c renamed cryptopp/config.h to settings.h
    2. c929bae code namespace change: (int)VERSION renamed to BITCOIN_VERSION in headers.h

    so just one filename and one variable name changed, plus one #ifdef inside headers.h

    code modules have been separated in subdirectories and compiled as static libraries, still using libtool, which is the recommended behaviour when using autotools.

    a flag –enable-upnp=0/1 has been added and configure.ac contains templates for adding more compile time choices in future.

    as libbitcoin will be provided in future, ABI versioning is also ready to be adopted via libtool.

    the test/ directory is imported from gasteve’s branch for test units.

    Build of this was tested on Debian 6 (also with WX GUI), Apple OSX 10.5 (without WX GUI) and CYGWIN win32 (without dependencies).

  2. The aim of this commit is mostly that of GNUification for bitcoin
    adding autotools for build checks, configure flags for compile time
    configuration and handling of #define directives inside code and
    things that will possibily make it better for bitcoin to be packaged
    inside distributions, as well ported to different architectures.
    
    this pull request follows my first sloppy attempt here:
    https://github.com/bitcoin/bitcoin/pull/162
    i've followed suggestions given by jgarzik, thanks for your patience
    
    this pull request is a rebase of this branch
    https://github.com/jaromil/bitcoin/master
    which eliminates all those commits and squashes them in this.
    
    the bitcoind code itself was never modified, just moved around, with
    two exceptions:
    
    1) 9141f2c renamed cryptopp/config.h to settings.h
    2) c929bae code namespace change: (int)VERSION renamed to
       BITCOIN_VERSION in headers.h
    
    so just one filename and one variable name changed, plus one #ifdef
    inside headers.h
    
    code modules have been separated in subdirectories and compiled as
    static libraries, still using libtool, which is the recommended
    behaviour when using autotools.
    
    a flag --enable-upnp=0/1 has been added and configure.ac contains
    templates for adding more compile time choices in future.
    
    as libbitcoin will be provided in future, ABI versioning is also ready
    to be adopted via libtool.
    
    the test/ directory is imported from gasteve's branch for test units.
    
    Build of this was tested on Debian 6 (also with WX GUI), Apple OSX
    10.5 (without WX GUI) and CYGWIN win32 (without dependencies).
    76e7d323f6
  3. jgarzik commented at 8:20 pm on April 21, 2011: contributor

    One important practice for git…

    When everything is just a single commit, it is difficult to review, to see if the submittor has inserted a tiny bit of malicious code, in all that code movement. I’m not accusing you of this, just speaking generally.

    So, this commit should really be two, either (a) convert to autotools then (b) move files around, or (a) move files around under old build system, verify that it builds and works under old build system, then (b) convert to autotools. That enables the reviewers to easily review the “move files around” commit and verify that it truly includes -zero- code changes.

    Also, in terms of marketing, I think it is a bit misleading to call it the “GNUification of bitcoin” It might make people think bitcoin is changing its license from MIT to GPL, at first glance.

    The more technically accurate description is “convert bitcoin build system to autotools” or similar. If we imported your git commit as-is into bitcoin.git, the one-line summary of your commit is “The aim of this commit is mostly that of GNUification for bitcoin” which does not tell the reader anything.

  4. jaromil commented at 8:31 pm on April 21, 2011: contributor

    sry i forgot to mention: for building run first ‘autoreconf -i’ and then the usual ./configure (–enable-upnp recommended!)

    sure, ok for “convert bitcoin build system to autotools”

    re: multiple commits, we have now two branches: the one with the FULL history of my activity in autotools, and this one.

    it is no problem for me to adjust things, yet the three steps you are mentioning are fragmented in the full and here squashed. should this be really split in 3 commits then?

  5. reverted change of cryptopp/config.h
    autotools generated header is renamed to auto-config.h
    as suggested by jgarzik
    44497baae7
  6. jaromil commented at 10:42 pm on April 21, 2011: contributor

    i’m rounding up on devs comments, then will break this commit in two parts, following these recommendations:

    23:26 jaromil: and each git commit needs to be buildable on its own, in order to keep ‘git bisect’ working. sometimes that means an intermediate step requires a bit of extra work, unfortunately.
    for example, if you do (1) move files, then (2) autotools, then commit #1 must update the old build system to work. then commit #2 undoes that work, switching to autotools. 23:27 jaromil: it helps if you view each git commit like a step in an equation, or proof 23:27 both sides are equal at all times, even though each step represents a transformation

    which will be done in another pull request. please leave this open until all issues are rounded up here.

  7. jaromil commented at 10:08 am on April 23, 2011: contributor

    ok, closing this and re-filing another pull request with two commit steps, as jgarzik suggested:

    a) move files around under old build system, verify that it builds and works under old build system b) convert to autotools

  8. jaromil closed this on Apr 23, 2011

  9. zathras-crypto referenced this in commit 0f8b5c4936 on Nov 27, 2014
  10. sipa referenced this in commit 7873633b57 on Jan 5, 2015
  11. dexX7 referenced this in commit 7e888ca846 on Aug 17, 2015
  12. TheBlueMatt referenced this in commit 582b2934e6 on Oct 20, 2015
  13. deadalnix referenced this in commit 5268cb9a61 on Dec 13, 2016
  14. deadalnix referenced this in commit 10c81ffb5d on Jan 19, 2017
  15. classesjack referenced this in commit 3c07811592 on Jan 2, 2018
  16. attilaaf referenced this in commit bd91b7294c on Jan 13, 2020
  17. cryptapus referenced this in commit a29b6600e8 on Feb 18, 2020
  18. MarcoFalke referenced this in commit 8e6532053f on Mar 16, 2021
  19. cryptapus referenced this in commit 5feb3572b7 on May 3, 2021
  20. rajarshimaitra referenced this in commit 52aa362dcc on Aug 5, 2021
  21. DrahtBot locked this on Sep 8, 2021


jaromil jgarzik


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-19 03:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me