summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-10-04 22:59:38 +0200
committerLudovic Courtès <ludo@gnu.org>2014-10-04 22:59:38 +0200
commit9849cfc12cada96759af779a105f6999d6cc04c8 (patch)
tree64c1b60ffebda7015affa3d6119358622d966116
parent3dcd78109c62b6837c4397ea60087d13e5f8814d (diff)
downloadguix-9849cfc12cada96759af779a105f6999d6cc04c8.tar.gz
build-system/cmake: Add #:build-type parameter, default to "RelWithDebInfo".
* guix/build-system/cmake.scm (cmake-build): Add #:build-type.  Pass it
  in BUILDER.
* guix/build/cmake-build-system.scm (configure): Add #:build-type
  parameter and honor it.
* doc/guix.texi (Build Systems): Document #:configure-flags and
  #:build-type for CMake.
-rw-r--r--doc/guix.texi7
-rw-r--r--guix/build-system/cmake.scm2
-rw-r--r--guix/build/cmake-build-system.scm7
3 files changed, 15 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 5e8f8e6eb5..c75ca0c2c8 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1621,6 +1621,13 @@ implements the build procedure for packages using the
 It automatically adds the @code{cmake} package to the set of inputs.
 Which package is used can be specified with the @code{#:cmake}
 parameter.
+
+The @code{#:configure-flags} parameter is taken as a list of flags
+passed to the @command{cmake} command.  The @code{#:build-type}
+parameter specifies in abstract terms the flags passed to the compiler;
+it defaults to @code{"RelWithDebInfo"} (short for ``release mode with
+debugging information''), which roughly means that code is compiled with
+@code{-O2 -g}, as is the case for Autoconf-based packages by default.
 @end defvr
 
 @defvr {Scheme Variable} python-build-system
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index 0fc7b62c1b..5673ad5aeb 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -49,6 +49,7 @@
                      (make-flags ''())
                      (cmake (default-cmake))
                      (out-of-source? #t)
+                     (build-type "RelWithDebInfo")
                      (tests? #t)
                      (test-target "test")
                      (parallel-build? #t) (parallel-tests? #f)
@@ -83,6 +84,7 @@ provides a 'CMakeLists.txt' file as its build system."
                     #:configure-flags ,configure-flags
                     #:make-flags ,make-flags
                     #:out-of-source? ,out-of-source?
+                    #:build-type ,build-type
                     #:tests? ,tests?
                     #:test-target ,test-target
                     #:parallel-build? ,parallel-build?
diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
index 7d60ab7aa9..74b4f01425 100644
--- a/guix/build/cmake-build-system.scm
+++ b/guix/build/cmake-build-system.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;;
@@ -32,6 +32,7 @@
 ;; Code:
 
 (define* (configure #:key outputs (configure-flags '()) (out-of-source? #t)
+                    build-type
                     #:allow-other-keys)
   "Configure the given package."
   (let* ((out        (assoc-ref outputs "out"))
@@ -47,6 +48,10 @@
     (format #t "build directory: ~s~%" (getcwd))
 
     (let ((args `(,srcdir
+                  ,@(if build-type
+                        (list (string-append "-DCMAKE_BUILD_TYPE="
+                                             build-type))
+                        '())
                   ,(string-append "-DCMAKE_INSTALL_PREFIX=" out)
                   ;; add input libraries to rpath
                   "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"