(define-module (packages komodo antara-gaming-sdk) #:use-module (packages komodo doom-meta) #:use-module (gnu packages cpp) #:use-module (gnu packages game-development) #:use-module (gnu packages llvm) #:use-module (gnu packages pretty-print) #:use-module (guix build utils) #:use-module (guix build-system cmake) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)) ;;; BOTTOM LAYER (define antara-gaming-sdk-configure-flags '(list "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" "-Wno-dev")) (define antara-gaming-sdk-github "https://github.com/KomodoPlatform/antara-gaming-sdk") (define antara-gaming-sdk-hash (content-hash "12jqg0y92y86lm0516k06x81zrargfgvby10kxmhj1vaxkf71ig6")) (define antara-gaming-sdk-native-inputs (list doom-meta entt fmt range-v3)) (define antara-gaming-sdk-version "1.1.0-alpha") (define build-path-prefix "../build/_deps/") (define find-entt "find_package(EnTT)\n") (define find-fmt "find_package(fmt)\n") (define loguru-hash (content-hash "1lig80s99kk5yjs7yn5nfm7jfz8982hink5ff7pzi4afkab2hbcd")) (define loguru-src "loguru-src/") ;;; ABSTRACTION LAYER -5 (define build-path-loguru (string-append build-path-prefix loguru-src)) (define loguru-origin (origin (uri "https://github.com/emilk/loguru/archive/v2.1.0.zip") (method url-fetch) (hash loguru-hash))) ;;; ABSTRACTION LAYER -4 (define download-loguru `(string-append "3.14)\n\n" "file(ARCHIVE_EXTRACT INPUT " ,loguru-origin " " "DESTINATION " ,build-path-loguru ")\n" "file(COPY " ,build-path-loguru "/loguru-2.1.0/ " "DESTINATION " ,build-path-loguru ")\n")) (define find-package-calls (string-append "Dependancies\n" "\n" find-fmt find-entt "\n")) ;;; ABSTRACTION LAYER -3 (define get-loguru `(substitute* "CMakeLists.txt" (("3.14\\)") ,download-loguru))) (define get-more-packages `(substitute* "cmake/dependencies.cmake" (("Dependancies") ,find-package-calls))) (define rename-doom-targets `(substitute* (list "modules/math/CMakeLists.txt" "modules/event/CMakeLists.txt" "modules/ecs/CMakeLists.txt") (("doom::meta") "doom"))) ;;; ABSTRACTION LAYER -2 (define supplement-libs `(lambda _ ,get-loguru ,get-more-packages ,rename-doom-targets)) ;;; ABSTRACTION LAYER -1 (define antara-gaming-sdk-phases #~ (modify-phases %standard-phases (add-after 'unpack 'supplement-libs #+ supplement-libs))) (define antara-gaming-sdk-git-reference (git-reference (url antara-gaming-sdk-github) (commit antara-gaming-sdk-version))) ;;; ABSTRACTION LAYER 0 (define antara-gaming-sdk-arguments `(#:phases ,antara-gaming-sdk-phases #:configure-flags ,antara-gaming-sdk-configure-flags)) (define antara-gaming-sdk-origin (origin (uri antara-gaming-sdk-git-reference) (method git-fetch) (hash antara-gaming-sdk-hash))) ;;; SURFACE LAYER (define antara-gaming-sdk-blueprint (package (name "antara-gaming-sdk-blueprint") (version antara-gaming-sdk-version) (source antara-gaming-sdk-origin) (build-system cmake-build-system) (arguments antara-gaming-sdk-arguments) (native-inputs antara-gaming-sdk-native-inputs) (synopsis "Komodo Gaming Software Development Kit") (description "Komodo Gaming Software Development Kit") (license license:cc-by-sa4.0) (home-page antara-gaming-sdk-github))) (define antara-gaming-sdk/clang-toolchain (package-with-c-toolchain antara-gaming-sdk-blueprint `(("clang-toolchain" ,clang-toolchain-17)))) (define-public antara-gaming-sdk (package (inherit antara-gaming-sdk/clang-toolchain) (name "antara-gaming-sdk")))