gienah 15/07/07 13:25:35 Added: octave-4.0.0-imagemagick.patch octave-4.0.0-llvm-3.5.patch octave-4.0.0-imagemagick-configure.patch Log: Bump octave to 4.0.0, fixes Bug 550858 - sci-mathematics/octave-4.0 version bump, thanks to Bohdan Trach for reporting. octave 4.0.0 allows llvm 3.5, fixing Bug 531672 - sci-mathematics/octave-3.8.2 USE=jit depends on <sys-devel/llvm-3.5, thanks to Juergen Rose for reporting and eroen for an upstream bug reference. Fix Bug 539886 - sci-mathematics/octave-3.8.2 should depend on x11-libs/fltk[opengl,xft], thanks to Andreas Fink for reporting and the fix. (Portage version: 2.2.20/cvs/Linux x86_64, signed Manifest commit with key 618E971F)
Revision Changes Path 1.1 sci-mathematics/octave/files/octave-4.0.0-imagemagick.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-mathematics/octave/files/octave-4.0.0-imagemagick.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-mathematics/octave/files/octave-4.0.0-imagemagick.patch?rev=1.1&content-type=text/plain Index: octave-4.0.0-imagemagick.patch =================================================================== --- octave-4.0.0-orig/libinterp/dldfcn/__magick_read__.cc 2015-05-24 00:21:53.000000000 +1000 +++ octave-4.0.0/libinterp/dldfcn/__magick_read__.cc 2015-07-06 18:17:52.263146804 +1000 @@ -38,8 +38,15 @@ #include "gripes.h" #ifdef HAVE_MAGICK - +#define MAGICKCORE_EXCLUDE_DEPRECATED 1 #include <Magick++.h> +#if !defined(QuantumRange) && defined(MaxRGB) +#define QuantumRange MaxRGB +#endif +#if !defined(MAGICKCORE_QUANTUM_DEPTH) && defined(QuantumDepth) +#define MAGICKCORE_QUANTUM_DEPTH QuantumDepth +#endif + #include <clocale> // In theory, it should be enough to check the class: @@ -121,12 +128,18 @@ get_depth (Magick::Image& img) { octave_idx_type depth = img.depth (); +#if defined(MagickLibVersion) && (MagickLibVersion <= 0x686) +#define Magick MagickCore +#endif if (depth == 8 && img.channelDepth (Magick::RedChannel) == 1 && img.channelDepth (Magick::CyanChannel) == 1 && img.channelDepth (Magick::OpacityChannel) == 1 && img.channelDepth (Magick::GrayChannel) == 1) depth = 1; +#if defined(MagickLibVersion) && (MagickLibVersion <= 0x686) +#undef Magick +#endif return depth; } @@ -350,7 +363,10 @@ if (imvec[def_elem].depth () == 32) divisor = std::numeric_limits<uint32_t>::max (); else - divisor = MaxRGB / ((uint64_t (1) << imvec[def_elem].depth ()) - 1); + { + using namespace Magick; + divisor = QuantumRange / ((uint64_t (1) << imvec[def_elem].depth ()) - 1); + } // FIXME: this workaround should probably be fixed in GM by creating a // new ImageType BilevelMatteType @@ -484,7 +500,8 @@ for (octave_idx_type row = 0; row < nRows; row++) { img_fvec[idx] = pix->red / divisor; - a_fvec[idx] = (MaxRGB - pix->opacity) / divisor; + using namespace Magick; + a_fvec[idx] = (QuantumRange - pix->opacity) / divisor; pix += row_shift; idx++; } @@ -563,7 +580,8 @@ rbuf[idx] = pix->red / divisor; gbuf[idx] = pix->green / divisor; bbuf[idx] = pix->blue / divisor; - a_fvec[a_idx++] = (MaxRGB - pix->opacity) / divisor; + using namespace Magick; + a_fvec[a_idx++] = (QuantumRange - pix->opacity) / divisor; pix += row_shift; idx++; } @@ -650,7 +668,8 @@ mbuf[idx] = pix->green / divisor; ybuf[idx] = pix->blue / divisor; kbuf[idx] = pix->opacity / divisor; - a_fvec[a_idx++] = (MaxRGB - *apix) / divisor; + using namespace Magick; + a_fvec[a_idx++] = (QuantumRange - *apix) / divisor; pix += row_shift; idx++; } @@ -709,10 +728,11 @@ // Restore locale from before GraphicsMagick initialisation setlocale (LC_ALL, locale.c_str ()); - if (QuantumDepth < 32) + using namespace Magick; + if (MAGICKCORE_QUANTUM_DEPTH < 32) warning_with_id ("Octave:GraphicsMagic-Quantum-Depth", "your version of %s limits images to %d bits per pixel", - MagickPackageName, QuantumDepth); + MagickPackageName, MAGICKCORE_QUANTUM_DEPTH); initialized = true; } @@ -1087,8 +1107,9 @@ // From GM documentation: // Color arguments are must be scaled to fit the Quantum size according to // the range of MaxRGB + using namespace Magick; const double divisor = static_cast<double>((uint64_t (1) << bitdepth) - 1) - / MaxRGB; + / QuantumRange; const P *img_fvec = img.fortran_vec (); const P *a_fvec = alpha.fortran_vec (); @@ -1140,8 +1161,9 @@ for (octave_idx_type row = 0; row < nRows; row++) { double grey = double (*img_fvec) / divisor; + using namespace Magick; Magick::Color c (grey, grey, grey, - MaxRGB - (double (*a_fvec) / divisor)); + QuantumRange - (double (*a_fvec) / divisor)); pix[GM_idx] = c; img_fvec++; a_fvec++; @@ -1209,10 +1231,11 @@ { for (octave_idx_type row = 0; row < nRows; row++) { + using namespace Magick; Magick::Color c (double (*img_fvec) / divisor, double (img_fvec[G_offset]) / divisor, double (img_fvec[B_offset]) / divisor, - MaxRGB - (double (*a_fvec) / divisor)); + QuantumRange - (double (*a_fvec) / divisor)); pix[GM_idx] = c; img_fvec++; a_fvec++; @@ -1290,7 +1313,8 @@ double (img_fvec[Y_offset]) / divisor, double (img_fvec[K_offset]) / divisor); pix[GM_idx] = c; - ind[GM_idx] = MaxRGB - (double (*a_fvec) / divisor); + using namespace Magick; + ind[GM_idx] = QuantumRange - (double (*a_fvec) / divisor); img_fvec++; a_fvec++; GM_idx += nCols; 1.1 sci-mathematics/octave/files/octave-4.0.0-llvm-3.5.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-mathematics/octave/files/octave-4.0.0-llvm-3.5.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-mathematics/octave/files/octave-4.0.0-llvm-3.5.patch?rev=1.1&content-type=text/plain Index: octave-4.0.0-llvm-3.5.patch =================================================================== diff -r 3797df921988 configure.ac --- a/configure.ac Wed Apr 29 17:09:24 2015 -0700 +++ b/configure.ac Sun May 03 22:48:56 2015 +0200 @@ -815,8 +815,13 @@ AC_MSG_NOTICE([using -isystem for LLVM headers])]) dnl Use -isystem so we don't get warnings from llvm headers - LLVM_CPPFLAGS="$LLVM_INCLUDE_FLAG `$LLVM_CONFIG --includedir`" - LLVM_CXXFLAGS= + AX_CHECK_COMPILE_FLAG([-std=c++11],[ + LLVM_CPPFLAGS="-std=c++11 $LLVM_INCLUDE_FLAG `$LLVM_CONFIG --includedir`" + LLVM_CXXFLAGS="-std=c++11" + ],[ + LLVM_CPPFLAGS="$LLVM_INCLUDE_FLAG `$LLVM_CONFIG --includedir`" + LLVM_CXXFLAGS= + ]) LLVM_LDFLAGS="-L`$LLVM_CONFIG --libdir`" @@ -860,6 +865,8 @@ OCTAVE_LLVM_CALLINST_ADDATTRIBUTE_API OCTAVE_LLVM_RAW_FD_OSTREAM_API OCTAVE_LLVM_LEGACY_PASSMANAGER_API + OCTAVE_LLVM_DATALAYOUTPASS_API + AC_LANG_POP(C++) CPPFLAGS="$save_CPPFLAGS" CXXFLAGS="$save_CXXFLAGS" diff -r 3797df921988 libinterp/corefcn/jit-typeinfo.cc --- a/libinterp/corefcn/jit-typeinfo.cc Wed Apr 29 17:09:24 2015 -0700 +++ b/libinterp/corefcn/jit-typeinfo.cc Sun May 03 22:48:56 2015 +0200 @@ -1208,7 +1208,7 @@ for (int op = 0; op < octave_value::num_binary_ops; ++op) { llvm::Twine fn_name ("octave_jit_binary_any_any_"); - fn_name = fn_name + llvm::Twine (op); + fn_name.concat( llvm::Twine (op) ); fn = create_internal (fn_name, any, any, any); fn.mark_can_error (); diff -r 3797df921988 libinterp/corefcn/pt-jit.cc --- a/libinterp/corefcn/pt-jit.cc Wed Apr 29 17:09:24 2015 -0700 +++ b/libinterp/corefcn/pt-jit.cc Sun May 03 22:48:56 2015 +0200 @@ -59,6 +59,7 @@ #include <llvm/Bitcode/ReaderWriter.h> #include <llvm/ExecutionEngine/ExecutionEngine.h> +#include <llvm/ExecutionEngine/MCJIT.h> #include <llvm/ExecutionEngine/JIT.h> #ifdef LEGACY_PASSMANAGER @@ -83,6 +84,7 @@ #include <llvm/IRBuilder.h> #endif +#include <llvm/Support/FileSystem.h> #include <llvm/Support/raw_os_ostream.h> #include <llvm/Support/TargetSelect.h> @@ -2077,7 +2079,11 @@ module_pass_manager->add (llvm::createAlwaysInlinerPass ()); #ifdef HAVE_LLVM_DATALAYOUT +#ifdef HAVE_LLVM_DATALAYOUTPASS + pass_manager->add (new llvm::DataLayoutPass (*engine->getDataLayout ())); +#else pass_manager->add (new llvm::DataLayout (*engine->getDataLayout ())); +#endif #else pass_manager->add (new llvm::TargetData (*engine->getTargetData ())); #endif @@ -2192,7 +2198,7 @@ std::string error; #ifdef RAW_FD_OSTREAM_ARG_IS_LLVM_SYS_FS llvm::raw_fd_ostream fout ("test.bc", error, - llvm::sys::fs::F_Binary); + llvm::sys::fs::F_Text); #else llvm::raw_fd_ostream fout ("test.bc", error, llvm::raw_fd_ostream::F_Binary); diff -r 3797df921988 m4/acinclude.m4 --- a/m4/acinclude.m4 Wed Apr 29 17:09:24 2015 -0700 +++ b/m4/acinclude.m4 Sun May 03 22:48:56 2015 +0200 @@ -1784,10 +1784,11 @@ [AC_LANG_PUSH(C++) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ + #include <llvm/Support/FileSystem.h> #include <llvm/Support/raw_os_ostream.h> ]], [[ std::string str; - llvm::raw_fd_ostream fout ("", str, llvm::sys::fs::F_Binary); + llvm::raw_fd_ostream fout ("", str, llvm::sys::fs::F_Text); ]])], octave_cv_raw_fd_ostream_arg_is_llvm_sys_fs=yes, octave_cv_raw_fd_ostream_arg_is_llvm_sys_fs=no) @@ -1828,6 +1829,33 @@ fi ]) dnl +dnl Check for llvm::DataLayoutPass API +dnl +AC_DEFUN([OCTAVE_LLVM_DATALAYOUTPASS_API], [ + AC_CACHE_CHECK([check for LLVM::DataLayoutPass], + [octave_cv_datalayoutpass], + [AC_LANG_PUSH(C++) + save_LIBS="$LIBS" + LIBS="$LLVM_LIBS $LIBS" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ + #include <llvm/IR/DataLayout.h> + ]], [[ + llvm::Module *module; + llvm::DataLayoutPass *datalayoutpass; + datalayoutpass = new llvm::DataLayoutPass (module) + ]])], + octave_cv_datalayoutpass=yes, + octave_cv_datalayoutpass=no) + LIBS="$save_LIBS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_datalayoutpass = yes; then + AC_DEFINE(HAVE_LLVM_DATALAYOUTPASS, 1, + [Define to 1 if LLVM::DataLayoutPass exists.]) + fi +]) +dnl dnl Check for ar. dnl AC_DEFUN([OCTAVE_PROG_AR], [ 1.1 sci-mathematics/octave/files/octave-4.0.0-imagemagick-configure.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-mathematics/octave/files/octave-4.0.0-imagemagick-configure.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sci-mathematics/octave/files/octave-4.0.0-imagemagick-configure.patch?rev=1.1&content-type=text/plain Index: octave-4.0.0-imagemagick-configure.patch =================================================================== --- octave-4.0.0-orig/configure.ac 2015-05-27 02:16:39.000000000 +1000 +++ octave-4.0.0/configure.ac 2015-07-06 18:11:43.461136517 +1000 @@ -1086,11 +1086,11 @@ MAGICK_LIBS= PKG_CHECK_EXISTS([$magick++], [ - ## Make sure we only get -I, -L, and -l flags. Some Graphics/ImageMagick++ + ## Make sure we only get -I, -D, -L, and -l flags. Some Graphics/ImageMagick++ ## packages add extra flags that are useful when building ## Graphics/ImageMagick++ extentions. These extra flags break the ## Octave build. - MAGICK_CPPFLAGS=`$PKG_CONFIG --cflags-only-I $magick++` + MAGICK_CPPFLAGS=`$PKG_CONFIG --cflags $magick++ | sed -e 's/\(-@<:@DI@:>@@<:@^ \t@:>@*\)\|\(-@<:@^ \t@:>@*\)/\1/g'` MAGICK_LDFLAGS=`$PKG_CONFIG --libs-only-L $magick++` MAGICK_LIBS=`$PKG_CONFIG --libs-only-l $magick++`