public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
* [Bitcoin-development] Reconsider build system change?
@ 2011-07-02  7:29 John Smith
  2011-07-02  8:13 ` John Smith
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: John Smith @ 2011-07-02  7:29 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 649 bytes --]

Hello,

Why again did we choose for autotools as future build system instead of
cmake?

- CMake generates native build scripts for Make (all platforms), XCode,
Visual Studio. Autoconf only does Make.

- CMake has a clearer syntax, m4/autotools is very convoluted

- CMake is very fast

- CMake is supported natively in Qt Creator in the QT SDK, and is used by
many other KDE/QT as well as other open source applications. Many people
discourage the use of autotools for new projects.

A CMake build system for bitcoin is already integrated into rpcminer,
available here:

http://luke.dashjr.org/programs/bitcoin/w/puddinpop-bitcoin-pool.git/tree

JS

[-- Attachment #2: Type: text/html, Size: 796 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02  7:29 [Bitcoin-development] Reconsider build system change? John Smith
@ 2011-07-02  8:13 ` John Smith
  2011-07-02 11:30   ` Matt Corallo
  2011-07-02 14:50 ` Luke-Jr
  2011-07-03 10:44 ` Pieter Wuille
  2 siblings, 1 reply; 16+ messages in thread
From: John Smith @ 2011-07-02  8:13 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 862 bytes --]

Also important: it supports cross compiling:

http://www.cmake.org/Wiki/CMake_Cross_Compiling

JS

On Sat, Jul 2, 2011 at 7:29 AM, John Smith <witchspace81@gmail•com> wrote:

> Hello,
>
> Why again did we choose for autotools as future build system instead of
> cmake?
>
> - CMake generates native build scripts for Make (all platforms), XCode,
> Visual Studio. Autoconf only does Make.
>
> - CMake has a clearer syntax, m4/autotools is very convoluted
>
> - CMake is very fast
>
> - CMake is supported natively in Qt Creator in the QT SDK, and is used by
> many other KDE/QT as well as other open source applications. Many people
> discourage the use of autotools for new projects.
>
> A CMake build system for bitcoin is already integrated into rpcminer,
> available here:
>
> http://luke.dashjr.org/programs/bitcoin/w/puddinpop-bitcoin-pool.git/tree
>
> JS
>

[-- Attachment #2: Type: text/html, Size: 1336 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02  8:13 ` John Smith
@ 2011-07-02 11:30   ` Matt Corallo
  2011-07-02 11:49     ` John Smith
  0 siblings, 1 reply; 16+ messages in thread
From: Matt Corallo @ 2011-07-02 11:30 UTC (permalink / raw)
  To: bitcoin-development

[-- Attachment #1: Type: text/plain, Size: 2257 bytes --]

I dont think anyone really made a conscious decision one way or the
other, someone submitted an autotools patch and thus people started
talking about when we were going to merge autotools.  That said, the
autotools stuff needs redone before it would be merged anyway. So it
would be up to whoever writes the build system. However, autotools is
more standard than CMake, and since its a shell script, you dont have to
install CMake which doesnt come standard on almost any distros (AFAIK).

Matt

On Sat, 2011-07-02 at 08:13 +0000, John Smith wrote:
> 
> Also important: it supports cross compiling:
> 
> http://www.cmake.org/Wiki/CMake_Cross_Compiling
> 
> JS
> 
> On Sat, Jul 2, 2011 at 7:29 AM, John Smith <witchspace81@gmail•com>
> wrote:
>         Hello,
>         
>         Why again did we choose for autotools as future build system
>         instead of cmake?
>         
>         - CMake generates native build scripts for Make (all
>         platforms), XCode, Visual Studio. Autoconf only does Make.
>         
>         - CMake has a clearer syntax, m4/autotools is very convoluted
>         
>         - CMake is very fast
>         
>         - CMake is supported natively in Qt Creator in the QT SDK, and
>         is used by many other KDE/QT as well as other open source
>         applications. Many people discourage the use of autotools for
>         new projects.
>         
>         A CMake build system for bitcoin is already integrated into
>         rpcminer, available here:
>         
>         http://luke.dashjr.org/programs/bitcoin/w/puddinpop-bitcoin-pool.git/tree
>         
>         JS
> 
> ------------------------------------------------------------------------------
> All of the data generated in your IT infrastructure is seriously valuable.
> Why? It contains a definitive record of application performance, security 
> threats, fraudulent activity, and more. Splunk takes this data and makes 
> sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-d2d-c2
> _______________________________________________ Bitcoin-development mailing list Bitcoin-development@lists•sourceforge.net https://lists.sourceforge.net/lists/listinfo/bitcoin-development


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02 11:30   ` Matt Corallo
@ 2011-07-02 11:49     ` John Smith
  0 siblings, 0 replies; 16+ messages in thread
From: John Smith @ 2011-07-02 11:49 UTC (permalink / raw)
  To: Matt Corallo; +Cc: bitcoin-development

[-- Attachment #1: Type: text/plain, Size: 686 bytes --]

On Sat, Jul 2, 2011 at 11:30 AM, Matt Corallo <bitcoin-list@bluematt•me>wrote:

> would be up to whoever writes the build system. However, autotools is
> more standard than CMake, and since its a shell script, you dont have to
> install CMake which doesnt come standard on almost any distros (AFAIK).
>

CMake is also very standard, used by many projects, and is available in many
distros.

For debians it's as simple as apt-get install cmake, which is not a big
problem as you need to install the other dependencies (such as boost) as
well to build.

Fedora/redhat also seems to have the package 'cmake'. I don't think there is
any modern distro that doesn't have it as a package.

JS

[-- Attachment #2: Type: text/html, Size: 988 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02  7:29 [Bitcoin-development] Reconsider build system change? John Smith
  2011-07-02  8:13 ` John Smith
@ 2011-07-02 14:50 ` Luke-Jr
  2011-07-02 16:50   ` John Smith
  2011-07-03 10:44 ` Pieter Wuille
  2 siblings, 1 reply; 16+ messages in thread
From: Luke-Jr @ 2011-07-02 14:50 UTC (permalink / raw)
  To: bitcoin-development

On Saturday, July 02, 2011 3:29:04 AM John Smith wrote:
> Why again did we choose for autotools as future build system instead of
> cmake?

I don't really care much either way, but cmake doesn't follow the standard 
build procedure (./configure && make && make install), though I imagine 
./configure could be emulated with some script.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02 14:50 ` Luke-Jr
@ 2011-07-02 16:50   ` John Smith
  2011-07-02 16:55     ` Luke-Jr
  2011-07-02 17:05     ` Douglas Huff
  0 siblings, 2 replies; 16+ messages in thread
From: John Smith @ 2011-07-02 16:50 UTC (permalink / raw)
  To: Luke-Jr; +Cc: bitcoin-development

[-- Attachment #1: Type: text/plain, Size: 657 bytes --]

On Sat, Jul 2, 2011 at 2:50 PM, Luke-Jr <luke@dashjr•org> wrote:

> On Saturday, July 02, 2011 3:29:04 AM John Smith wrote:
> > Why again did we choose for autotools as future build system instead of
> > cmake?
>
> I don't really care much either way, but cmake doesn't follow the standard
> build procedure (./configure && make && make install), though I imagine
> ./configure could be emulated with some script.
>

It would change the sequence to

cmake . && make && make install

So a shell script named 'configure' that starts 'cmake .' is the most easy
case :-) Probably it'd also need to pass through some command line args, for
example --prefix.

JS

[-- Attachment #2: Type: text/html, Size: 1024 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02 16:50   ` John Smith
@ 2011-07-02 16:55     ` Luke-Jr
  2011-07-02 17:05     ` Douglas Huff
  1 sibling, 0 replies; 16+ messages in thread
From: Luke-Jr @ 2011-07-02 16:55 UTC (permalink / raw)
  To: John Smith; +Cc: bitcoin-development

On Saturday, July 02, 2011 12:50:14 PM John Smith wrote:
> On Sat, Jul 2, 2011 at 2:50 PM, Luke-Jr <luke@dashjr•org> wrote:
> > On Saturday, July 02, 2011 3:29:04 AM John Smith wrote:
> > > Why again did we choose for autotools as future build system instead of
> > > cmake?
> > 
> > I don't really care much either way, but cmake doesn't follow the
> > standard build procedure (./configure && make && make install), though I
> > imagine ./configure could be emulated with some script.
> 
> It would change the sequence to
> 
> cmake . && make && make install
> 
> So a shell script named 'configure' that starts 'cmake .' is the most easy
> case :-) Probably it'd also need to pass through some command line args,
> for example --prefix.

And --datadir --mandir --randomobscurecrap CXXFLAGS=-O9, etc
Don't forget --help listing all the useful options... that's the big thing I 
miss with CMake-stuff.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02 16:50   ` John Smith
  2011-07-02 16:55     ` Luke-Jr
@ 2011-07-02 17:05     ` Douglas Huff
       [not found]       ` <CAJNQ0su0jtaFz6abS+H24d7dqKoWkugct1yQLeVyXTgr0rkXXA@mail.gmail.com>
  1 sibling, 1 reply; 16+ messages in thread
From: Douglas Huff @ 2011-07-02 17:05 UTC (permalink / raw)
  To: John Smith; +Cc: bitcoin-development

Cmake is just as bad as autotools, just with a different syntax and more "buzz" behind it right this second. I don't see any advantage to it over autotools unless you're not familiar with either and even then I wouldn't really call it an advantage. It's just different.

It also requires a dependency that isn't installed by default anywhere, as already mentioned, and is less known outside of some obscure qt/kde circles and so finding people who are familiar with it and are willing to maintain it is more difficult. 

Autotools is the devil you know.

You'll probably throw out that mysql and compiz have switched to it, but really, those projects aren't something that should be emulated by anyone. Ever.

On Jul 2, 2011, at 11:50 AM, John Smith wrote:

> On Sat, Jul 2, 2011 at 2:50 PM, Luke-Jr <luke@dashjr•org> wrote:
> On Saturday, July 02, 2011 3:29:04 AM John Smith wrote:
> > Why again did we choose for autotools as future build system instead of
> > cmake?
> 
> I don't really care much either way, but cmake doesn't follow the standard
> build procedure (./configure && make && make install), though I imagine
> ./configure could be emulated with some script.
> 
> It would change the sequence to
> 
> cmake . && make && make install
> 
> So a shell script named 'configure' that starts 'cmake .' is the most easy case :-) Probably it'd also need to pass through some command line args, for example --prefix.
> 
> JS
> 
> ------------------------------------------------------------------------------
> All of the data generated in your IT infrastructure is seriously valuable.
> Why? It contains a definitive record of application performance, security 
> threats, fraudulent activity, and more. Splunk takes this data and makes 
> sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-d2d-c2_______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development

-- 
Douglas Huff





^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Bitcoin-development]  Reconsider build system change?
       [not found]       ` <CAJNQ0su0jtaFz6abS+H24d7dqKoWkugct1yQLeVyXTgr0rkXXA@mail.gmail.com>
@ 2011-07-02 17:31         ` John Smith
  2011-07-02 17:45           ` Douglas Huff
  0 siblings, 1 reply; 16+ messages in thread
From: John Smith @ 2011-07-02 17:31 UTC (permalink / raw)
  To: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1314 bytes --]

On Sat, Jul 2, 2011 at 5:05 PM, Douglas Huff <dhuff@jrbobdobbs•org> wrote:

> Cmake is just as bad as autotools, just with a different syntax and more
> "buzz" behind it right this second. I don't see any advantage to it over
> autotools unless you're not familiar with either and even then I wouldn't
> really call it an advantage. It's just different.
>

So, what about native build script generation for other platforms? autotools
can only generate makefiles (with at least two intermediate code generation
steps), which is quite limited.

IMO cmake is simple and elegant compared to the autotools monster. I don't
see why it would be "just as bad". And I have quite some experience with
both systems. Autotools is a hell to debug. cmake certainly isn't perfect,
but at least it's a leap forward.

It also requires a dependency that isn't installed by default anywhere, as
> already mentioned, and is less known outside of some obscure qt/kde circles
> and so finding people who are familiar with it and are willing to maintain
> it is more difficult.
>

Yes, apart from that only obscure projects such as LLVM,  Blender, and
OpenCV are using it. Nothing of any importance.

BTW for cmake there is "ccmake" which is even better than configure --help
as it offers an interactive interface for configuration.

JS

[-- Attachment #2: Type: text/html, Size: 1908 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02 17:31         ` John Smith
@ 2011-07-02 17:45           ` Douglas Huff
  2011-07-02 18:03             ` John Smith
  0 siblings, 1 reply; 16+ messages in thread
From: Douglas Huff @ 2011-07-02 17:45 UTC (permalink / raw)
  To: John Smith; +Cc: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1602 bytes --]

On Jul 2, 2011, at 12:31 PM, John Smith wrote:
> So, what about native build script generation for other platforms? autotools can only generate makefiles (with at least two intermediate code generation steps), which is quite limited. 

This would be true if gmake didn't build/run basically everywhere; but, it does.

> IMO cmake is simple and elegant compared to the autotools monster. I don't see why it would be "just as bad". And I have quite some experience with both systems. Autotools is a hell to debug. cmake certainly isn't perfect, but at least it's a leap forward.

Don't get me wrong, I'm not defending autotools' design or implementation. It is; however, more ubiquitous and understood by a much wider audience.

> BTW for cmake there is "ccmake" which is even better than configure --help as it offers an interactive interface for configuration.

I would say that's actually a mark against cmake. If you need a gui to select build options because your cli doesn't have proper help output something is wrong.

If you're willing to setup and maintain a cmake build environment I wouldn't say it should be rejected outright. Speculating about it without an implementation to compare seems like a waste of time.

Especially when jaromil already has a mostly-functional autotools setup. It needs tweaking still and some changes to catch up and rebase, but it works. He also already did the tedious work to rearrange the source tree to make adding any auto-configuration tool for the build environment easy to drop in place. (Which is already merged.)

-- 
Douglas Huff



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 881 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02 17:45           ` Douglas Huff
@ 2011-07-02 18:03             ` John Smith
  2011-07-02 18:12               ` Luke-Jr
  0 siblings, 1 reply; 16+ messages in thread
From: John Smith @ 2011-07-02 18:03 UTC (permalink / raw)
  To: Douglas Huff; +Cc: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1098 bytes --]

On Sat, Jul 2, 2011 at 5:45 PM, Douglas Huff <dhuff@jrbobdobbs•org> wrote:

> On Jul 2, 2011, at 12:31 PM, John Smith wrote:
> > So, what about native build script generation for other platforms?
> autotools can only generate makefiles (with at least two intermediate code
> generation steps), which is quite limited.
>
> This would be true if gmake didn't build/run basically everywhere; but, it
> does.
>

It doesn't for the native build systems on at least Windows and OSX. Yes,
you can get gmake to run, but it's a hack.


> I would say that's actually a mark against cmake. If you need a gui to
> select build options because your cli doesn't have proper help output
> something is wrong.
>

You don't need to use the UI. It's just a convenience. Command line can
simply be used if you want.


> If you're willing to setup and maintain a cmake build environment I
> wouldn't say it should be rejected outright. Speculating about it without an
> implementation to compare seems like a waste of time.
>

As I said in my opening post, there *is* a cmake build system implemented
for bitcoin.

JS

[-- Attachment #2: Type: text/html, Size: 1740 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02 18:03             ` John Smith
@ 2011-07-02 18:12               ` Luke-Jr
  0 siblings, 0 replies; 16+ messages in thread
From: Luke-Jr @ 2011-07-02 18:12 UTC (permalink / raw)
  To: bitcoin-development

On Saturday, July 02, 2011 2:03:49 PM John Smith wrote:
> As I said in my opening post, there *is* a cmake build system implemented
> for bitcoin.

puddinpop's stuff is all ancient/obsolete. If you want people to consider it, 
you should probably make a new branch.



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-02  7:29 [Bitcoin-development] Reconsider build system change? John Smith
  2011-07-02  8:13 ` John Smith
  2011-07-02 14:50 ` Luke-Jr
@ 2011-07-03 10:44 ` Pieter Wuille
  2011-07-07  8:49   ` Pieter Wuille
  2 siblings, 1 reply; 16+ messages in thread
From: Pieter Wuille @ 2011-07-03 10:44 UTC (permalink / raw)
  To: John Smith; +Cc: Bitcoin Dev

On Sat, Jul 02, 2011 at 07:29:04AM +0000, John Smith wrote:
> Hello,
> 
> Why again did we choose for autotools as future build system instead of
> cmake?

I have no preference for any particular project build system. If a system
* is easy enough to set up (included in standard repositories, eg.)
* allows building of the bitcoin codebase on several linux distro's
* does cross-compilation to windows
* supports osx
* is easy to maintain
* it is not too hard to adapt other GUI's to use it (bitcoin-qt,
  maybe others as well, i hear about a cocoabitcoin?)
* gets implemented and tested to support all of the above
.. i have no problem with choosing that system for future versions.

-- 
Pieter




^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-03 10:44 ` Pieter Wuille
@ 2011-07-07  8:49   ` Pieter Wuille
  2011-07-07 16:51     ` Jeff Garzik
  2011-07-07 17:40     ` John Smith
  0 siblings, 2 replies; 16+ messages in thread
From: Pieter Wuille @ 2011-07-07  8:49 UTC (permalink / raw)
  To: Bitcoin Dev

On Sun, Jul 03, 2011 at 12:44:17PM +0200, Pieter Wuille wrote:
> I have no preference for any particular project build system. If a system
> * is easy enough to set up (included in standard repositories, eg.)
> * allows building of the bitcoin codebase on several linux distro's
> * does cross-compilation to windows
> * supports osx
> * is easy to maintain
> * it is not too hard to adapt other GUI's to use it (bitcoin-qt,
>   maybe others as well, i hear about a cocoabitcoin?)
> * gets implemented and tested to support all of the above
> .. i have no problem with choosing that system for future versions.

Other opinions? Someone actually interested in writing a cmake configuration
for bitcoin?

-- 
Pieter



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-07  8:49   ` Pieter Wuille
@ 2011-07-07 16:51     ` Jeff Garzik
  2011-07-07 17:40     ` John Smith
  1 sibling, 0 replies; 16+ messages in thread
From: Jeff Garzik @ 2011-07-07 16:51 UTC (permalink / raw)
  To: Pieter Wuille; +Cc: Bitcoin Dev

On Thu, Jul 7, 2011 at 4:49 AM, Pieter Wuille <pieter.wuille@gmail•com> wrote:
> On Sun, Jul 03, 2011 at 12:44:17PM +0200, Pieter Wuille wrote:
>> I have no preference for any particular project build system. If a system
>> * is easy enough to set up (included in standard repositories, eg.)
>> * allows building of the bitcoin codebase on several linux distro's
>> * does cross-compilation to windows
>> * supports osx
>> * is easy to maintain
>> * it is not too hard to adapt other GUI's to use it (bitcoin-qt,
>>   maybe others as well, i hear about a cocoabitcoin?)
>> * gets implemented and tested to support all of the above
>> .. i have no problem with choosing that system for future versions.
>
> Other opinions? Someone actually interested in writing a cmake configuration
> for bitcoin?

autotools is indeed "the devil we know" which works automatically on
all supported platforms save VC++  It is also the easiest to package,
as all distros already have macros and scripts specifically designed
to integrate autotools packages into their package build systems.
cmake simply does not have that level of uptake.

-- 
Jeff Garzik
exMULTI, Inc.
jgarzik@exmulti•com



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Bitcoin-development] Reconsider build system change?
  2011-07-07  8:49   ` Pieter Wuille
  2011-07-07 16:51     ` Jeff Garzik
@ 2011-07-07 17:40     ` John Smith
  1 sibling, 0 replies; 16+ messages in thread
From: John Smith @ 2011-07-07 17:40 UTC (permalink / raw)
  To: Pieter Wuille; +Cc: Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 355 bytes --]

Hello Pieter,

Other opinions? Someone actually interested in writing a cmake configuration
> for bitcoin?
>

I'm willing to do it, but the priority is not that high.

I'm currently sticking with qmake, as apart from boost library name
auto-detection, I had no problems with it and it works well enough for a
relatively small project such as bitcoin.

JS

[-- Attachment #2: Type: text/html, Size: 560 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2011-07-07 17:40 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-02  7:29 [Bitcoin-development] Reconsider build system change? John Smith
2011-07-02  8:13 ` John Smith
2011-07-02 11:30   ` Matt Corallo
2011-07-02 11:49     ` John Smith
2011-07-02 14:50 ` Luke-Jr
2011-07-02 16:50   ` John Smith
2011-07-02 16:55     ` Luke-Jr
2011-07-02 17:05     ` Douglas Huff
     [not found]       ` <CAJNQ0su0jtaFz6abS+H24d7dqKoWkugct1yQLeVyXTgr0rkXXA@mail.gmail.com>
2011-07-02 17:31         ` John Smith
2011-07-02 17:45           ` Douglas Huff
2011-07-02 18:03             ` John Smith
2011-07-02 18:12               ` Luke-Jr
2011-07-03 10:44 ` Pieter Wuille
2011-07-07  8:49   ` Pieter Wuille
2011-07-07 16:51     ` Jeff Garzik
2011-07-07 17:40     ` John Smith

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox