CMake build system for QuantLib

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

CMake build system for QuantLib

Joao Paulo Magalhaes-2
Hello All,

I have created a CMake build system for QuantLib, retaining the
behaviour of the current autotools build system: the same
configuration options are provided, and the resulting install is the
same (apart from one or two wrinkles which are not yet sorted out). My
intent is to provide the QuantLib user with both build systems.

Would you be interested in trying it out? Is it OK if I send the
archive as an attachment?

Best regards,
João Paulo Magalhães

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: CMake build system for QuantLib

Luigi Ballabio
On Wed, Jul 25, 2012 at 4:55 PM, Joao Paulo Magalhaes
<[hidden email]> wrote:
> I have created a CMake build system for QuantLib, retaining the
> behaviour of the current autotools build system: the same
> configuration options are provided, and the resulting install is the
> same (apart from one or two wrinkles which are not yet sorted out). My
> intent is to provide the QuantLib user with both build systems.
>
> Would you be interested in trying it out? Is it OK if I send the
> archive as an attachment?

Sure.  The archive contains the cmake files, not the whole distribution, right?

Luigi

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: CMake build system for QuantLib

Joao Paulo Magalhaes-2
In reply to this post by Joao Paulo Magalhaes-2

On 07/25/2012 04:00 PM, Luigi Ballabio wrote:
> On Wed, Jul 25, 2012 at 4:55 PM, Joao Paulo Magalhaes
> [hidden email] wrote:
>> I have created a CMake build system for QuantLib, retaining the
>> behaviour of the current autotools build system: the same
>> configuration options are provided, and the resulting install is the
>> same (apart from one or two wrinkles which are not yet sorted out). My
>> intent is to provide the QuantLib user with both build systems.
>>
>> Would you be interested in trying it out? Is it OK if I send the
>> archive as an attachment?
>
> Sure.  The archive contains the cmake files, not the whole distribution, right?
>

Right. The archive contains only the following files:


QuantLib-1.2-cmake/CMakeLists.txt             # the main cmake file: provides the options and builds the library
QuantLib-1.2-cmake/files.cmake                # the list of source files in ql/
QuantLib-1.2-cmake/config.cmake               # process the user options and creates ql/config.hpp
QuantLib-1.2-cmake/ql/config.hpp.cmake        # the input to obtain ql/config.hpp
QuantLib-1.2-cmake/Examples/CMakeLists.txt    # deals with examples
QuantLib-1.2-cmake/test-suite/CMakeLists.txt  # deals with the test suite
QuantLib-1.2-cmake/test-suite/files.cmake     # the list of source files in the test suite
QuantLib-1.2-cmake/test-suite/main.cpp        # see below


To get things ready to roll, you need first to put the files in the archive into a clean QuantLib source tree:

# untar the archive in a place of your choice
cd /path/to ; tar xvfz QuantLib-1.2-cmake.tar.gz    

# copy its contents into your fresh & clean QuantLib folder:
cd /to/your/QuantLib-1.2 ; cp -r /path/to/QuantLib-1.2-cmake/* .


Instructions for a console build & install.

I presume most of you are already familiar with usage of cmake, but I'll outline the procedure just in case.

# configure & build (out of source)
cd /to/your/QuantLib-1.2/build
cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder ..         # note the path to the location of the main CMakeLists.txt
make

# install
make install

I've setup the options so that defaults are the same as in autotools. So the above procedure won't compile examples or benchmarks. To get that, you can either use the command line or a GUI. Using the command line, the cmake command becomes

cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder -DQuantLib_WITH_EXAMPLES -DQuantLib_WITH_BENCHMARK ..

with all the rest being equal. Each -D above is the definition of the value of a cmake option. If, for example, you want to disable deprecated code, set the value of the option QuantLib_ENABLE_DEPRECATED_CODE to OFF using .

cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder -DQuantLib_WITH_EXAMPLES -DQuantLib_WITH_BENCHMARK -DQuantLib_ENABLE_DEPRECATED_CODE=OFF ..

Since it can be bothersome to remember all the names for these options, the cmake GUI can be handy. For the GUI, there are two choices: a curses-based console GUI (ccmake in ubuntu) and a Qt-based GUI (cmake-gui). I'll start with the curses GUI. The cmake command now can simply be instead:

ccmake ..

Now you'll be able to see and edit the available options, following the instructions at the bottom of the screen. Basically, the procedure consists of iterating between setting an option (or options) and pressing 'c' to configure - until nothing changes (please note that some options activate other options). Then hit 'g' to generate the Makefiles, and exit. The procedure is exactly the same for the Qt GUI, only now you must use the mouse to carry it out.


CAVEAT: There are currently two places which raise issues of compatibility of cmake with autotools (which I hope you'll help me fix):

- the obtaining of ql/config.hpp . Currently I've added ql/config.hpp.cmake which is processed into config.hpp . This is done from the file config.cmake . As it stands, this is not actually incompatible, but it will always require sync between changes to any input config.hpp.

- in the test suite, autotools creates automatically a main.cpp. It was not easy for me to see the reason for this, so I've put it statically in the test folder.

It is because of these caveats that I started above by advising use of a clean QuantLib tree. Nevertheless, I was able to have a tree with both build systems working.


OK - done for now. Please tell me what you think of this.

Best regards,
João Paulo Magalhães




------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev

QuantLib-1.2-cmake.tar.gz (27K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: CMake build system for QuantLib

Luigi Ballabio
Thanks.  I'll try thjs when I get back from vacations.  In the
meantime, if anybody wants to try it out and report, please do.

Luigi

P.S. About test-suite/main.cpp: it is needed or not depending on the
version of the Boost libraries (I don't remember the details now, so
the configure check might not be needed anymore.  Or maybe you could
provide a switch to turn on and off the generation?)


On Thu, Jul 26, 2012 at 12:10 AM, Joao Paulo Magalhaes
<[hidden email]> wrote:

>
> On 07/25/2012 04:00 PM, Luigi Ballabio wrote:
>> On Wed, Jul 25, 2012 at 4:55 PM, Joao Paulo Magalhaes
>> <[hidden email]> wrote:
>>> I have created a CMake build system for QuantLib, retaining the
>>> behaviour of the current autotools build system: the same
>>> configuration options are provided, and the resulting install is the
>>> same (apart from one or two wrinkles which are not yet sorted out). My
>>> intent is to provide the QuantLib user with both build systems.
>>>
>>> Would you be interested in trying it out? Is it OK if I send the
>>> archive as an attachment?
>>
>> Sure.  The archive contains the cmake files, not the whole distribution,
>> right?
>>
>
> Right. The archive contains only the following files:
>
>
> QuantLib-1.2-cmake/CMakeLists.txt             # the main cmake file:
> provides the options and builds the library
> QuantLib-1.2-cmake/files.cmake                # the list of source files in
> ql/
> QuantLib-1.2-cmake/config.cmake               # process the user options and
> creates ql/config.hpp
> QuantLib-1.2-cmake/ql/config.hpp.cmake        # the input to obtain
> ql/config.hpp
> QuantLib-1.2-cmake/Examples/CMakeLists.txt    # deals with examples
> QuantLib-1.2-cmake/test-suite/CMakeLists.txt  # deals with the test suite
> QuantLib-1.2-cmake/test-suite/files.cmake     # the list of source files in
> the test suite
> QuantLib-1.2-cmake/test-suite/main.cpp        # see below
>
>
> To get things ready to roll, you need first to put the files in the archive
> into a clean QuantLib source tree:
>
> # untar the archive in a place of your choice
> cd /path/to ; tar xvfz QuantLib-1.2-cmake.tar.gz
>
> # copy its contents into your fresh & clean QuantLib folder:
> cd /to/your/QuantLib-1.2 ; cp -r /path/to/QuantLib-1.2-cmake/* .
>
>
> Instructions for a console build & install.
>
> I presume most of you are already familiar with usage of cmake, but I'll
> outline the procedure just in case.
>
> # configure & build (out of source)
> cd /to/your/QuantLib-1.2/build
> cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder ..         # note the path
> to the location of the main CMakeLists.txt
> make
>
> # install
> make install
>
> I've setup the options so that defaults are the same as in autotools. So the
> above procedure won't compile examples or benchmarks. To get that, you can
> either use the command line or a GUI. Using the command line, the cmake
> command becomes
>
> cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder -DQuantLib_WITH_EXAMPLES
> -DQuantLib_WITH_BENCHMARK ..
>
> with all the rest being equal. Each -D above is the definition of the value
> of a cmake option. If, for example, you want to disable deprecated code, set
> the value of the option QuantLib_ENABLE_DEPRECATED_CODE to OFF using .
>
> cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder -DQuantLib_WITH_EXAMPLES
> -DQuantLib_WITH_BENCHMARK -DQuantLib_ENABLE_DEPRECATED_CODE=OFF ..
>
> Since it can be bothersome to remember all the names for these options, the
> cmake GUI can be handy. For the GUI, there are two choices: a curses-based
> console GUI (ccmake in ubuntu) and a Qt-based GUI (cmake-gui). I'll start
> with the curses GUI. The cmake command now can simply be instead:
>
> ccmake ..
>
> Now you'll be able to see and edit the available options, following the
> instructions at the bottom of the screen. Basically, the procedure consists
> of iterating between setting an option (or options) and pressing 'c' to
> configure - until nothing changes (please note that some options activate
> other options). Then hit 'g' to generate the Makefiles, and exit. The
> procedure is exactly the same for the Qt GUI, only now you must use the
> mouse to carry it out.
>
>
> CAVEAT: There are currently two places which raise issues of compatibility
> of cmake with autotools (which I hope you'll help me fix):
>
> - the obtaining of ql/config.hpp . Currently I've added ql/config.hpp.cmake
> which is processed into config.hpp . This is done from the file config.cmake
> . As it stands, this is not actually incompatible, but it will always
> require sync between changes to any input config.hpp.
>
> - in the test suite, autotools creates automatically a main.cpp. It was not
> easy for me to see the reason for this, so I've put it statically in the
> test folder.
>
> It is because of these caveats that I started above by advising use of a
> clean QuantLib tree. Nevertheless, I was able to have a tree with both build
> systems working.
>
>
> OK - done for now. Please tell me what you think of this.
>
>
> Best regards,
> João Paulo Magalhães
>
>
>
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> QuantLib-dev mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/quantlib-dev
>

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev
Reply | Threaded
Open this post in threaded view
|

Re: CMake build system for QuantLib

Joao Paulo Magalhaes-2
Hello all,

I have setup a git repo for this project in https://github.com/jppm/QuantLib-cmake.
If you prefer, you can download an archive:

zip: https://github.com/jppm/QuantLib-cmake/zipball/master

tar.gz: https://github.com/jppm/QuantLib-cmake/tarball/master

Best,
João


On 07/26/2012 08:06 AM, Luigi Ballabio wrote:
Thanks.  I'll try thjs when I get back from vacations.  In the
meantime, if anybody wants to try it out and report, please do.

Luigi

P.S. About test-suite/main.cpp: it is needed or not depending on the
version of the Boost libraries (I don't remember the details now, so
the configure check might not be needed anymore.  Or maybe you could
provide a switch to turn on and off the generation?)


On Thu, Jul 26, 2012 at 12:10 AM, Joao Paulo Magalhaes
[hidden email] wrote:
On 07/25/2012 04:00 PM, Luigi Ballabio wrote:
On Wed, Jul 25, 2012 at 4:55 PM, Joao Paulo Magalhaes
[hidden email] wrote:
I have created a CMake build system for QuantLib, retaining the
behaviour of the current autotools build system: the same
configuration options are provided, and the resulting install is the
same (apart from one or two wrinkles which are not yet sorted out). My
intent is to provide the QuantLib user with both build systems.

Would you be interested in trying it out? Is it OK if I send the
archive as an attachment?
Sure.  The archive contains the cmake files, not the whole distribution,
right?

Right. The archive contains only the following files:


QuantLib-1.2-cmake/CMakeLists.txt             # the main cmake file:
provides the options and builds the library
QuantLib-1.2-cmake/files.cmake                # the list of source files in
ql/
QuantLib-1.2-cmake/config.cmake               # process the user options and
creates ql/config.hpp
QuantLib-1.2-cmake/ql/config.hpp.cmake        # the input to obtain
ql/config.hpp
QuantLib-1.2-cmake/Examples/CMakeLists.txt    # deals with examples
QuantLib-1.2-cmake/test-suite/CMakeLists.txt  # deals with the test suite
QuantLib-1.2-cmake/test-suite/files.cmake     # the list of source files in
the test suite
QuantLib-1.2-cmake/test-suite/main.cpp        # see below


To get things ready to roll, you need first to put the files in the archive
into a clean QuantLib source tree:

# untar the archive in a place of your choice
cd /path/to ; tar xvfz QuantLib-1.2-cmake.tar.gz

# copy its contents into your fresh & clean QuantLib folder:
cd /to/your/QuantLib-1.2 ; cp -r /path/to/QuantLib-1.2-cmake/* .


Instructions for a console build & install.

I presume most of you are already familiar with usage of cmake, but I'll
outline the procedure just in case.

# configure & build (out of source)
cd /to/your/QuantLib-1.2/build
cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder ..         # note the path
to the location of the main CMakeLists.txt
make

# install
make install

I've setup the options so that defaults are the same as in autotools. So the
above procedure won't compile examples or benchmarks. To get that, you can
either use the command line or a GUI. Using the command line, the cmake
command becomes

cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder -DQuantLib_WITH_EXAMPLES
-DQuantLib_WITH_BENCHMARK ..

with all the rest being equal. Each -D above is the definition of the value
of a cmake option. If, for example, you want to disable deprecated code, set
the value of the option QuantLib_ENABLE_DEPRECATED_CODE to OFF using .

cmake -DCMAKE_INSTALL_PREFIX=/your/install/folder -DQuantLib_WITH_EXAMPLES
-DQuantLib_WITH_BENCHMARK -DQuantLib_ENABLE_DEPRECATED_CODE=OFF ..

Since it can be bothersome to remember all the names for these options, the
cmake GUI can be handy. For the GUI, there are two choices: a curses-based
console GUI (ccmake in ubuntu) and a Qt-based GUI (cmake-gui). I'll start
with the curses GUI. The cmake command now can simply be instead:

ccmake ..

Now you'll be able to see and edit the available options, following the
instructions at the bottom of the screen. Basically, the procedure consists
of iterating between setting an option (or options) and pressing 'c' to
configure - until nothing changes (please note that some options activate
other options). Then hit 'g' to generate the Makefiles, and exit. The
procedure is exactly the same for the Qt GUI, only now you must use the
mouse to carry it out.


CAVEAT: There are currently two places which raise issues of compatibility
of cmake with autotools (which I hope you'll help me fix):

- the obtaining of ql/config.hpp . Currently I've added ql/config.hpp.cmake
which is processed into config.hpp . This is done from the file config.cmake
. As it stands, this is not actually incompatible, but it will always
require sync between changes to any input config.hpp.

- in the test suite, autotools creates automatically a main.cpp. It was not
easy for me to see the reason for this, so I've put it statically in the
test folder.

It is because of these caveats that I started above by advising use of a
clean QuantLib tree. Nevertheless, I was able to have a tree with both build
systems working.


OK - done for now. Please tell me what you think of this.


Best regards,
João Paulo Magalhães




------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev



------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev