diff options
author | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-03-21 15:10:54 -0400 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2022-03-21 15:30:55 -0400 |
commit | 7f981c53df790bf1b5a33da77c0b926f64732576 (patch) | |
tree | 2ed0a458473c22f9a773aa107359e8f2d8e7ba3e | |
parent | 249e84943e628458d2c59c79a19cb9fb3acb068f (diff) | |
download | guix-7f981c53df790bf1b5a33da77c0b926f64732576.tar.gz guix-7f981c53df790bf1b5a33da77c0b926f64732576.zip |
gnu: imgui: Add support for fontconfig and the C++ standard library.
* gnu/packages/toolkits.scm (imgui)[source]: Streamline snippet.
[arguments]: Use gexps.
[phases]{build}: Add include directive to fonconfig headers. Also build the
C++ sources found under the "misc" directory.
{install}: Install headers found under the "misc" directory.
[inputs]: Add fontconfig.
-rw-r--r-- | gnu/packages/toolkits.scm | 93 |
1 files changed, 52 insertions, 41 deletions
diff --git a/gnu/packages/toolkits.scm b/gnu/packages/toolkits.scm index ba860014a4..fd3385122e 100644 --- a/gnu/packages/toolkits.scm +++ b/gnu/packages/toolkits.scm @@ -19,8 +19,10 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages toolkits) + #:use-module (gnu packages fontutils) #:use-module (gnu packages gl) #:use-module (gnu packages sdl) + #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) @@ -42,29 +44,30 @@ "10qil22s5qak3as41787iz273sibpq1bq66bakgn7yvhj5fym6hz")) (modules '((guix build utils))) (snippet - '(begin - ;; Remove bundled fonts. - (delete-file-recursively "misc/fonts"))))) + ;; Remove bundled fonts. + '(delete-file-recursively "misc/fonts")))) (outputs '("out" "doc")) (build-system gnu-build-system) (arguments - `(#:tests? #f ;no test suite - #:modules ((guix build gnu-build-system) + (list + #:tests? #f ;no test suite + #:modules '((guix build gnu-build-system) (guix build utils) (ice-9 ftw) (srfi srfi-26)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'adjust-includes - (lambda _ - (substitute* (find-files "." "(\\.cpp|\\.mm)$") - (("#include <SDL") - "#include <SDL2/SDL")))) - (delete 'configure) - (replace 'build - (lambda _ - ;; Build main library. - (invoke ,(cc-for-target) "-I" (getcwd) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'adjust-includes + (lambda _ + (substitute* (find-files "." "(\\.cpp|\\.mm)$") + (("#include <SDL") + "#include <SDL2/SDL")))) + (delete 'configure) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + ;; Build main library. + (apply invoke #$(cc-for-target) "-I" (getcwd) + "-I" (search-input-directory inputs "include/freetype2") "-g" "-O2" "-fPIC" "-shared" "-lGL" "-lSDL2" "-lglfw" "-o" "libimgui.so" @@ -76,30 +79,38 @@ "backends/imgui_impl_glfw.cpp" "backends/imgui_impl_sdl.cpp" "backends/imgui_impl_opengl2.cpp" - "backends/imgui_impl_opengl3.cpp"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (doc (assoc-ref outputs "doc")) - (header? (cut string-suffix? ".h" <>)) - (imgui-headers (scandir "." header?)) - (backend-headers (find-files - "backends" - "(glfw|opengl|sdl|vulkan).*\\.h$"))) - (install-file "libimgui.so" (string-append out "/lib")) - ;; Install headers. - (for-each (lambda (f) - (install-file f (string-append out "/include/imgui"))) - imgui-headers) - (for-each (lambda (f) - (install-file f (string-append - out "/include/imgui/backends"))) - backend-headers) - ;; Install examples. - (copy-recursively - "examples" (string-append - doc "/share/imgui/examples")))))))) - (inputs (list glfw mesa sdl2)) + "backends/imgui_impl_opengl3.cpp" + ;; Include wrappers for C++ standard library (STL) and + ;; fontconfig. + (find-files "misc" "\\.cpp$")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc")) + (header? (cut string-suffix? ".h" <>)) + (imgui-headers (scandir "." header?)) + (backend-headers (find-files + "backends" + "(glfw|opengl|sdl|vulkan).*\\.h$")) + (misc-headers (find-files "misc" "\\.h$"))) + (install-file "libimgui.so" (string-append out "/lib")) + ;; Install headers. + (for-each (lambda (f) + (install-file f (string-append out "/include/imgui"))) + imgui-headers) + (for-each (lambda (f) + (install-file f (string-append + out "/include/imgui/backends"))) + backend-headers) + (for-each (lambda (f) + (install-file f (string-append + out "/include/imgui/" (dirname f)))) + misc-headers) + ;; Install examples. + (copy-recursively + "examples" (string-append + doc "/share/imgui/examples")))))))) + (inputs (list fontconfig glfw mesa sdl2)) (home-page "https://github.com/ocornut/imgui") (synopsis "Immediate-mode C++ GUI library with minimal dependencies") (description "@code{dear imgui} (also know as ImGui) is a graphical user |