diff options
Diffstat (limited to 'gnu/packages/cmake.scm')
-rw-r--r-- | gnu/packages/cmake.scm | 254 |
1 files changed, 124 insertions, 130 deletions
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 87fde01f63..7f51c02b8a 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -31,6 +31,7 @@ (define-module (gnu packages cmake) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix utils) @@ -99,8 +100,7 @@ using the CMake build system.") (lambda _ (delete-file "Auxiliary/cmake-mode.el") (substitute* "Auxiliary/CMakeLists.txt" - ((".*cmake-mode.el.*") "")) - #t)) + ((".*cmake-mode.el.*") "")))) ,@(if (target-x86-32?) '((add-after 'unpack 'skip-cpack-txz-test (lambda _ @@ -124,8 +124,7 @@ using the CMake build system.") "Source/cmExecProgramCommand.cxx" "Tests/CMakeLists.txt" "Tests/RunCMake/File_Generate/RunCMakeTest.cmake") - (("/bin/sh") (which "sh"))) - #t)))) + (("/bin/sh") (which "sh"))))))) (define %common-disabled-tests '(;; This test copies libgcc_s.so.1 from GCC and tries to modify its RPATH, @@ -143,6 +142,8 @@ using the CMake build system.") ;; be available along with the required headers. "Utilities/cmlibarchive/libarchive/archive_getdate.c" "Utilities/cmlibarchive/libarchive/archive_getdate.h" + ;; ELF headers. + "Utilities/cmelf" ;; CMake header wrappers. "Utilities/cm3p")) @@ -151,7 +152,7 @@ using the CMake build system.") (define-public cmake-bootstrap (package (name "cmake-bootstrap") - (version "3.21.4") + (version "3.24.1") (source (origin (method url-fetch) (uri (string-append "https://cmake.org/files/v" @@ -159,71 +160,71 @@ using the CMake build system.") "/cmake-" version ".tar.gz")) (sha256 (base32 - "0y2rk316j9m1iqimgwah0z1ii3ggli65dw6hdn4ckx0mqaahlmyr")) + "0ax83yfis1n74llqhckrbgzcp82pfwx039xs2dgq06nvlivy4ca9")) (patches (search-patches "cmake-curl-certificates.patch")))) (build-system gnu-build-system) (arguments - `(#:test-target "test" - #:configure-flags - (let ((out (assoc-ref %outputs "out")) - (parallel-job-count (number->string (parallel-job-count)))) - (list "--verbose" - (string-append "--parallel=" parallel-job-count) - (string-append "--prefix=" out) - "--system-libs" - "--no-system-jsoncpp" - ;; By default, the man pages and other docs land - ;; in PREFIX/man and PREFIX/doc, but we want them - ;; in share/{man,doc}. Note that unlike - ;; autoconf-generated configure scripts, cmake's - ;; configure prepends "PREFIX/" to what we pass - ;; to --mandir and --docdir. - "--mandir=share/man" - ,(string-append "--docdir=share/doc/cmake-" - (version-major+minor version)) + (list + #:test-target "test" + #:configure-flags + #~(let ((parallel-job-count (number->string (parallel-job-count)))) + (list "--verbose" + (string-append "--parallel=" parallel-job-count) + (string-append "--prefix=" #$output) + "--system-libs" + ;; By default, the man pages and other docs land + ;; in PREFIX/man and PREFIX/doc, but we want them + ;; in share/{man,doc}. Note that unlike + ;; autoconf-generated configure scripts, cmake's + ;; configure prepends "PREFIX/" to what we pass + ;; to --mandir and --docdir. + "--mandir=share/man" + (string-append "--docdir=share/doc/cmake-" + #$(version-major+minor version)) - ;; By default CMake is built without any optimizations. Use - ;; the recommended Release target for a ~2.5x speedup. - "--" "-DCMAKE_BUILD_TYPE=Release")) - #:make-flags - (let ((skipped-tests - (list ,@%common-disabled-tests - "CTestTestSubdir" ; This test fails to build 2 of the 3 tests. - ;; This test fails when ARGS (below) is in use, see - ;; <https://gitlab.kitware.com/cmake/cmake/issues/17165>. - "CTestCoverageCollectGCOV"))) - (list - (string-append - ;; These arguments apply for the tests only. - "ARGS=-j " (number->string (parallel-job-count)) - " --output-on-failure" - " --exclude-regex ^\\(" (string-join skipped-tests "\\|") "\\)$"))) - #:phases - (modify-phases %standard-phases - ,@(%common-build-phases) - (add-before 'configure 'set-paths - (lambda _ - ;; Help cmake's bootstrap process to find system libraries - (begin - (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH")) - (setenv "CMAKE_INCLUDE_PATH" (or (getenv "CPATH") - (getenv "C_INCLUDE_PATH"))) - #t))) - ;; CMake uses its own configure script. - (replace 'configure - (lambda* (#:key (configure-flags '()) #:allow-other-keys) - (apply invoke "./configure" configure-flags)))))) + ;; By default CMake is built without any optimizations. Use + ;; the recommended Release target for a ~2.5x speedup. + "--" "-DCMAKE_BUILD_TYPE=Release")) + #:make-flags + #~(let ((skipped-tests + (list #$@%common-disabled-tests + "CTestTestSubdir" ; This test fails to build 2 of the 3 tests. + ;; This test fails when ARGS (below) is in use, see + ;; <https://gitlab.kitware.com/cmake/cmake/issues/17165>. + "CTestCoverageCollectGCOV"))) + (list + (string-append + ;; These arguments apply for the tests only. + "ARGS=-j " (number->string (parallel-job-count)) + " --output-on-failure" + " --exclude-regex ^\\(" (string-join skipped-tests "\\|") "\\)$"))) + #:phases + #~(modify-phases %standard-phases + #$@(%common-build-phases) + (add-before 'configure 'set-paths + (lambda _ + ;; Help cmake's bootstrap process to find system libraries + (begin + (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH")) + (setenv "CMAKE_INCLUDE_PATH" (or (getenv "CPATH") + (getenv "C_INCLUDE_PATH")))))) + ;; CMake uses its own configure script. + (replace 'configure + (lambda* (#:key (configure-flags '()) #:allow-other-keys) + (apply invoke "./configure" configure-flags)))))) (inputs - `(("bzip2" ,bzip2) - ("curl" ,curl) - ("expat" ,expat) - ("file" ,file) - ("libarchive" ,libarchive) - ,@(if (hurd-target?) - '() - `(("libuv" ,libuv))) ;not supported on the Hurd - ("rhash" ,rhash) - ("zlib" ,zlib))) + (append + (if (hurd-target?) + '() + (list libuv)) ;not supported on the Hurd + (list bzip2 + curl + expat + file + jsoncpp + libarchive + rhash + zlib))) (native-search-paths (list (search-path-specification (variable "CMAKE_PREFIX_PATH") @@ -284,49 +285,45 @@ and workspaces that can be used in the compiler environment of your choice.") "Utilities" lstat) #t)))) - (inputs - (modify-inputs (package-inputs cmake-bootstrap) - (prepend jsoncpp))) (build-system cmake-build-system) (arguments - `(#:configure-flags - (list "-DCMAKE_USE_SYSTEM_LIBRARIES=ON" - (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-" - ,(version-major+minor (package-version - cmake-bootstrap)))) + (list + #:configure-flags + #~(list "-DCMAKE_USE_SYSTEM_LIBRARIES=ON" + (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-" + #$(version-major+minor (package-version + cmake-bootstrap)))) - ;; This is the CMake used in cmake-build-system. Ensure compiler - ;; optimizations are enabled to save size and CPU cycles. - #:build-type "Release" - #:phases - (modify-phases %standard-phases - ,@(%common-build-phases) - (add-after 'install 'delete-help-documentation - (lambda* (#:key outputs #:allow-other-keys) - (delete-file-recursively - (string-append (assoc-ref outputs "out") + ;; This is the CMake used in cmake-build-system. Ensure compiler + ;; optimizations are enabled to save size and CPU cycles. + #:build-type "Release" + #:phases + #~(modify-phases %standard-phases + #$@(%common-build-phases) + (add-after 'install 'delete-help-documentation + (lambda _ + (delete-file-recursively + (string-append #$output "/share/cmake-" - ,(version-major+minor + #$(version-major+minor (package-version cmake-bootstrap)) - "/Help")) - #t)) - (replace 'check - (lambda* (#:key tests? parallel-tests? #:allow-other-keys) - (let ((skipped-tests (list ,@%common-disabled-tests - ;; This test requires the bundled libuv. - "BootstrapTest"))) - (if tests? - (begin - (invoke "ctest" "-j" (if parallel-tests? - (number->string (parallel-job-count)) - "1") - "--exclude-regex" - (string-append "^(" (string-join skipped-tests "|") ")$"))) - (format #t "test suite not run~%")) - #t)))) - ,@(if (%current-target-system) - '() - `(#:cmake ,cmake-bootstrap)))))) + "/Help")))) + (replace 'check + (lambda* (#:key tests? parallel-tests? #:allow-other-keys) + (let ((skipped-tests (list #$@%common-disabled-tests + ;; This test requires the bundled libuv. + "BootstrapTest"))) + (if tests? + (begin + (invoke "ctest" "-j" (if parallel-tests? + (number->string (parallel-job-count)) + "1") + "--exclude-regex" + (string-append "^(" (string-join skipped-tests "|") ")$"))) + (format #t "test suite not run~%")))))) + #:cmake (if (%current-target-system) + cmake-minimal-cross + cmake-bootstrap))))) ;;; The "user-facing" CMake, now with manuals and HTML documentation. (define-public cmake @@ -363,27 +360,25 @@ and workspaces that can be used in the compiler environment of your choice.") ((#:build-type _ #f) "RelWithDebInfo") ((#:configure-flags flags ''()) - `(append (list "-DSPHINX_INFO=ON" "-DSPHINX_MAN=ON" "-DSPHINX_HTML=ON" - (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-" - ,(version-major+minor (package-version - cmake-minimal))) - "-DCMAKE_INFO_DIR=share/info" - "-DCMAKE_MAN_DIR=share/man") - ,flags)) + #~(append (list "-DSPHINX_INFO=ON" "-DSPHINX_MAN=ON" "-DSPHINX_HTML=ON" + (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-" + #$(version-major+minor (package-version + cmake-minimal))) + "-DCMAKE_INFO_DIR=share/info" + "-DCMAKE_MAN_DIR=share/man") + #$flags)) ((#:phases phases) - `(modify-phases ,phases - (delete 'delete-help-documentation) - (add-after 'install 'move-html-doc - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (doc (assoc-ref outputs "doc")) - (html (string-append "/share/doc/cmake-" - ,(version-major+minor - (package-version cmake-minimal)) - "/html"))) - (copy-recursively (string-append out html) - (string-append doc html)) - (delete-file-recursively (string-append out html))))))))) + #~(modify-phases #$phases + (delete 'delete-help-documentation) + (add-after 'install 'move-html-doc + (lambda _ + (let ((html (string-append "/share/doc/cmake-" + #$(version-major+minor + (package-version cmake-minimal)) + "/html"))) + (copy-recursively (string-append #$output html) + (string-append #$output:doc html)) + (delete-file-recursively (string-append #$output html))))))))) (inputs (modify-inputs (package-inputs cmake-minimal) (prepend ncurses))) ;required for ccmake @@ -411,13 +406,12 @@ and workspaces that can be used in the compiler environment of your choice.") (outputs '("out")) (build-system emacs-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'chdir-elisp - ;; Elisp directory is not in root of the source. - (lambda _ - (chdir "Auxiliary") - #t))))) + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir-elisp + ;; Elisp directory is not in root of the source. + (lambda _ + (chdir "Auxiliary")))))) (synopsis "Emacs major mode for editing Cmake expressions") (description "@code{cmakeos-mode} provides an Emacs major mode for editing Cmake files. It supports syntax highlighting, indenting and refilling of |