(use-modules (gnu packages commencement) (gnu packages fontutils) (gnu packages xorg) (guix gexp)) (define set-up-gcc-gexp (with-imported-modules '((guix build utils)) #~(begin (use-modules (guix build utils)) (set-path-environment-variable "PATH" '("bin") (list #$gcc-toolchain)) (set-path-environment-variable "C_INCLUDE_PATH" '("include") (list #$gcc-toolchain)) (set-path-environment-variable "LIBRARY_PATH" '("lib") (list #$gcc-toolchain))))) (define* (compile source-filename #:key (flags '())) (computed-file (string-append (basename source-filename ".c") ".o") #~(begin #$set-up-gcc-gexp (invoke "gcc" "-c" #$(local-file source-filename) "-o" #$output #$@flags)))) (define* (link output-filename object-files #:key (flags '())) (computed-file output-filename #~(begin #$set-up-gcc-gexp (invoke "gcc" "-o" #$output #$@object-files #$@flags)))) (let ((include-dependencies (directory-union "include" (list (file-append fontconfig "/include") (file-append freetype "/include/freetype2") (file-append libx11 "/include") (file-append libxft "/include") (file-append libxrender "/include") (file-append xorgproto "/include"))))) (link "sent" (list (compile "sent/sent.c" #:flags (list "-DVERSION=\"1\"" "-I" include-dependencies "-I" (file-union "include" `(("arg.h" ,(local-file "sent/arg.h")) ("config.h" ,(local-file "sent/config.def.h")) ("drw.h" ,(local-file "sent/drw.h")) ("util.h" ,(local-file "sent/util.h")))))) (compile "sent/drw.c" #:flags (list "-I" include-dependencies "-I" (file-union "include" `(("drw.h" ,(local-file "sent/drw.h")) ("util.h" ,(local-file "sent/util.h")))))) (compile "sent/util.c" #:flags (list "-I" (file-union "include" `(("util.h" ,(local-file "sent/util.h"))))))) #:flags (list "-L" (file-append fontconfig "/lib") "-L" (file-append libx11 "/lib") "-L" (file-append libxft "/lib") "-lfontconfig" "-lm" "-lX11" "-lXft")))