From 193cbb3d61cdf3b69e8c00e9b84df66364c52766 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Wed, 25 Sep 2019 16:40:34 +0200 Subject: gnu: freeimage: Build with the C++ 11 standard. This is a follow-up to commit 942c7889498fc8e680a16d500e166c9ade84e640. * gnu/packages/image.scm (freeimage)[arguments]: Pass -std=gnu++11 in CFLAGS. --- gnu/packages/image.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'gnu/packages/image.scm') diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 2a9ee990be..dbc0159e22 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -981,8 +981,11 @@ supplies a generic doubly-linked list and some string functions.") ;; We need '-fpermissive' for Source/FreeImage.h. ;; libjxr doesn't have a pkg-config file. (string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden -fpermissive " - ;"-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib" - )) + ;;"-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib" + + ;; FIXME: OpenEXR 2.4.0 requires C++11 or later. + ;; Remove when the default compiler is > GCC 5. + "-std=gnu++11")) #:tests? #f)) ; no check target (native-inputs `(("pkg-config" ,pkg-config) -- cgit v1.2.3 From 8b9570adc16e62c923d14f1f5ecbc8eb5b89c985 Mon Sep 17 00:00:00 2001 From: Kei Kebreau Date: Mon, 7 Jan 2019 19:32:02 -0500 Subject: gnu: libjxr: Build and install shared library. * gnu/packages/image.scm (libjxr)[arguments]: Add -fPIC to CFLAGS for shared library support. Add 'build-shared-library' phase and modify 'install' phase to install the shared libraries. Signed-off-by: Marius Bakke --- gnu/packages/image.scm | 90 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 30 deletions(-) (limited to 'gnu/packages/image.scm') diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index dbc0159e22..d1a4a58575 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -437,36 +437,66 @@ lossless JPEG manipulations such as rotation, scaling or cropping: (patches (search-patches "libjxr-fix-function-signature.patch" "libjxr-fix-typos.patch")))) (build-system gnu-build-system) - (arguments '(#:make-flags '("CC=gcc") - #:tests? #f ; no check target - #:phases - (modify-phases %standard-phases - (delete 'configure) ; no configure script - ;; The upstream makefile does not include an install phase. - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (lib (string-append out "/lib")) - (include (string-append out "/include/jxrlib"))) - (for-each (lambda (file) - (install-file file include) - (delete-file file)) - (append - '("jxrgluelib/JXRGlue.h" - "jxrgluelib/JXRMeta.h" - "jxrtestlib/JXRTest.h" - "image/sys/windowsmediaphoto.h") - (find-files "common/include" "\\.h$"))) - (for-each (lambda (file) - (install-file file lib) - (delete-file file)) - (find-files "." "\\.a$")) - (for-each (lambda (file) - (install-file file bin) - (delete-file file)) - '("JxrDecApp" "JxrEncApp"))) - #t))))) + (arguments + '(#:make-flags + (list "CC=gcc" + ;; A substitute* procedure call would be enough to add the -fPIC + ;; flag if there was no file decoding error. + ;; The makefile is a "Non-ISO extended-ASCII text, with CRLF line + ;; terminators" according to the file(1) utility. + (string-append "CFLAGS=-I. -Icommon/include -Iimage/sys -fPIC " + "-D__ANSI__ -DDISABLE_PERF_MEASUREMENT -w -O ")) + #:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-after 'build 'build-shared-library + (lambda _ + ;; The Makefile uses optimization level 1, so the same + ;; level is used here for consistency. + (invoke "gcc" "-shared" "-fPIC" "-O" + ;; Common files. + "adapthuff.o" "image.o" "strcodec.o" "strPredQuant.o" + "strTransform.o" "perfTimerANSI.o" + ;; Decoding files. + "decode.o" "postprocess.o" "segdec.o" "strdec.o" + "strInvTransform.o" "strPredQuantDec.o" "JXRTranscode.o" + ;; Encoding files. + "encode.o" "segenc.o" "strenc.o" "strFwdTransform.o" + "strPredQuantEnc.o" + "-o" "libjpegxr.so") + (invoke "gcc" "-shared" "-fPIC" "-O" + ;; Glue files. + "JXRGlue.o" "JXRMeta.o" "JXRGluePFC.o" "JXRGlueJxr.o" + ;; Test files. + "JXRTest.o" "JXRTestBmp.o" "JXRTestHdr.o" "JXRTestPnm.o" + "JXRTestTif.o" "JXRTestYUV.o" + "-o" "libjxrglue.so"))) + ;; The upstream makefile does not include an install phase. + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lib (string-append out "/lib")) + (include (string-append out "/include/jxrlib"))) + (for-each (lambda (file) + (install-file file include) + (delete-file file)) + (append + '("jxrgluelib/JXRGlue.h" + "jxrgluelib/JXRMeta.h" + "jxrtestlib/JXRTest.h" + "image/sys/windowsmediaphoto.h") + (find-files "common/include" "\\.h$"))) + (for-each (lambda (file) + (install-file file lib) + (delete-file file)) + (find-files "." "\\.(a|so)$")) + (for-each (lambda (file) + (install-file file bin) + (delete-file file)) + '("JxrDecApp" "JxrEncApp"))) + #t))))) (synopsis "Implementation of the JPEG XR standard") (description "JPEG XR is an approved ISO/IEC International standard (its official designation is ISO/IEC 29199-2). This library is an implementation of that standard.") -- cgit v1.2.3 From 8dc3c2a7d5fbe28b6f8ae27788b053be0d87b0b6 Mon Sep 17 00:00:00 2001 From: Kei Kebrau Date: Mon, 7 Jan 2019 19:36:49 -0500 Subject: gnu: freeimage: Update to 3.18.0. * gnu/packages/image.scm (freeimage): Update to 3.18.0. [source]: Modify snippet to remove the bundled libjxr. Remove obsolete patches. [arguments]: Add libjxr include directory to #:make-flags. [inputs]: Add libjxr. * gnu/packages/patches/freeimage-CVE-2015-0852.patch, gnu/packages/patches/freeimage-CVE-2016-5684.patch, gnu/packages/patches/freeimage-fix-build-with-gcc-5.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Unregister patches. * gnu/packages/patches/freeimage-unbundle.patch: Update patch. Signed-off-by: Marius Bakke --- gnu/packages/image.scm | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'gnu/packages/image.scm') diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index d1a4a58575..d03f4548c5 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -957,7 +957,7 @@ supplies a generic doubly-linked list and some string functions.") (define-public freeimage (package (name "freeimage") - (version "3.17.0") + (version "3.18.0") (source (origin (method url-fetch) (uri (string-append @@ -967,7 +967,7 @@ supplies a generic doubly-linked list and some string functions.") ".zip")) (sha256 (base32 - "12bz57asdcfsz3zr9i9nska0fb6h3z2aizy412qjqkixkginbz7v")) + "1z9qwi9mlq69d5jipr3v2jika2g0kszqdzilggm99nls5xl7j4zl")) (modules '((guix build utils))) (snippet '(begin @@ -975,12 +975,8 @@ supplies a generic doubly-linked list and some string functions.") (lambda (dir) (delete-file-recursively (string-append "Source/" dir))) '("LibJPEG" "LibOpenJPEG" "LibPNG" "LibRawLite" - ;; "LibJXR" - "LibWebP" "OpenEXR" "ZLib")))) - (patches (search-patches "freeimage-unbundle.patch" - "freeimage-CVE-2015-0852.patch" - "freeimage-CVE-2016-5684.patch" - "freeimage-fix-build-with-gcc-5.patch")))) + "LibJXR" "LibWebP" "OpenEXR" "ZLib")))) + (patches (search-patches "freeimage-unbundle.patch")))) (build-system gnu-build-system) (arguments '(#:phases @@ -1011,7 +1007,7 @@ supplies a generic doubly-linked list and some string functions.") ;; We need '-fpermissive' for Source/FreeImage.h. ;; libjxr doesn't have a pkg-config file. (string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden -fpermissive " - ;;"-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib" + "-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib " ;; FIXME: OpenEXR 2.4.0 requires C++11 or later. ;; Remove when the default compiler is > GCC 5. @@ -1022,7 +1018,7 @@ supplies a generic doubly-linked list and some string functions.") ("unzip" ,unzip))) (inputs `(("libjpeg" ,libjpeg) - ;("libjxr" ,libjxr) + ("libjxr" ,libjxr) ("libpng" ,libpng) ("libraw" ,libraw) ("libtiff" ,libtiff) -- cgit v1.2.3