~ruther/guix-local

977f03ffd31a3b754c26be7bed0f5ef7e063b843 — Ludovic Courtès 12 years ago b4f0bb1
build-system/cmake: Build out of source tree by default.

* guix/build-system/cmake.scm (cmake-build): Change 'out-of-source?' to
  default to #t.
* guix/build/cmake-build-system.scm (configure): Add 'out-of-source?'
  keyword parameter and honor it.
2 files changed, 21 insertions(+), 11 deletions(-)

M guix/build-system/cmake.scm
M guix/build/cmake-build-system.scm
M guix/build-system/cmake.scm => guix/build-system/cmake.scm +1 -1
@@ 48,7 48,7 @@
                     (search-paths '())
                     (make-flags ''())
                     (cmake (default-cmake))
                     (out-of-source? #f)
                     (out-of-source? #t)
                     (tests? #t)
                     (test-target "test")
                     (parallel-build? #t) (parallel-tests? #f)

M guix/build/cmake-build-system.scm => guix/build/cmake-build-system.scm +20 -10
@@ 31,18 31,28 @@
;;
;; Code:

(define* (configure #:key outputs (configure-flags '())
(define* (configure #:key outputs (configure-flags '()) (out-of-source? #t)
                    #:allow-other-keys)
  "Configure the given package."
  (let ((out (assoc-ref outputs "out")))
    (if (file-exists? "CMakeLists.txt")
        (let ((args `(,(string-append "-DCMAKE_INSTALL_PREFIX=" out)
                      ,@configure-flags)))
          (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
          (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH"))
          (format #t "running 'cmake' with arguments ~s~%" args)
          (zero? (apply system* "cmake" args)))
        (error "no CMakeLists.txt found"))))
  (let* ((out        (assoc-ref outputs "out"))
         (abs-srcdir (getcwd))
         (srcdir     (if out-of-source?
                         (string-append "../" (basename abs-srcdir))
                         ".")))
    (format #t "source directory: ~s (relative from build: ~s)~%"
            abs-srcdir srcdir)
    (when out-of-source?
      (mkdir "../build")
      (chdir "../build"))
    (format #t "build directory: ~s~%" (getcwd))

    (let ((args `(,srcdir
                  ,(string-append "-DCMAKE_INSTALL_PREFIX=" out)
                  ,@configure-flags)))
      (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
      (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH"))
      (format #t "running 'cmake' with arguments ~s~%" args)
      (zero? (apply system* "cmake" args)))))

(define* (check #:key (tests? #t) (parallel-tests? #t) (test-target "test")
                #:allow-other-keys)