From 33ae9107d8b60c8c418bc0b7c6ee17af99c85e2f Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 24 Nov 2015 13:35:44 -0500 Subject: gnu: Add tinyxml. * gnu/packages/xml.scm (tinyxml): New variable. * gnu/packages/patches/tinyxml-use-stl.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu/packages/xml.scm | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'gnu/packages/xml.scm') diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index a296e0ac73..e28eddd5a8 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -511,3 +511,72 @@ Libxml2).") UTF-8 and UTF-16 encoding.") ;; LGPL 2.0+ with additional exceptions for static linking (license license:lgpl2.0+))) + +;; TinyXML is an unmaintained piece of software, so the patches and build +;; system massaging have no upstream potential. +(define-public tinyxml + (package + (name "tinyxml") + (version "2.6.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/tinyxml/tinyxml_" + (string-join (string-split version #\.) "_") + ".tar.gz")) + (sha256 + (base32 + "14smciid19lvkxqznfig77jxn5s4iq3jpb47vh5a6zcaqp7gvg8m")) + (patches (list (search-patch "tinyxml-use-stl.patch"))))) + (build-system gnu-build-system) + ;; This library is missing *a lot* of the steps to make it usable, so we + ;; have to add them here, like every other distro must do. + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'build 'build-shared-library + (lambda _ + (zero? (system* "g++" "-Wall" "-O2" "-shared" "-fpic" + "tinyxml.cpp" "tinyxmlerror.cpp" + "tinyxmlparser.cpp" "tinystr.cpp" + "-o" "libtinyxml.so")))) + (replace 'check + (lambda _ (zero? (system "./xmltest")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (include (string-append out "/include")) + (lib (string-append out "/lib")) + (pkgconfig (string-append out "/lib/pkgconfig")) + (doc (string-append out "/share/doc"))) + ;; Install libs and headers. + (install-file "libtinyxml.so" lib) + (install-file "tinystr.h" include) + (install-file "tinyxml.h" include) + ;; Generate and install pkg-config file. + (mkdir-p pkgconfig) + ;; Software such as Kodi expect this file to be present, but + ;; it's not provided in the source code. + (call-with-output-file (string-append pkgconfig "/tinyxml.pc") + (lambda (port) + (format port "prefix=~a +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: TinyXML +Description: A simple, small, C++ XML parser +Version: ~a +Libs: -L${libdir} -ltinyxml +Cflags: -I${includedir} +" + out ,version))) + ;; Install docs. + (mkdir-p doc) + (copy-recursively "docs" (string-append doc "tinyxml")) + #t)))))) + (synopsis "Small XML parser for C++") + (description "TinyXML is a small and simple XML parsing library for the +C++ programming langauge.") + (home-page "http://www.grinninglizard.com/tinyxml/index.html") + (license license:zlib))) -- cgit v1.2.3