summaryrefslogtreecommitdiff
path: root/private
diff options
context:
space:
mode:
Diffstat (limited to 'private')
-rw-r--r--private/komodo/cmake.scm442
-rw-r--r--private/komodo/cppdap.scm40
-rw-r--r--private/komodo/cpprestsdk.scm42
-rw-r--r--private/komodo/komodo-libsodium-cmakelists.txt744
-rw-r--r--private/komodo/komodo-libsodium-sodiumconfig.cmake.in61
-rw-r--r--private/komodo/komodo.scm178
-rw-r--r--private/komodo/libsodium-komodo.scm36
-rw-r--r--private/komodo/vcpkg.scm168
8 files changed, 0 insertions, 1711 deletions
diff --git a/private/komodo/cmake.scm b/private/komodo/cmake.scm
deleted file mode 100644
index 3c6f924..0000000
--- a/private/komodo/cmake.scm
+++ /dev/null
@@ -1,442 +0,0 @@
-;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
-;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018, 2020, 2021 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2021 Ricardo Wurmus <rekado@elephly.net>
-;;;
-;;; This file is part of GNU Guix.
-;;;
-;;; GNU Guix is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation; either version 3 of the License, or (at
-;;; your option) any later version.
-;;;
-;;; GNU Guix is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
-
-(define-module (cmake)
- #:use-module (cppdap)
- #: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)
- #:use-module (guix deprecation)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system cmake)
- #:use-module (guix build-system emacs)
- #:use-module ((guix search-paths) #:select ($SSL_CERT_DIR $SSL_CERT_FILE))
- #:use-module (gnu packages)
- #:use-module (gnu packages backup)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages cpp)
- #:use-module (gnu packages crypto)
- #:use-module (gnu packages curl)
- #:use-module (gnu packages file)
- #:use-module (gnu packages kde-frameworks)
- #:use-module (gnu packages libevent)
- #:use-module (gnu packages ncurses)
- #:use-module (gnu packages serialization)
- #:use-module (gnu packages sphinx)
- #:use-module (gnu packages texinfo)
- #:use-module (gnu packages xml)
- #:use-module (ice-9 match)
- #:use-module (srfi srfi-1))
-
-(define-public cmake-shared
- (let ((commit "8122f2b96c8da38ea41b653cf69958e75fe2129d")
- (revision "32"))
- (package
- (name "cmake-shared")
- (version
- (git-version "1.1.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/lirios/cmake-shared.git")
- (commit commit)))
- (file-name
- (git-file-name name version))
- (sha256
- (base32 "05avwzqcnliwx9h7qi1kl0iz4smqmxc4vkavyjbmlc6h2b97i58g"))
- (modules '((guix build utils)
- (ice-9 ftw)
- (srfi srfi-1)))
- (snippet
- `(begin
- (delete-file-recursively "3rdparty")))))
- (build-system cmake-build-system)
- (arguments
- `(#:tests? #f)) ; No target
- (native-inputs
- (list extra-cmake-modules))
- (synopsis "Shared CMake functions and macros")
- (description "CMake-Shared are shared functions and macros for projects
-using the CMake build system.")
- (home-page "https://github.com/lirios/cmake-shared/")
- (license license:bsd-3))))
-
-;;; Build phases shared between 'cmake-bootstrap' and the later variants
-;;; that use cmake-build-system.
-(define (%common-build-phases)
- `((add-after 'unpack 'split-package
- ;; Remove files that have been packaged in other package recipes.
- (lambda _
- (delete-file "Auxiliary/cmake-mode.el")
- (substitute* "Auxiliary/CMakeLists.txt"
- ((".*cmake-mode.el.*") ""))))
- ,@(if (target-x86-32?)
- '((add-after 'unpack 'skip-cpack-txz-test
- (lambda _
- ;; In 'RunCMake.CPack_TXZ', the 'TXZ/THREADED_ALL' test
- ;; would occasionally fail on i686 with "Internal error
- ;; initializing compression library: Cannot allocate
- ;; memory": <https://issues.guix.gnu.org/50617>. Skip it.
- (substitute* "Tests/RunCMake/CPack/RunCMakeTest.cmake"
- (("THREADED_ALL \"TXZ;DEB\"")
- "THREADED_ALL \"DEB\"")))))
- '())
- (add-before 'configure 'patch-bin-sh
- (lambda _
- ;; Replace "/bin/sh" by the right path in... a lot of
- ;; files.
- (substitute*
- '("Modules/CompilerId/Xcode-3.pbxproj.in"
- "Modules/Internal/CPack/CPack.RuntimeScript.in"
- "Source/cmGlobalXCodeGenerator.cxx"
- "Source/cmLocalUnixMakefileGenerator3.cxx"
- "Source/cmExecProgramCommand.cxx"
- "Tests/CMakeLists.txt"
- "Tests/RunCMake/File_Generate/RunCMakeTest.cmake")
- (("/bin/sh") (which "sh")))))))
-
-(define %common-disabled-tests
- '(;; This test copies libgcc_s.so.1 from GCC and tries to modify its RPATH,
- ;; but does not cope with the file being read-only.
- "BundleUtilities"
- ;; These tests require network access.
- "CTestTestUpload" "CMake.FileDownload"
- ;; This test requires 'ldconfig' which is not available in Guix.
- "RunCMake.install"
- ;; This test fails for unknown reason.
- "RunCMake.file-GET_RUNTIME_DEPENDENCIES"
-
- "CMakeLib.testDebuggerNamedPipe-Project"
- "CMakeLib.testDebuggerNamedPipe-Script"))
-
-(define %common-disabled-tests/hurd
- '("CTestTestTimeout"
- "CTestTestRerunFailed"
- "RunCMake.CompilerChange"
- "RunCMake.ctest_test"
- "RunCMake.file"
- "RunCMake.BundleUtilities"
- "RunCMake.configure_file"
- "RunCMake.CTestTimeout"
- "RunCMake.CTestTimeoutAfterMatch"
- "RunCMake.CommandLine"
- "RunCMake.CTestCommandLine"))
-
-(define %preserved-third-party-files
- '(;; 'Source/cm_getdate.c' includes archive_getdate.c wholesale, so it must
- ;; 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"))
-
-;;; The "bootstrap" CMake. It is used to build 'cmake-minimal' below, as well
-;;; as any dependencies that need cmake-build-system.
-(define-public cmake-bootstrap
- (package
- (name "cmake-bootstrap")
- (version "3.27.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://cmake.org/files/v"
- (version-major+minor version)
- "/cmake-" version ".tar.gz"))
- (sha256
- (base32
- "01102g2j5klqxl6jvwhwz45libcg9hnb7xchdr3r86x1bw9v19mi"))
- (patches (search-patches "cmake-curl-certificates-3.24.patch"))))
- (build-system gnu-build-system)
- (arguments
- (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"
- "--no-system-cppdap"
- ;; 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"
- #$@(if (target-hurd?)
- %common-disabled-tests/hurd
- #~()))))
- (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)))
- #$@(if (target-hurd?)
- #~((add-after 'unpack 'patch-hurd
- (lambda _
- ;; Version 3.25.0 has a similar fix.
- (substitute* "Utilities/cmlibuv/src/unix/udp.c"
- (("!defined\\(__QNX__\\)")
- "!defined(__GNU__)")))))
- #~()))))
- (inputs
- (list
- libuv bzip2 cppdap curl expat file jsoncpp libarchive nlohmann-json rhash
- zlib))
- (native-search-paths
- (list (search-path-specification
- (variable "CMAKE_PREFIX_PATH")
- (files '("")))
- ;; "cmake-curl-certificates.patch" changes CMake to honor 'SSL_CERT_DIR'
- ;; and 'SSL_CERT_FILE', hence these search path entries.
- $SSL_CERT_DIR
- $SSL_CERT_FILE))
- (home-page "https://cmake.org/")
- (synopsis "Cross-platform build system")
- (description
- "CMake is a family of tools designed to build, test and package software.
-CMake is used to control the software compilation process using simple platform
-and compiler independent configuration files. CMake generates native makefiles
-and workspaces that can be used in the compiler environment of your choice.")
- (properties '((hidden? . #t)))
- (license (list license:bsd-3 ; cmake
- license:expat ; cmjsoncpp is dual MIT/public domain
- license:public-domain)))) ; cmlibarchive/archive_getdate.c
-
-;;; This minimal variant of CMake does not include the documentation. It is
-;;; used by the cmake-build-system.
-(define-public cmake-minimal
- (package
- (inherit cmake-bootstrap)
- (name "cmake-minimal")
- (properties (alist-delete 'hidden? (package-properties cmake-bootstrap)))
- (source (origin
- (inherit (package-source cmake-bootstrap))
- ;; Purge CMakes bundled dependencies as they are no longer needed.
- (modules '((ice-9 ftw)))
- (snippet
- `(begin
- (define preserved-files ',%preserved-third-party-files)
-
- ;; (file-system-fold (lambda (dir stat result) ;enter?
- ;; (or (string=? "Utilities" dir) ;init
- ;; ;; The bundled dependencies are
- ;; ;; distinguished by having a "cm"
- ;; ;; prefix to their upstream names.
- ;; (and (string-prefix? "Utilities/cm" dir)
- ;; (not (member dir preserved-files)))))
- ;; (lambda (file stat result) ;leaf
- ;; (unless (or (member file preserved-files)
- ;; ;; Preserve top-level files.
- ;; (string=? "Utilities"
- ;; (dirname file)))
- ;; (delete-file file)))
- ;; (const #t) ;down
- ;; (lambda (dir stat result) ;up
- ;; (when (equal? (scandir dir) '("." ".."))
- ;; (rmdir dir)))
- ;; (const #t) ;skip
- ;; (lambda (file stat errno result)
- ;; (format (current-error-port)
- ;; "warning: failed to delete ~a: ~a~%"
- ;; file (strerror errno)))
- ;; #t
- ;; "Utilities"
- ;; lstat)
- #t))))
- (build-system cmake-build-system)
- (arguments
- (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 _
- (delete-file-recursively
- (string-append #$output
- "/share/cmake-"
- #$(version-major+minor
- (package-version 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 (system-hurd?)
- %common-disabled-tests/hurd
- #~()))))
- (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
- (package
- (inherit cmake-minimal)
- (name "cmake")
- (version "3.27.1")
- (source (origin
- (inherit (package-source cmake-minimal))
- (method url-fetch)
- (uri (string-append "https://cmake.org/files/v"
- (version-major+minor version)
- "/cmake-" version ".tar.gz"))
- (snippet (match (origin-snippet (package-source cmake-minimal))
- (('begin ('define 'preserved-files ('quote x))
- rest ...)
- `(begin (define preserved-files
- ',(cons "Utilities/cmelf" x))
- ,@rest))))
- (sha256
- (base32
- "01102g2j5klqxl6jvwhwz45libcg9hnb7xchdr3r86x1bw9v19mi"))
- (patches (search-patches "cmake-curl-certificates-3.24.patch"))))
- (outputs '("out" "doc"))
- (arguments
- (substitute-keyword-arguments (package-arguments cmake-minimal)
- ;; Use cmake-minimal this time.
- ((#:cmake _ #f)
- (if (%current-target-system)
- cmake-minimal-cross
- cmake-minimal))
-
- ;; Enable debugging information for convenience.
- ((#: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))
- ((#:phases phases)
- #~(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
- ;; Extra inputs required to build the documentation.
- (native-inputs
- (modify-inputs (package-native-inputs cmake-minimal)
- (append python-sphinx
- texinfo)))
- (properties (alist-delete 'hidden? (package-properties cmake-minimal)))))
-
-(define-public cmake-minimal-cross
- (package
- (inherit cmake-minimal)
- (name "cmake-minimal-cross")
- (native-search-paths '())
- (search-paths
- (package-native-search-paths cmake-minimal))))
-
-(define-public emacs-cmake-mode
- (package
- (inherit cmake)
- (name "emacs-cmake-mode")
- (native-inputs '())
- (inputs '())
- (outputs '("out"))
- (build-system emacs-build-system)
- (arguments
- (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
-comments.")))
diff --git a/private/komodo/cppdap.scm b/private/komodo/cppdap.scm
deleted file mode 100644
index 1278e9d..0000000
--- a/private/komodo/cppdap.scm
+++ /dev/null
@@ -1,40 +0,0 @@
-(define-module (cppdap)
- #:use-module (gnu packages cpp)
- #:use-module (guix build-system cmake)
- #:use-module (guix git-download)
- #:use-module
- ((guix licenses)
- #:prefix license:)
- #:use-module (guix packages))
-
-(define-public cppdap
- (let ((cppdap-commit "5857b55c151c2efc1aea1ee0501e8d09f740d41b")
- (cppdap-github "https://github.com/google/cppdap"))
- (package
- (name "cppdap")
- (version cppdap-commit)
- (source
- (origin
- (uri
- (git-reference
- (url (string-append cppdap-github ".git"))
- (commit cppdap-commit)))
- (method git-fetch)
- (hash
- (content-hash "08bdsn0568hidq51fzw63ph0wkri8siid74fxp7sqvxjv04164pr"))))
- (build-system cmake-build-system)
- (arguments
- (list
- #:phases '(modify-phases %standard-phases (delete 'check))
- #:configure-flags
- '(list "-DCPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE=ON")))
- (native-inputs (list nlohmann-json))
- (synopsis "C++ library for the Debug Adapter Protocol")
- (description
- (string-append
- "cppdap is a C++11 library (\"SDK\") implementation of the Debug Adapter "
- "Protocol, providing an API for implementing a DAP client or server. "
- "cppdap provides C++ type-safe structures for the full DAP specification, "
- "and provides a simple way to add custom protocol messages."))
- (license license:asl2.0)
- (home-page cppdap-github))))
diff --git a/private/komodo/cpprestsdk.scm b/private/komodo/cpprestsdk.scm
deleted file mode 100644
index a558b25..0000000
--- a/private/komodo/cpprestsdk.scm
+++ /dev/null
@@ -1,42 +0,0 @@
-(define-module (cpprestsdk)
- #:use-module (gnu packages boost)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages tls)
- #:use-module (gnu packages web)
- #:use-module (guix build-system cmake)
- #:use-module (guix gexp)
- #:use-module (guix git-download)
- #:use-module ((guix licenses)
- #:prefix license:)
- #:use-module (guix packages))
-
-(define-public cpprestsdk
- (package
- (name "cpprestsdk")
- (version "v2.10.16")
- (source
- (origin
- (uri
- (git-reference
- ;; This fork includes a fix to an out-of-bounds error.
- (url "https://github.com/priv-kweihmann/cpprestsdk")
- (commit "gcc10-64bit")))
- (method git-fetch)
- (hash
- (content-hash
- "03cd0p0fjvfi94avqvf00g89a9qqkj2r7skm4xnvr4p7hihw1ikd"))))
- (build-system cmake-build-system)
- (arguments
- (list
- #:phases
- #~ (modify-phases %standard-phases (delete 'check))))
- (native-inputs (list boost openssl websocketpp zlib))
- (synopsis "The Microsoft C++ REST SDK")
- (description
- (string-append
- "The C++ REST SDK is a Microsoft project for cloud-based client-server "
- "communication in native code using a modern asynchronous C++ API "
- "design. This project aims to help C++ developers connect to and "
- "interact with services."))
- (license license:expat)
- (home-page "https://github.com/microsoft/cpprestsdk")))
diff --git a/private/komodo/komodo-libsodium-cmakelists.txt b/private/komodo/komodo-libsodium-cmakelists.txt
deleted file mode 100644
index cb26b36..0000000
--- a/private/komodo/komodo-libsodium-cmakelists.txt
+++ /dev/null
@@ -1,744 +0,0 @@
-cmake_minimum_required(VERSION 3.9)
-
-include(CheckCSourceRuns)
-
-file(STRINGS ${CMAKE_CURRENT_LIST_DIR}/configure.ac config_ac_contents)
-
-foreach (line ${config_ac_contents})
- if (line MATCHES "AC_INIT\\(\\[libsodium\\],\\[([0-9.]+)\\],")
- set(VERSION ${CMAKE_MATCH_1})
- elseif (line MATCHES "SODIUM_LIBRARY_VERSION_(MAJOR|MINOR)=([0-9]+)")
- set(SODIUM_LIBRARY_VERSION_${CMAKE_MATCH_1} ${CMAKE_MATCH_2})
- endif ()
-endforeach ()
-
-message("VERSION: ${VERSION}")
-message("SODIUM_LIBRARY_VERSION_MAJOR: ${SODIUM_LIBRARY_VERSION_MAJOR}")
-message("SODIUM_LIBRARY_VERSION_MINOR: ${SODIUM_LIBRARY_VERSION_MINOR}")
-
-project(sodium VERSION ${VERSION} LANGUAGES C ASM)
-
-include(CheckCSourceCompiles)
-include(CheckFunctionExists)
-include(CheckIncludeFile)
-include(CMakePackageConfigHelpers)
-include(CTest)
-include(GNUInstallDirs)
-include(TestBigEndian)
-
-set(CMAKE_C_STANDARD 99)
-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-set(CMAKE_DISABLE_SOURCE_CHANGES ON)
-set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
-
-option(BUILD_SHARED_LIBS "Build shared library" ${BUILD_SHARED_LIBS})
-option(ENABLE_SSP "Compile with -fstack-protector" ON)
-option(ENABLE_PIE "Compile with -fPIE" ON)
-option(ENABLE_BLOCKING_RANDOM "Enable blocking random" OFF)
-option(ENABLE_MINIMAL "Only compile the minimum set of functions required for the high-level API" OFF)
-option(ENABLE_PTHREADS "Use pthreads library" ON)
-option(ENABLE_RETPOLINE "Use return trampolines for indirect calls" OFF)
-
-if (ENABLE_MINIMAL)
- set(SODIUM_LIBRARY_MINIMAL_DEF "#define SODIUM_LIBRARY_MINIMAL 1")
-endif ()
-
-configure_file(
- src/libsodium/include/sodium/version.h.in
- ${CMAKE_BINARY_DIR}/sodium/version.h
-)
-
-file(GLOB sodium_headers
- ${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium/*.h
- ${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium.h
- ${CMAKE_BINARY_DIR}/sodium/version.h
-)
-
-if (UNIX)
- file(GLOB_RECURSE sodium_sources
- ${PROJECT_SOURCE_DIR}/src/libsodium/*.c
- ${PROJECT_SOURCE_DIR}/src/libsodium/*.S # HAVE_AVX_ASM
- )
-else ()
- file(GLOB_RECURSE sodium_sources
- ${PROJECT_SOURCE_DIR}/src/libsodium/*.c
- )
-endif ()
-
-if (MSVC)
- enable_language(RC)
-
- list(APPEND sodium_sources
- builds/msvc/resource.rc
- )
-endif ()
-
-add_library(${PROJECT_NAME}
- ${sodium_headers}
- ${sodium_sources}
-)
-
-set_target_properties(${PROJECT_NAME}
- PROPERTIES
- PREFIX ""
- OUTPUT_NAME "lib${PROJECT_NAME}"
-)
-
-test_big_endian(IS_BIG_ENDIAN)
-
-if (IS_BIG_ENDIAN)
- target_compile_definitions(${PROJECT_NAME} PRIVATE NATIVE_BIG_ENDIAN)
-else ()
- target_compile_definitions(${PROJECT_NAME} PRIVATE NATIVE_LITTLE_ENDIAN)
-endif ()
-
-macro (sodium_check_func func var)
- check_function_exists(${func} ${var})
- if (${var})
- target_compile_definitions(${PROJECT_NAME} PRIVATE ${var}=1)
- endif ()
-endmacro ()
-
-if (MSVC)
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- /D_CONSOLE
- /D_CRT_SECURE_NO_WARNINGS
- /DCPU_UNALIGNED_ACCESS=1
- /MP
- /Dinline=__inline
- /wd4068 # Unknown pragma
- /wd4197
- /wd4244 # Macro redefinition
- )
-
- target_link_libraries(${PROJECT_NAME}
- PUBLIC
- advapi32
- )
-else ()
- if (ENABLE_BLOCKING_RANDOM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE USE_BLOCKING_RANDOM)
- endif ()
-
- if (ENABLE_PTHREADS)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PTHREAD)
- target_compile_options(${PROJECT_NAME} PRIVATE -ftls-model=local-dynamic)
- target_compile_options(${PROJECT_NAME} PUBLIC -pthread)
- endif ()
-
- if (ENABLE_SSP)
- target_compile_options(${PROJECT_NAME} PRIVATE -fstack-protector-all)
- endif ()
-
- if (ENABLE_PIE)
- target_compile_options(${PROJECT_NAME} PRIVATE -fPIE)
- endif ()
-
- if (ENABLE_RETPOLINE)
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- -mindirect-branch=thunk-inline
- -mindirect-branch-register
- )
- endif ()
-
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- -flax-vector-conversions
- -fvisibility=hidden
- -fPIC
- -fwrapv
- -Wall
- -Wextra
- -Wbad-function-cast
- -Wcast-qual
- #-Wdiv-by-zero
- #-Wduplicated-branches
- #-Wduplicated-cond
- -Wfloat-equal
- -Wformat=2
- -Wlogical-op
- -Wmaybe-uninitialized
- #-Wmisleading-indentation
- -Wmissing-declarations
- -Wmissing-prototypes
- -Wnested-externs
- #-Wno-type-limits
- #-Wno-unknown-pragmas
- -Wnormalized=id
- #-Wnull-dereference
- -Wold-style-declaration
- -Wpointer-arith
- -Wredundant-decls
- #-Wrestrict
- #-Wsometimes-uninitialized
- -Wstrict-prototypes
- -Wswitch-enum
- #-Wvariable-decl
- -Wwrite-strings
- -Wl,-z,relro
- -Wl,-z,now
- -Wl,-z,noexecstack
- )
-
- if (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR
- CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
- target_compile_options(${PROJECT_NAME}
- PRIVATE
- -Wno-unknown-warning-option
- -Wshorten-64-to-32
- )
- endif ()
-
- check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
- if (HAVE_SYS_MMAN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_SYS_MMAN_H)
- endif ()
-
- sodium_check_func(arc4random HAVE_SAFE_ARC4RANDOM)
- sodium_check_func(mmap HAVE_MMAP)
- sodium_check_func(mlock HAVE_MLOCK)
- sodium_check_func(madvise HAVE_MADVISE)
- sodium_check_func(mprotect HAVE_MPROTECT)
- sodium_check_func(memset_s HAVE_MEMSET_S)
- sodium_check_func(explicit_bzero HAVE_EXPLICIT_BZERO)
- sodium_check_func(explicit_memset HAVE_EXPLICIT_MEMSET)
- sodium_check_func(nanosleep HAVE_NANOSLEEP)
- sodium_check_func(posix_memalign HAVE_POSIX_MEMALIGN)
- sodium_check_func(getpid HAVE_GETPID)
-
- check_c_source_runs(
- "
- #pragma GCC target(\"mmx\")
- #include <mmintrin.h>
- int main(void)
- {
- __m64 x = _mm_setzero_si64();
- }
- "
- HAVE_MMINTRIN_H
- )
-
- if (HAVE_MMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_MMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mmmx)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"sse2\")
- #ifndef __SSE2__
- # define __SSE2__
- #endif
-
- #include <emmintrin.h>
- int main(void) {
- __m128d x = _mm_setzero_pd();
- __m128i z = _mm_srli_epi64(_mm_setzero_si128(), 26);
- }
- "
- HAVE_EMMINTRIN_H
- )
-
- if (HAVE_EMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_EMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -msse2)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"sse3\")
- #include <pmmintrin.h>
- int main(void) {
- __m128 x = _mm_addsub_ps(_mm_cvtpd_ps(_mm_setzero_pd()), _mm_cvtpd_ps(_mm_setzero_pd()));
- }
- "
- HAVE_PMMINTRIN_H
- )
-
- if (HAVE_PMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_PMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -msse3)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"ssse3\")
- #include <tmmintrin.h>
- int main(void) {
- __m64 x = _mm_abs_pi32(_m_from_int(0));
- }
- "
- HAVE_TMMINTRIN_H
- )
-
- if (HAVE_TMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_TMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mssse3)
- endif ()
-
- check_c_source_runs(
- "
- #pragma GCC target(\"sse4.1\")
- #include <smmintrin.h>
- int main(void) {
- __m128i x = _mm_minpos_epu16(_mm_setzero_si128());
- }
- "
- HAVE_SMMINTRIN_H
- )
-
- if (HAVE_SMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_SMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -msse4.1)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX opcodes
- #endif
- #pragma GCC target(\"avx\")
- #include <immintrin.h>
- int main(void) {
- _mm256_zeroall();
- }
- "
- HAVE_AVXINTRIN_H
- )
-
- if (HAVE_AVXINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVXINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mavx)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX2 opcodes
- #endif
- #pragma GCC target(\"avx2\")
- #include <immintrin.h>
- int main(void) {
- __m256 x = _mm256_set1_ps(3.14);
- __m256 y = _mm256_permutevar8x32_ps(x, _mm256_set1_epi32(42));
- return _mm256_movemask_ps(_mm256_cmp_ps(x, y, _CMP_NEQ_OQ));
- }
- "
- HAVE_AVX2INTRIN_H
- )
-
- if (HAVE_AVX2INTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX2INTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mavx2)
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX2 opcodes
- #endif
- #pragma GCC target(\"avx2\")
- #include <immintrin.h>
- int main(void) {
- __m256i y = _mm256_broadcastsi128_si256(_mm_setzero_si128());
- }
- "
- _mm256_broadcastsi128_si256_DEFINED
- )
-
- if (NOT _mm256_broadcastsi128_si256_DEFINED)
- target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- _mm256_broadcastsi128_si256=_mm_broadcastsi128_si256
- )
- endif ()
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AVX512F opcodes
- #endif
- #pragma GCC target(\"avx512f\")
- #include <immintrin.h>
-
- #ifndef __AVX512F__
- # error No AVX512 support
- #elif defined(__clang__)
- # if __clang_major__ < 4
- # error Compiler AVX512 support may be broken
- # endif
- #elif defined(__GNUC__)
- # if __GNUC__ < 6
- # error Compiler AVX512 support may be broken
- # endif
- #endif
-
- int main(void) {
- __m512i x = _mm512_setzero_epi32();
- __m512i y = _mm512_permutexvar_epi64(_mm512_setr_epi64(0, 1, 4, 5, 2, 3, 6, 7), x);
- }
- "
- HAVE_AVX512FINTRIN_H
- )
-
- if (HAVE_AVX512FINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX512FINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mavx512f)
- else ()
- target_compile_options(${PROJECT_NAME} PRIVATE -mno-avx512f)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding AESNI opcodes
- #endif
- #pragma GCC target(\"aes\")
- #pragma GCC target(\"pclmul\")
- #include <wmmintrin.h>
-
- int main(void) {
- __m128i x = _mm_aesimc_si128(_mm_setzero_si128());
- __m128i y = _mm_clmulepi64_si128(_mm_setzero_si128(), _mm_setzero_si128(), 0);
- }
- "
- HAVE_WMMINTRIN_H
- )
-
- if (HAVE_WMMINTRIN_H)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_WMMINTRIN_H=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -maes -mpclmul)
- endif ()
-
- check_c_source_runs(
- "
- #ifdef __native_client__
- # error NativeClient detected - Avoiding RDRAND opcodes
- #endif
- #pragma GCC target(\"rdrnd\")
- #include <immintrin.h>
-
- int main(void) {
- unsigned long long x;
- _rdrand64_step(&x);
- }
- "
- HAVE_RDRAND
- )
-
- if (HAVE_RDRAND)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_RDRAND=1)
- target_compile_options(${PROJECT_NAME} PRIVATE -mrdrnd)
- endif ()
-
- check_c_source_runs(
- "
- #include <intrin.h>
-
- int main(void) {
- (void) _xgetbv(0);
- }
- "
- HAVE__XGETBV
- )
-
- if (HAVE__XGETBV)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE__XGETBV=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- int a = 42;
- int *pnt = &a;
- __asm__ __volatile__ (\"\" : : \"r\"(pnt) : \"memory\");
- }
- "
- HAVE_INLINE_ASM
- )
-
- if (HAVE_INLINE_ASM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_INLINE_ASM=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
- # if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64)
- # error Windows x86_64 calling conventions are not supported yet
- # endif
- /* neat */
- #else
- # error !x86_64
- #endif
- unsigned char i = 0, o = 0, t;
- __asm__ __volatile__ (\"pxor %%xmm12, %%xmm6 \n\"
- \"movb (%[i]), %[t] \n\"
- \"addb %[t], (%[o]) \n\"
- : [t] \"=&r\"(t)
- : [o] \"D\"(&o), [i] \"S\"(&i)
- : \"memory\", \"flags\", \"cc\");
- }
- "
- HAVE_AMD64_ASM
- )
-
- if (HAVE_AMD64_ASM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AMD64_ASM=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
- # if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64)
- # error Windows x86_64 calling conventions are not supported yet
- # endif
- /* neat */
- #else
- # error !x86_64
- #endif
- __asm__ __volatile__ (\"vpunpcklqdq %xmm0,%xmm13,%xmm0\");
- }
- "
- HAVE_AVX_ASM
- )
-
- if (HAVE_AVX_ASM)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_AVX_ASM=1)
- endif ()
-
- check_c_source_runs(
- "
- #if !defined(__clang__) && !defined(__GNUC__) && !defined(__SIZEOF_INT128__)
- # error mode(TI) is a gcc extension, and __int128 is not available
- #endif
- #if defined(__clang__) && !defined(__x86_64__) && !defined(__aarch64__)
- # error clang does not properly handle the 128-bit type on 32-bit systems
- #endif
- #ifndef NATIVE_LITTLE_ENDIAN
- # error libsodium currently expects a little endian CPU for the 128-bit type
- #endif
- #ifdef __EMSCRIPTEN__
- # error emscripten currently doesn't support some operations on integers larger than 64 bits
- #endif
- #include <stddef.h>
- #include <stdint.h>
- #if defined(__SIZEOF_INT128__)
- typedef unsigned __int128 uint128_t;
- #else
- typedef unsigned uint128_t __attribute__((mode(TI)));
- #endif
- void fcontract(uint128_t *t) {
- *t += 0x8000000000000 - 1;
- *t *= *t;
- *t >>= 84;
- }
-
- int main(void) {
- (void) fcontract;
- }
- "
- HAVE_TI_MODE
- )
-
- if (HAVE_TI_MODE)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_TI_MODE=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- unsigned int cpu_info[4];
- __asm__ __volatile__ (\"xchgl %%ebx, %k1; cpuid; xchgl %%ebx, %k1\" :
- \"=a\" (cpu_info[0]), \"=&r\" (cpu_info[1]),
- \"=c\" (cpu_info[2]), \"=d\" (cpu_info[3]) :
- \"0\" (0U), \"2\" (0U));
- }
- "
- HAVE_CPUID
- )
-
- if (HAVE_CPUID)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_CPUID=1)
- endif ()
-
- check_c_source_runs(
- "
- #if !defined(__ELF__) && !defined(__APPLE_CC__)
- # error Support for weak symbols may not be available
- #endif
- __attribute__((weak)) void __dummy(void *x) { }
- void f(void *x) { __dummy(x); }
- int main(void) {}
- "
- HAVE_WEAK_SYMBOLS
- )
-
- if (HAVE_WEAK_SYMBOLS)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_WEAK_SYMBOLS=1)
- endif ()
-
- check_c_source_runs(
- "
- int main(void) {
- static volatile int _sodium_lock;
- __sync_lock_test_and_set(&_sodium_lock, 1);
- __sync_lock_release(&_sodium_lock);
- }
- "
- HAVE_ATOMIC_OPS
- )
-
- if (HAVE_ATOMIC_OPS)
- target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_ATOMIC_OPS=1)
- endif ()
-
- check_c_source_runs(
- "
- #include <limits.h>
- #include <stdint.h>
- int main(void) {
- (void) SIZE_MAX;
- (void) UINT64_MAX;
- }
- "
- STDC_LIMIT_MACROS_REQUIRED
- )
-
- if (STDC_LIMIT_MACROS_REQUIRED)
- target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- __STDC_LIMIT_MACROS
- __STDC_CONSTANT_MACROS
- )
- endif ()
-
- # include/sodium/private/common.h
- target_compile_definitions(${PROJECT_NAME} PRIVATE CONFIGURED=1)
-endif ()
-
-if (BUILD_SHARED_LIBS)
- if (MSVC)
- target_compile_definitions(${PROJECT_NAME}
- PRIVATE
- SODIUM_DLL_EXPORT
- )
- endif ()
-else ()
- target_compile_definitions(${PROJECT_NAME}
- PUBLIC
- SODIUM_STATIC
- )
-endif ()
-
-target_include_directories(${PROJECT_NAME}
- PRIVATE
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium>
- $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/sodium>
-)
-
-if (BUILD_TESTING)
- file(GLOB sodium_test_sources ${PROJECT_SOURCE_DIR}/test/default/*.c)
-
- foreach (test_src ${sodium_test_sources})
- get_filename_component(test_name ${test_src} NAME_WE)
-
- add_executable(${test_name} ${test_src})
-
- if (MSVC)
- target_compile_definitions(${test_name} PRIVATE _CRT_SECURE_NO_WARNINGS)
- endif ()
-
- target_include_directories(${test_name}
- PRIVATE
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include>
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src/libsodium/include/sodium>
- $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/test/quirks>
- )
-
- target_link_libraries(${test_name} PRIVATE ${PROJECT_NAME})
-
- add_custom_command(TARGET ${test_name} POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_if_different
- "${CMAKE_CURRENT_LIST_DIR}/test/default/${test_name}.exp"
- $<TARGET_FILE_DIR:${test_name}>)
-
- add_test(
- NAME ${test_name}
- COMMAND ${test_name}
- WORKING_DIRECTORY $<TARGET_FILE_DIR:${test_name}>
- )
- endforeach ()
-endif ()
-
-install(DIRECTORY src/libsodium/include/
- DESTINATION include/
- USE_SOURCE_PERMISSIONS
- PATTERN "*.h"
- PATTERN "*.h.in" EXCLUDE
- REGEX "private($|/)" EXCLUDE
-)
-
-install(FILES ${CMAKE_BINARY_DIR}/sodium/version.h
- DESTINATION include/sodium
-)
-
-install(TARGETS ${PROJECT_NAME}
- EXPORT ${PROJECT_NAME}-targets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
-)
-
-install(EXPORT ${PROJECT_NAME}-targets
- FILE unofficial-${PROJECT_NAME}Targets.cmake
- NAMESPACE unofficial-${PROJECT_NAME}::
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-${PROJECT_NAME}
-)
-
-set(TARGET_NAME unofficial-${PROJECT_NAME}::${PROJECT_NAME})
-
-configure_package_config_file(
- ${PROJECT_NAME}Config.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}Config.cmake
- INSTALL_DESTINATION ${PROJECT_BINARY_DIR}
-)
-
-write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}ConfigVersion.cmake
- VERSION ${VERSION}
- COMPATIBILITY AnyNewerVersion
-)
-
-unset(TARGET_NAME)
-
-install(
- FILES
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}Config.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}ConfigVersion.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-${PROJECT_NAME}
-)
-
-# References:
-# https://github.com/boost-cmake/bcm/wiki/Cmake-best-practices-and-guidelines
-# https://github.com/jedisct1/libsodium/pull/74/files
-# https://github.com/jedisct1/libsodium/pull/156/files
-# https://github.com/jedisct1/libsodium/pull/181/files
-# https://github.com/jedisct1/libsodium/issues/378
-# https://github.com/jedisct1/libsodium/issues/636
-# https://github.com/jedisct1/libsodium/issues/771
-# https://github.com/jedisct1/libsodium/blob/gyp/sodium.gyp
-# https://github.com/imefisto/cmake-libsodium
-# https://github.com/Cyberunner23/libsodium-CMake
-# https://stackoverflow.com/questions/29901352/appending-to-cmake-c-flags
-# https://stackoverflow.com/questions/986426/what-do-stdc-limit-macros-and-stdc-constant-macros-mean
-# https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html
-# https://stackoverflow.com/questions/15132185/mixing-c-and-assembly-sources-and-build-with-cmake
-# https://stackoverflow.com/questions/647892/how-to-check-header-files-and-library-functions-in-cmake-like-it-is-done-in-auto
-# https://stackoverflow.com/questions/31038963/how-do-you-rename-a-library-filename-in-cmake
diff --git a/private/komodo/komodo-libsodium-sodiumconfig.cmake.in b/private/komodo/komodo-libsodium-sodiumconfig.cmake.in
deleted file mode 100644
index 9673dab..0000000
--- a/private/komodo/komodo-libsodium-sodiumconfig.cmake.in
+++ /dev/null
@@ -1,61 +0,0 @@
-# sodium cmake module
-# This module sets the following variables in your project:
-#
-# sodium_FOUND - true if sodium found on the system
-# sodium_INCLUDE_DIR - the directory containing sodium headers
-# sodium_LIBRARY_DEBUG
-# sodium_LIBRARY_RELEASE
-# sodium_LIBRARIES
-# sodium_VERSION
-#
-
-include(FindPackageHandleStandardArgs)
-include(SelectLibraryConfigurations)
-
-@PACKAGE_INIT@
-
-if (NOT TARGET @TARGET_NAME@)
- include("${CMAKE_CURRENT_LIST_DIR}/unofficial-@PROJECT_NAME@Targets.cmake")
-
- set(@PROJECT_NAME@_VERSION @VERSION@)
-
- get_target_property(@PROJECT_NAME@_INCLUDE_DIR @TARGET_NAME@ INTERFACE_INCLUDE_DIRECTORIES)
-
- get_target_property(@PROJECT_NAME@_LIBRARY_DEBUG @TARGET_NAME@ IMPORTED_IMPLIB_DEBUG)
- if (@PROJECT_NAME@_LIBRARY_DEBUG MATCHES ".*-NOTFOUND")
- get_target_property(@PROJECT_NAME@_LIBRARY_DEBUG @TARGET_NAME@ IMPORTED_LOCATION_DEBUG)
- else ()
- get_target_property(@PROJECT_NAME@_DLL_DEBUG @TARGET_NAME@ IMPORTED_LOCATION_DEBUG)
- endif ()
-
- get_target_property(@PROJECT_NAME@_LIBRARY_RELEASE @TARGET_NAME@ IMPORTED_IMPLIB_RELEASE)
- if (@PROJECT_NAME@_LIBRARY_RELEASE MATCHES ".*-NOTFOUND")
- get_target_property(@PROJECT_NAME@_LIBRARY_RELEASE @TARGET_NAME@ IMPORTED_LOCATION_RELEASE)
- else ()
- get_target_property(@PROJECT_NAME@_DLL_RELEASE @TARGET_NAME@ IMPORTED_LOCATION_RELEASE)
- endif ()
-
- select_library_configurations(@PROJECT_NAME@)
-endif ()
-
-find_package_handle_standard_args(
- @PROJECT_NAME@
- REQUIRED_VARS
- @PROJECT_NAME@_INCLUDE_DIR
- @PROJECT_NAME@_LIBRARIES
- VERSION_VAR
- @PROJECT_NAME@_VERSION
-)
-
-mark_as_advanced(@PROJECT_NAME@_INCLUDE_DIR)
-
-if (WIN32)
- mark_as_advanced(@PROJECT_NAME@_DLL_DEBUG)
- mark_as_advanced(@PROJECT_NAME@_DLL_RELEASE)
-endif()
-
-
-# References:
-# https://github.com/jedisct1/libsodium/blob/master/contrib/Findsodium.cmake
-# https://github.com/QuantStack/xeus/blob/master/xeusConfig.cmake.in
-# https://github.com/zeromq/libzmq/blob/master/builds/cmake/ZeroMQConfig.cmake.in \ No newline at end of file
diff --git a/private/komodo/komodo.scm b/private/komodo/komodo.scm
deleted file mode 100644
index 7ee7eae..0000000
--- a/private/komodo/komodo.scm
+++ /dev/null
@@ -1,178 +0,0 @@
-(define-module (komodo)
- #:use-module (cpprestsdk)
- #:use-module (gnu packages)
- #:use-module (gnu packages boost)
- #:use-module (gnu packages calendar)
- #:use-module (gnu packages check)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages cpp)
- #:use-module (gnu packages game-development)
- #:use-module (gnu packages logging)
- #:use-module (gnu packages pretty-print)
- #:use-module (gnu packages qt)
- #:use-module (gnu packages tls)
- #:use-module (gnu packages version-control)
- #:use-module (guix build utils)
- #:use-module (guix build-system qt)
- #:use-module (guix download)
- #:use-module (guix gexp)
- #:use-module (guix git-download)
- #:use-module ((guix licenses)
- #:prefix license:)
- #:use-module (guix packages)
- #:use-module (libsodium-komodo))
-
-(define komodo-wallet-version "0.7.0-beta")
-
-;;; Git References
-
-(define expected-git-reference
- (git-reference (url "https://github.com/TartanLlama/expected")
- (commit "v1.1.0")
- (recursive? #t)))
-
-(define komodo-wallet-git-reference
- (git-reference (url "https://github.com/KomodoPlatform/komodo-wallet-desktop")
- (commit komodo-wallet-version)))
-
-;;; Hashes
-
-(define expected-hash
- (content-hash "17akrv80h0n4cfmxwvlvbb8ycqza7y3qqygjyphv95rrabqm9r02"))
-
-(define jl777-coins-hash
- (content-hash "1icbd6f8nridzc93vz7hsr5dnkrf328zfsw6rrzifc7nvsr559w8"))
-
-(define komodo-wallet-hash
- (content-hash "0pfkgas0xkixf99zqzyri80ksp89b7dw7hbcgpp60ni2cnchxk2n"))
-
-(define mm2-hash
- (content-hash "1bn2sjcrp9ih44h3p96prnwg74aids7fgzcnlv3c68nan6y2lysi"))
-
-;;; Package Origins
-
-(define expected-file-name
- (git-file-name "libexpected" "1.1.0"))
-
-(define expected-patches
- (search-patches "libexpected-use-provided-catch2.patch"))
-
-(define expected-origin
- (origin (uri expected-git-reference)
- (method git-fetch)
- (hash expected-hash)
- (file-name expected-file-name)
- (patches expected-patches)))
-
-(define jl777-coins-origin
- (origin (uri "https://github.com/KomodoPlatform/coins/archive/master.zip")
- (method url-fetch)
- (hash jl777-coins-hash)))
-
-(define komodo-wallet-origin
- (origin (uri komodo-wallet-git-reference)
- (method git-fetch)
- (hash komodo-wallet-hash)))
-
-(define mm2-origin
- (origin (uri "https://sdk.devbuilds.komodo.earth/main/mm2_b0fd99e-linux-x86-64.zip")
- (method url-fetch)
- (hash mm2-hash)))
-
-;;; Path Constructors
-
-(define build-deps-prefix "../build/_deps/")
-
-(define expected-src "expected-src/")
-
-(define jl777-coins-src "jl777-coins-src/")
-
-(define mm2-src "mm2-src/")
-
-(define build-path-mm2
- (string-append build-deps-prefix
- mm2-src))
-
-(define build-path-jl777-coins
- (string-append build-deps-prefix
- jl777-coins-src))
-
-(define build-path-expected
- (string-append build-deps-prefix
- expected-src))
-
-;;; Phase Definitions
-
-(define prepare-build-paths
- `(string-append "file(MAKE_DIRECTORY \"" ,build-path-expected "\")\n"
- "file(MAKE_DIRECTORY \"" ,build-path-jl777-coins "\")\n"
- "file(MAKE_DIRECTORY \"" ,build-path-mm2 "\")\n"))
-
-(define prepare-expected-src
- `(string-append "file(COPY " ,expected-origin "/ "
- "DESTINATION " ,build-path-expected " "
- "NO_SOURCE_PERMISSIONS FOLLOW_SYMLINK_CHAIN)\n"))
-
-(define prepare-jl777-coins-src
- `(string-append "file(ARCHIVE_EXTRACT INPUT " ,jl777-coins-origin " "
- "DESTINATION " ,build-path-jl777-coins ")\n"
- "file(COPY " ,build-path-jl777-coins "/coins-master/ "
- "DESTINATION " ,build-path-jl777-coins ")\n"))
-
-(define prepare-mm2-src
- `(string-append "file(ARCHIVE_EXTRACT INPUT " ,mm2-origin " "
- "DESTINATION " ,build-path-mm2 ")\n"))
-
-(define vcpkg-replacement
- `(string-append "\n"
- ,prepare-build-paths
- ,prepare-expected-src
- ,prepare-jl777-coins-src
- ,prepare-mm2-src
- "\n"))
-
-(define replace-vcpkg
- `(substitute* "CMakeLists.txt"
- (("include\\(vcpkg_prerequisites\\)")
- ,vcpkg-replacement)))
-
-;;; Build Arguments
-
-(define komodo-wallet-configure-flags
- '(list "-DFETCHCONTENT_FULLY_DISCONNECTED=ON"
- "-Wno-dev"))
-
-(define komodo-wallet-phases
- #~ (modify-phases %standard-phases
- (add-after 'unpack
- 'delete-vcpkg
- (lambda _ #+ replace-vcpkg))))
-
-;;; Package Definitions
-
-(define komodo-wallet-arguments
- (list #:phases komodo-wallet-phases
- #:configure-flags komodo-wallet-configure-flags))
-
-(define komodo-wallet-description
- (string-append "Komodo Wallet is a secure wallet and non-custodial "
- "decentralized exchange rolled into one application. Store "
- "your coins, trade peer-to-peer with minimal fees and never "
- "give up control over your digital assets."))
-
-(define komodo-wallet-native-inputs
- (list boost cpprestsdk date doctest entt fmt git libsodium-komodo
- nlohmann-json openssl qtcharts qtdeclarative-5 qttools-5 qtsvg-5
- qtwebengine-5 range-v3 spdlog zlib))
-
-(define-public komodo-wallet
- (package (name "komodo-wallet")
- (version komodo-wallet-version)
- (source komodo-wallet-origin)
- (build-system qt-build-system)
- (arguments komodo-wallet-arguments)
- (native-inputs komodo-wallet-native-inputs)
- (synopsis "Komodo Wallet Desktop GUI")
- (description komodo-wallet-description)
- (license license:gpl2)
- (home-page "https://atomicdex.io/")))
diff --git a/private/komodo/libsodium-komodo.scm b/private/komodo/libsodium-komodo.scm
deleted file mode 100644
index b1fe8b9..0000000
--- a/private/komodo/libsodium-komodo.scm
+++ /dev/null
@@ -1,36 +0,0 @@
-(define-module (libsodium-komodo)
- #:use-module (gnu packages crypto)
- #:use-module (guix build-system cmake)
- #:use-module (guix gexp)
- #:use-module (guix packages))
-
-(define get-komodo-cmake
- (local-file "komodo-libsodium-cmakelists.txt"))
-
-(define get-komodo-sodiumconfig
- (local-file "komodo-libsodium-sodiumconfig.cmake.in"))
-
-(define copy-komodo-cmake
- `(copy-recursively ,get-komodo-cmake
- "CMakeLists.txt"))
-
-(define copy-komodo-sodiumconfig
- `(copy-recursively ,get-komodo-sodiumconfig
- "sodiumConfig.cmake.in"))
-
-(define phases
- #~ (modify-phases %standard-phases
- (add-after
- 'unpack
- 'add-cmakelists
- (lambda _
- #+ copy-komodo-cmake
- #+ copy-komodo-sodiumconfig))))
-
-(define arguments
- (list #:phases phases))
-
-(define-public libsodium-komodo
- (package (inherit libsodium)
- (build-system cmake-build-system)
- (arguments arguments)))
diff --git a/private/komodo/vcpkg.scm b/private/komodo/vcpkg.scm
deleted file mode 100644
index 260ce19..0000000
--- a/private/komodo/vcpkg.scm
+++ /dev/null
@@ -1,168 +0,0 @@
-(define-module (vcpkg)
- ;; #:use-module (cmake)
- ;; #:use-module (gnu packages commencement)
- ;; #:use-module (gnu packages compression)
- ;; #:use-module (gnu packages cpp)
- ;; #:use-module (gnu packages curl)
- ;; #:use-module (gnu packages ncurses)
- ;; #:use-module (gnu packages ninja)
- ;; #:use-module (guix build utils)
- #:use-module (guix build-system copy)
- #:use-module (guix build-system cmake)
- ;; #:use-module (guix build-system qt)
- #:use-module (guix download)
- ;; #:use-module (guix gexp)
- ;; #:use-module (guix git-download)
- #:use-module ((guix licenses)
- #:prefix license:)
- #:use-module (guix packages)
- ;; #:use-module (nonguix build-system binary)
- )
-
-
-;;; ABSTRACTION -2
-
-(define-public vcpkg-tool-cmrc
- (let ((version "2.0.1"))
- (package
- (name "vcpkg-cmrc")
- (version version)
- (source
- (origin
- (uri
- (string-append
- "https://github.com/vector-of-bool/cmrc/archive/refs/tags/"
- version
- ".tar.gz"))
- (method url-fetch)
- (hash
- (content-hash
- "06xpnnwbqv3r8v0vblzcrjp2zgddy05v132y9c9dz8dyl2m5zbgd"))))
- (build-system copy-build-system)
- (arguments
- '(#:install-plan '(("CMakeRC.cmake" "CMakeRCConfig.cmake"))))
- (synopsis "A Resource Compiler in a Single CMake Script")
- (description
- (string-append
- "CMakeRC is a resource compiler provided in a single CMake "
- "script that can easily be included in another project."))
- (license license:expat)
- (home-page "https://github.com/vector-of-bool/cmrc/"))))
-
-(define-public vcpkg-tool-fmt
- (let ((version "10.1.0"))
- (package
- (name "vcpkg-fmt")
- (version version)
- (source
- (origin
- (uri
- (string-append
- "https://github.com/fmtlib/fmt/archive/refs/tags/"
- version ".tar.gz"))
- (method url-fetch)
- (hash
- (content-hash
- "02na80r7yrkda89s7mz35llqh904dbsppb7g5s7na9ji5yns7c6y"))))
- (build-system cmake-build-system)
- (synopsis "A modern formatting library")
- (description
- (string-append
- "{fmt} is an open-source formatting library providing a fast "
- "and safe alternative to C stdio and C++ iostreams."))
- (license license:expat)
- (home-page "https://fmt.dev/"))))
-
-;;; ABSTRACTION -1
-
-(define vcpkg
- (let ((version "2024.02.14"))
- (package
- (name "vcpkg")
- (version version)
- (source
- (origin
- (uri
- (string-append
- "https://github.com/microsoft/vcpkg/archive/refs/tags/"
- version
- ".tar.gz"))
- (method url-fetch)
- (hash
- (content-hash
- "1wbhxfbi964bc93f69rsr1h6z82ypc9lyz2rb0kp3sfwp0m9jhhf"))))
- (build-system copy-build-system)
- (arguments
- (list
- #:install-plan '(list (list "vcpkg" "vcpkg"))
- #:phases
- #~ (modify-phases
- %standard-phases
- (add-after
- 'unpack
- 'unpack-vcpkg-tool
- (lambda _
- (invoke "mkdir" "downloads")
- (copy-recursively
- #+ (origin
- (uri
- (string-append
- "https://github.com/microsoft/vcpkg-tool/archive/"
- "2024-02-07"
- ".tar.gz"))
- (method url-fetch)
- (hash
- (content-hash
- "1j08vw8l8zf6pv6n1kvyjwvj0h7y667shs72sf69hg7p8zj5k9p4")))
- "downloads/2024-02-07.tar.gz")))
- (add-after
- 'unpack-vcpkg-tool
- 'patch-vcpkg-tool
- (lambda* _
- (invoke "chmod" "+w" "downloads/2024-02-07.tar.gz")
- (invoke "gunzip" "downloads/2024-02-07.tar.gz")
- (invoke
- "tar" "-xf" "downloads/2024-02-07.tar" "-C" "downloads"
- "vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
- "vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake")
- (invoke
- "tar" "--delete" "-f" "downloads/2024-02-07.tar"
- "vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
- "vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake")
- (substitute*
- "downloads/vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
- (("the fmt library\" OFF")
- "the fmt library\" ON"))
- (substitute*
- "downloads/vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake"
- (("resource compiler\" OFF")
- "resource compiler\" ON"))
- (invoke
- "tar" "-rf" "downloads/2024-02-07.tar"
- "downloads/vcpkg-tool-2024-02-07/cmake/Findfmt.cmake"
- "downloads/vcpkg-tool-2024-02-07/cmake/FindCMakeRC.cmake")
- (invoke "gzip" "downloads/2024-02-07.tar")))
- (add-after
- 'patch-generated-file-shebangs
- 'bootstrap-vcpkg
- (lambda* _
- (substitute*
- "scripts/bootstrap.sh"
- (("vcpkgDownloadTool=\"ON\"")
- "vcpkgDownloadTool=\"OFF\"")
- (("\\$actualHash")
- "$expectedHash"))
- (invoke "./bootstrap-vcpkg.sh" "--disableMetrics")))
- (delete 'configure)
- (delete 'build)
- (delete 'check))))
- (native-inputs
- (list cmake curl ninja unzip vcpkg-tool-cmrc vcpkg-tool-fmt zip))
- (synopsis "C++ Library Manager for Windows, Linux, and MacOS")
- (description
- (string-append
- "Vcpkg helps you manage C and C++ libraries on Windows, Linux "
- "and MacOS. This tool and ecosystem are constantly evolving, "
- "and we always appreciate contributions!"))
- (license license:expat)
- (home-page "https://vcpkg.io"))))