pkgsrc/math/octave/Makefile

133 lines
4.4 KiB
Makefile
Raw Normal View History

# $NetBSD: Makefile,v 1.164 2018/01/28 20:10:55 wiz Exp $
Octave: update to 4.2.0 pkgsrc changes: removed all patches to do with qt5 support, upstream code does it now. blindly moved some patches that were replacing INSTALL_PROGRAM to INSTALL_LIB as the build changed. added patch replacing struct tm_zone with timezone_t to accommodate for missing type in NetBSD - same as libgnu does. ok adam Summary of important user-visible changes for version 4.2: --------------------------------------------------------- ** The parser has been extended to accept, but ignore, underscore characters in numbers. This facilitates writing more legible code by using '_' as a thousands separator or to group nibbles into bytes in hex constants. Examples: 1_000_000 == 1e6 or 0xDE_AD_BE_EF ** The parser has been extended to understand binary numbers which begin with the prefix '0b' or '0B'. The value returned is Octave's default numeric class of double, not at unsigned integer class. Therefore numbers greater than flintmax, i.e., 2^53, will lose some precision. Examples: 0b101 == 5 or 0B1100_0001 == 0xC1 ** gnuplot 4.4 is now the minimum version supported by Octave. ** The default set of colors used to plot lines has been updated to be compatible with Matlab's new default color scheme. The line plot color scheme can be set with the axes property "ColorOrder". ** The default colormap is now set to "viridis" which is also the default colormap in matplotlib. This new colormap fixes some of the main issues with the old default colormap "jet" such as its bad "luminance profile" and is also more similar to Matlab's new default colormap "parula". ** The colormap function no longer supports the input argument "list" to show built-in colormaps. Use "help colormap" to find the built-in colormaps. ** The graphics command "hold on" now ensures that each new plot added to an existing plot has a different color or linestyle according to the "ColorOrder" and/or "LineStyleOrder" properties. This is equivalent to the old command "hold all" and was made for Matlab compatibility. Existing code *may* produce differently colored plots if it did not specify the color for a plot and relied on each new plot having the default first color in the "ColorOrder" property. ** When starting, Octave now looks in the function path for a file startup.m and executes any commands found there. This change was made to accommodate Matlab users. Octave has it's own configuration system based on the file .octaverc which is preferred. ** Octal ('\NNN') and hex ('\xNN') escape sequences in single quoted strings are now interpreted by the function do_string_escapes(). The *printf family of functions now supports octal and hex escape sequences in single-quoted strings for Matlab compatibility. ** Special octal and hex escape sequences for the pattern and replacement strings in regular expressions are now interpreted for Matlab compatibility. octal: '\oNNN' or '\o{NNN}' hex : '\xNN' or '\x{NN}' ** Unknown escape sequences in the replacement string for regexprep are now substituted with their unescaped version and no warning is emitted. This change was made for Matlab compatibility. Example: regexprep ('a', 'a', 'x\yz') => 'xyz' ** mkfifo now interprets the MODE argument as an octal, not decimal, integer. This is consistent with the equivalent shell command. ** linspace now returns an empty matrix if the number of requested points is 0 or a negative number. This change was made to be compatible with Matlab releases newer than 2011. In addition, Octave no longer supports matrix inputs for A or B. ** The cov function now returns the complex conjugate of the result from previous versions of Octave. This change was made for compatibility with Matlab. ** condest now works with a normest1 compatible syntax. ** The griddata function no longer plots the interpolated mesh if no output argument is requested, instead the vector or array of interpolated values is always returned for Matlab compatibility. ** The new function "light" and the corresponding graphics object provide light and shadow effects for patch and surface objects. ** The surfnorm function now returns unnormalized (magnitude != 1) normal vectors for compatibility with Matlab. ** The normal vectors returned from isonormals have been reversed to point towards smaller values for compatibility with Matlab. ** The quadl function now uses an absolute, rather than relative, tolerance for Matlab compatibility. The default tolerance is 1e-6 which may result in lower precision results than previous versions of Octave which used eps as the relative tolerance. The quadl function has also been extended to return a second output with the total number of function evaluations. ** The textscan function is now built-in and is much faster and much more Matlab-compatible than the previous m-file version. ** Dialog boxes--errordlg, helpdlg, inputdlg, listdlg, msgbox, questdlg, and warndlg--now exclusively use Qt for rendering. Java based versions have been removed. ** The axes properties "TitleFontSizeMultiplier" and "TitleFontWeight" are now implemented which control the default appearance of text created with title(). The axes property "LabelFontSizeMultiplier" is now implemented which controls the default appearance of text created with xlabel(), ylabel(), or zlabel(). ** The graphics property "box" for axes now defaults to "off". To obtain equivalent plots to previous versions of Octave use set (0, "DefaultAxesBox", "on"); in your .octaverc file. ** The graphics property "boxstyle" has been implemented. The default is "back" which draws only the back planes in a 3-D view. If the option is "full" then all planes are drawn. ** The graphics property "erasemode" has been hidden, and will eventually be removed. This property has also been removed from Matlab, and was never implemented in Octave. ** The graphics property "graphicssmoothing" for figures now controls whether anti-aliasing will be used for lines. The default is "on". ** The value "zero" for the axes properties "xaxislocation" and "yaxislocation" has been deprecated and will be removed from Octave 4.6. Use "origin" instead. ** The publish function allows easy publication of Octave script files in HTML or other formats, including figures and output created by this script. It comes with its counterpart grabcode, which lets one literally grab the HTML published code from a remote website, for example. ** The value of the MEX variable TrapFlag now defaults to 0, which will cause Octave to abort execution of a MEX file and return to the prompt if an error is encountered in mexCallMATLAB. ** The MEX API now includes the function mexCallMATLABWithTrap. This function will not abort if an error occurs during mexCallMATLAB, but instead will return execution to the MEX function for error handling. ** The MEX API functions for input validation that begin with "mxIs" (e.g., mxIsDouble, mxIsEmpty, etc.) now return type bool rather than type int. ** The functions mxAssert and mxAssertS for checking assertions have been added. In order to avoid a performance penalty they are only compiled in to debug versions of a MEX file, i.e., that are produced when the '-g' option is given to mex or mkoctfile. ** Other new MEX API functions include mexEvalStringWithTrap, mxIsScalar, mxCreateUninitNumericArray, mxCreateUninitNumericMatrix. ** Other new functions added in 4.2: audioformats camlight condeig deg2rad dialog evalc hash im2double isocaps lighting localfunctions material normest1 ode23 ode45 odeget odeplot odeset padecoef profexport psi rad2deg reducepatch reducevolume smooth3 uibuttongroup ** Deprecated functions. The following functions have been deprecated in Octave 4.2 and will be removed from Octave 4.6 (or whatever version is the second major release after 4.2): Function | Replacement ---------------------|------------------ bitmax | flintmax mahalanobis | mahal in Octave-Forge statistics pkg md5sum | hash octve_config_info | __octave_config_info__ onenormest | normest1 sleep | pause usleep | pause wavread | audioread wavwrite | audiowrite ** The following functions were deprecated in Octave 3.8 and have been removed from Octave 4.2. default_save_options java_new gen_doc_cache java_unsigned_conversion interp1q javafields isequalwithequalnans javamethods java_convert_matrix re_read_readline_init_file java_debug read_readline_init_file java_invoke saving_history ** The global error_state variable in Octave's C++ API has been deprecated and will be removed in a future version. Now the error and print_usage functions throw an exception (octave::execution_exception) after displaying the error message. This makes the error and print_usage functions in C++ work more like the corresponding functions in the scripting language. ** The default error handlers in liboctave have been updated to use exceptions. After displaying an error message they no longer return control to the calling program. The error handler function can be customized through the global variables "current_liboctave_error_handler" and "current_liboctave_error_with_id_handler". If a programmer has installed their own custom error handling routines when directly linking with liboctave then these must be updated to throw an exception and not return to the calling program. ** The system for common errors and warnings has been renamed from gripe_XXX to either err_XXX if error is called or warn_XXX if warning is called. The gripe_XXX functions are deprecated and will be removed in version 4.6. ** New configure option, --enable-address-sanitizer-flags, to build Octave with memory allocator checks (similar to those in valgrind) built in.
2016-11-19 22:53:12 +01:00
DISTNAME= octave-4.2.0
PKGREVISION= 19
CATEGORIES= math
2014-05-04 15:46:42 +02:00
MASTER_SITES= ${MASTER_SITE_GNU:=octave/}
2005-04-01 12:15:46 +02:00
MAINTAINER= adam@NetBSD.org
HOMEPAGE= http://www.octave.org/
2005-04-01 12:15:46 +02:00
COMMENT= High-level language, intended for numerical computations
2014-05-04 15:49:57 +02:00
LICENSE= gnu-gpl-v3
# These BUILD_DEPENDS are only needed if we need to rebuild the documentation
#BUILD_DEPENDS+= tex-latex-fonts-[0-9]*:../../fonts/tex-latex-fonts
#BUILD_DEPENDS+= dvipsk-[0-9]*:../../print/dvipsk
#BUILD_DEPENDS+= tex-epsf-[0-9]*:../../print/tex-epsf
#BUILD_DEPENDS+= tex-tex-[0-9]*:../../print/tex-tex
#BUILD_DEPENDS+= tex-pdftex-[0-9]*:../../print/tex-pdftex
#TOOL_DEPENDS+= gtexinfo>=5.1:../../devel/gtexinfo
2005-04-01 12:15:46 +02:00
DEPENDS+= gnuplot>=3.7:../../graphics/gnuplot
2001-03-29 23:21:36 +02:00
Update to Octave 3.4.3 This makes the package build and work at least in NetBSD on some platforms. Summary of important user-visible changes for version 3.4.3: ----------------------------------------------------------- ** Octave 3.4.3 is a bug fixing release. Summary of important user-visible changes for version 3.4.2: ----------------------------------------------------------- ** Octave 3.2.4 fixes some minor installation problems that affected version 3.4.1. Summary of important user-visible changes for version 3.4.1: ----------------------------------------------------------- ** Octave 3.4.1 is primarily a bug fixing release. ** IMPORTANT note about binary incompatibility in this release: Binary compatibility for all 3.4.x releases was originally planned, but this is impossible for the 3.4.1 release due to a bug in the way shared libraries were built in Octave 3.4.0. Because of this bug, .oct files built for Octave 3.4.0 must be recompiled before they will work with Octave 3.4.1. Given that there would be binary incompatibilities with shared libraries going from Octave 3.4.0 to 3.4.1, the following incompatible changes were also made in this release: * The Perl Compatible Regular Expression (PCRE) library is now required to build Octave. * Octave's libraries and .oct files are now installed in subdirectories of $libdir instead of $libexecdir. Any future Octave 3.4.x release versions should remain binary compatible with Octave 3.4.1 as proper library versioning is now being used as recommended by the libtool manual. ** The following functions have been deprecated in Octave 3.4.1 and will be removed from Octave 3.8 (or whatever version is the second major release after 3.4): cquad is_duplicate_entry perror strerror ** The following functions are new in 3.4.1: colstyle gmres iscolumn isrow mgorth nproc rectangle ** The get_forge_pkg function is now private. ** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw functions are now private. ** The logistic_regression_derivatives and logistic_regression_likelihood functions are now private. ** ChangeLog files in the Octave sources are no longer maintained by hand. Instead, there is a single ChangeLog file generated from the Mercurial version control commit messages. Older ChangeLog information can be found in the etc/OLD-ChangeLogs directory in the source distribution. Summary of important user-visible changes for version 3.4: --------------------------------------------------------- ** BLAS and LAPACK libraries are now required to build Octave. The subset of the reference BLAS and LAPACK libraries has been removed from the Octave sources. ** The `lookup' function was extended to be more useful for general-purpose binary searching. Using this improvement, the ismember function was rewritten for significantly better performance. ** Real, integer and logical matrices, when used in indexing, will now cache the internal index_vector value (zero-based indices) when successfully used as indices, eliminating the conversion penalty for subsequent indexing by the same matrix. In particular, this means it is no longer needed to avoid repeated indexing by logical arrays using find for performance reasons. ** Logical matrices are now treated more efficiently when used as indices. Octave will keep the index as a logical mask unless the ratio of true elements is small enough, using a specialized code. Previously, all logical matrices were always first converted to index vectors. This results in savings in both memory and computing time. ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled functions for better performance. These functions are now faster, can deliver more economized results for ranges, and can reuse the index cache mechanism described in previous paragraph. ** The built-in function equivalents to associative operators (`plus', `times', `mtimes', `and', and `or') have been extended to accept multiple arguments. This is especially useful for summing (multiplying, etc.) lists of objects (of possibly distinct types): matrix_sum = plus (matrix_list{:}); ** An FTP object type based on libcurl has been implemented. These objects allow ftp connections, downloads and uploads to be managed. For example, fp = ftp ("ftp.octave.org); cd (fp, "gnu/octave"); mget (fp, "octave-3.2.3.tar.bz2"); close (fp); ** The default behavior of `assert (observed, expected)' has been relaxed to employ less strict checking that does not require the internals of the values to match. This avoids previously valid tests from breaking due to new internal classes introduced in future Octave versions. For instance, all of these assertions were true in Octave 3.0.x but false in 3.2.x due to new optimizations and improvements: assert (2*linspace (1, 5, 5), 2*(1:5)) assert (zeros (0, 0), []) assert (2*ones (1, 5), (2) (ones (1,5))) ** The behavior of library functions `ismatrix', `issquare', and `issymmetric' has been changed for better consistency. * The `ismatrix' function now returns true for all numeric, logical and character 2-D or N-D matrices. Previously, `ismatrix' returned false if the first or second dimension was zero. Hence, `ismatrix ([])' was false, while `ismatrix (zeros (1,2,0))' was true. * The `issquare' function now returns a logical scalar, and is equivalent to the expression ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x) The dimension is no longer returned. As a result, `issquare ([])' now yields true. * The `issymmetric' function now checks for symmetry instead of Hermitianness. For the latter, ishermitian was created. Also, logical scalar is returned rather than the dimension, so `issymmetric ([])' is now true. ** Function handles are now aware of overloaded functions. If a function is overloaded, the handle determines at the time of its reference which function to call. A non-overloaded version does not need to exist. ** Overloading functions for built-in classes (double, int8, cell, etc.) is now compatible with Matlab. ** Function handles can now be compared with the == and != operators, as well as the `isequal' function. ** Performance of concatenation (using []) and the functions `cat', `horzcat', and `vertcat' has been improved for multidimensional arrays. ** The operation-assignment operators +=, -=, *= and /= now behave more efficiently in certain cases. For instance, if M is a matrix and S a scalar, then the statement M += S; will operate on M's data in-place if it is not shared by another variable, usually increasing both time and memory efficiency. Only selected common combinations are affected, namely: matrix += matrix matrix -= matrix matrix .*= matrix matrix ./= matrix matrix += scalar matrix -= scalar matrix *= scalar matrix /= scalar logical matrix |= logical matrix logical matrix &= logical matrix where matrix and scalar belong to the same class. The left-hand side must be a simple variable reference. Moreover, when unary operators occur in expressions, Octave will also try to do the operation in-place if it's argument is a temporary expresssion. ** The effect of comparison operators (<, >, <=, and >=) applied to complex numbers has changed to be consistent with the strict ordering defined by the `max', `min', and `sort' functions. More specifically, complex numbers are compared by lexicographical comparison of the pairs `[abs(z), arg(z)]'. Previously, only real parts were compared; this can be trivially achieved by wrapping the operands in real(). ** The automatic simplification of complex computation results has changed. Octave will now simplify any complex number with a zero imaginary part or any complex matrix with all elements having zero imaginary part to a real value. Previously, this was done only for positive zeros. Note that the behavior of the complex function is unchanged and it still produces a complex value even if the imaginary part is zero. ** As a side effect of code refactoring in liboctave, the binary logical operations are now more easily amenable to compiler optimizations and are thus significantly faster. ** Octave now allows user-defined `subsasgn' methods to optimize out redundant copies. For more information, see the manual. ** More efficient matrix division handling. Octave is now able to handle the expressions M' \ V M.' \ V V / M (M is a matrix and V is a vector) more efficiently in certain cases. In particular, if M is triangular, all three expressions will be handled by a single call to xTRTRS (from LAPACK), with appropriate flags. Previously, all three expressions required a physical transpose of M. ** More efficient handling of certain mixed real-complex matrix operations. For instance, if RM is a real matrix and CM a complex matrix, RM * CM can now be evaluated either as complex (RM * real (CM), RM * imag (CM)) or as complex (RM) * CM, depending on the dimensions. The first form requires more temporaries and copying, but halves the FLOP count, which normally brings better performance if RM has enough rows. Previously, the second form was always used. Matrix division is similarly affected. ** More efficient handling of triangular matrix factors returned from factorizations. The functions for computing QR, LU and Cholesky factorizations will now automatically return the triangular matrix factors with proper internal matrix_type set, so that it won't need to be computed when the matrix is used for division. ** The built-in `sum' function now handles the non-native summation (i.e., double precision sum of single or integer inputs) more efficiently, avoiding a temporary conversion of the whole input array to doubles. Further, `sum' can now accept an extra option argument, using a compensated summation algorithm rather than a straightforward sum, which significantly improves precision if lots of cancellation occurs in the summation. ** The built-in `bsxfun' function now uses optimized code for certain cases where built-in operator handles are passed in. Namely, the optimizations concern the operators `plus', `minus', `times', `ldivide', `rdivide', `power', `and', `or' (for logical arrays), the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the functions `min' and `max'. Optimizations only apply when both operands are of the same built-in class. Mixed real/complex and single/double operations will first convert both operands to a common type. ** The `strfind' and `strrep' functions now have compiled implementations, facilitating significantly more efficient searching and replacing in strings, especially with longer patterns. The code of `strcat' has been vectorized and is now much more efficient when many strings are concatenated. The `strcmpi' and `strncmpi' functions are now built-in functions, providing better performance. ** Matlab-style ignoring input and output function arguments using tilde (~) is now supported. Ignored output arguments may be detected from a function using the built-in function `isargout'. For more details, consult the manual. ** The list datatype, deprecated since the introduction of cells, has been removed. ** The accumarray function has been optimized and is now significantly faster in certain important cases. ** The behavior of isreal and isnumeric functions was changed to be more Matlab-compatible. ** The integer math & conversion warnings (Octave:int-convert-nan, Octave:int-convert-non-int-val, Octave:int-convert-overflow, Octave:int-math-overflow) have been removed. ** rem and mod are now built-in functions. They also handle integer types efficiently using integer arithmetic. ** Sparse indexing and indexed assignment has been mostly rewritten. Since Octave uses compressed column storage for sparse matrices, major attention is devoted to operations manipulating whole columns. Such operations are now significantly faster, as well as some other important cases. Further, it is now possible to pre-allocate a sparse matrix and subsequently fill it by assignments, provided they meet certain conditions. For more information, consult the `spalloc' function, which is no longer a mere dummy. Consequently, nzmax and nnz are no longer always equal in Octave. Octave may also produce a matrix with nnz < nzmax as a result of other operations, so you should consistently use nnz unless you really want to use nzmax (i.e. the space allocated for nonzero elements). Sparse concatenation is also affected, and concatenating sparse matrices, especially larger collections, is now significantly more efficient. This applies to both the [] operator and the cat/vertcat/horzcat functions. ** It is now possible to optionally employ the xGESDD LAPACK drivers for computing the singular value decomposition using svd(), instead of the default xGESVD, using the configuration pseudo-variable svd_driver. The xGESDD driver can be up to 6x times faster when singular vectors are requested, but is reported to be somewhat less robust on highly ill-conditioned matrices. ** Configuration pseudo-variables, such as page_screen_output or confirm_recursive_rmdir (or the above mentioned svd_driver), now accept a "local" option as second argument, requesting the change to be undone when the current function returns: function [status, msg] = rm_rf (dir) confirm_recursive_rmdir (false, "local"); [status, msg] = rmdir (dir, "s"); ... endfunction Upon return, confirm_recursive_rmdir will be restored to the value it had on entry to the function, even if there were subsequent changes to the variable in function rm_rf or any of the functions it calls. ** pkg now accepts a -forge option for downloading and installing packages from Octave Forge automatically. For example, pkg install -forge general will automatically download the latest release of the general package and attempt to install it. No automatic resolving of dependencies is provided. Further, pkg list -forge can be used to list all available packages. ** The internal data representation of structs has been completely rewritten to make certain optimizations feasible. The field data can now be shared between structs with equal keys but different dimensions or values, making operations that preserve the fields faster. Economized storage is now used for scalar structs (just like most other scalars), making their usage more memory-efficient. Certain array-like operations on structs (concatenation, uniform cellfun, num2cell) have gained a significant speed-up. Additionally, the octave_scalar_map class now provides a simpler interface to work with scalar structs within a C++ DLD function. ** Two new formats are available for displaying numbers: format short eng format long eng Both display numbers in engineering notation, i.e., mantissa + exponent where the exponent is a multiple of 3. ** The following functions are new in Octave 3.4: accumdim erfcx nfields pqpnonneg uigetdir bitpack fileread nth_element quadcc uigetfile bitunpack fminbnd onCleanup randi uiputfile blkmm fskipl pbaspect repelems uimenu cbrt ifelse pie3 reset whitebg curl ishermitian powerset rsf2csf chop isindex ppder saveas daspect luupdate ppint strread divergence merge ppjumps textread ** Using the image function to view images with external programs such as display, xv, and xloadimage is no longer supported. The image_viewer function has also been removed. ** The behavior of struct assignments to non-struct values has been changed. Previously, it was possible to overwrite an arbitrary value: a = 1; a.x = 2; This is no longer possible unless a is an empty matrix or cell array. ** The dlmread function has been extended to allow specifying a custom value for empty fields. ** The dlmread and dlmwrite functions have been modified to accept file IDs (as returned by fopen) in addition to file names. ** Octave can now optimize away the interpreter overhead of an anonymous function handle, if the function simply calls another function or handle with some of its parameters bound to certain values. Example: f = @(x) sum (x, 1); When f is called, the call is forwarded to @sum with the constant 1 appended, and the anonymous function call does not occur on the call stack. ** Deprecated functions. The following functions were deprecated in Octave 3.0 and have been removed from Octave 3.4. beta_cdf geometric_pdf pascal_pdf beta_inv geometric_rnd pascal_rnd beta_pdf hypergeometric_cdf poisson_cdf beta_rnd hypergeometric_inv poisson_inv binomial_cdf hypergeometric_pdf poisson_pdf binomial_inv hypergeometric_rnd poisson_rnd binomial_pdf intersection polyinteg binomial_rnd is_bool setstr chisquare_cdf is_complex struct_contains chisquare_inv is_list struct_elements chisquare_pdf is_matrix t_cdf chisquare_rnd is_scalar t_inv clearplot is_square t_pdf clg is_stream t_rnd com2str is_struct uniform_cdf exponential_cdf is_symmetric uniform_inv exponential_inv is_vector uniform_pdf exponential_pdf isstr uniform_rnd exponential_rnd lognormal_cdf weibcdf f_cdf lognormal_inv weibinv f_inv lognormal_pdf weibpdf f_pdf lognormal_rnd weibrnd f_rnd meshdom weibull_cdf gamma_cdf normal_cdf weibull_inv gamma_inv normal_inv weibull_pdf gamma_pdf normal_pdf weibull_rnd gamma_rnd normal_rnd wiener_rnd geometric_cdf pascal_cdf geometric_inv pascal_inv The following functions were deprecated in Octave 3.2 and will be removed from Octave 3.6 (or whatever version is the second major release after 3.2): create_set spcholinv splu dmult spcumprod spmax iscommand spcumsum spmin israwcommand spdet spprod lchol spdiag spqr loadimage spfind spsum mark_as_command sphcat spsumsq mark_as_rawcommand spinv spvcat spatan2 spkron str2mat spchol splchol unmark_command spchol2inv split unmark_rawcommand The following functions have been deprecated in Octave 3.4 and will be removed from Octave 3.8 (or whatever version is the second major release after 3.4): autocor cellidx gammai krylovb values autocov dispatch glpkmex replot betai fstat is_global saveimage * For compatibility with Matlab, mu2lin (x) is now equivalent to mu2lin (x, 0). * The ARPACK library is now distributed with Octave so it no longer needs to be available as an external dependency when building Octave.
2011-12-25 00:46:02 +01:00
USE_LIBTOOL= yes
2017-08-01 13:09:14 +02:00
USE_TOOLS+= autoconf gsed gmake:run perl pkg-config bison bsdtar:run
2005-04-01 12:15:46 +02:00
GNU_CONFIGURE= yes
USE_LANGUAGES= c c++ fortran77
2005-04-01 12:15:46 +02:00
# needed for loading of shared objects such as those in the
# octave-forge package or user written ones compiled with mkoctfile
2005-04-01 12:15:46 +02:00
CONFIGURE_ARGS+= --enable-dl
CONFIGURE_ARGS+= --enable-static
CONFIGURE_ARGS+= --enable-shared
#CONFIGURE_ARGS+= --without-opengl
#CONFIGURE_ARGS+= --with-framework-opengl=no
CONFIGURE_ARGS+= --disable-java
# use this to bypass qt5 portability issues:
#CONFIGURE_ARGS+= CPPFLAGS=-DQT_DISABLE_DEPRECATED_BEFORE=0
# Provide a full path gfortran in MKOCTFILE for octave-forge
CONFIGURE_ENV+= MKOCTFILE_F77=${FCPATH}
.include "../../mk/bsd.prefs.mk"
# When __APPLE__ is defined, fltk headers typedef an alternate version of Window
# which conflicts with the one in the X11 headers, so avoid pulling in X11.
2016-02-25 16:26:55 +01:00
CONFIGURE_ARGS.Darwin+= --without-x
# The OpenGL framework doesn't have osmesa and the X11 one has header conflicts with the framework
2016-02-25 16:26:55 +01:00
CONFIGURE_ARGS.Darwin+= --without-OSMesa
# We use this to install .oct files so it doesn't strip them.
CONFIGURE_ENV+= INSTALL_LIB=${INSTALL_LIB:Q}
# XXX Shared object "libgfortran.so.3" not found
CONFIGURE_ENV+= octave_cv_sizeof_fortran_integer=yes
2005-04-01 12:15:46 +02:00
.include "options.mk"
2007-10-05 18:31:33 +02:00
INFO_FILES= yes
OCTAVE_DOC= doc/interpreter/octave.pdf doc/liboctave/liboctave.pdf \
doc/refcard/refcard-a4.pdf doc/refcard/refcard-legal.pdf \
doc/refcard/refcard-letter.pdf
INSTALLATION_DIRS+= share/octave/${PKGVERSION_NOREV}/doc
2005-04-01 12:15:46 +02:00
#CHECK_WRKREF_SKIP+= share/octave/${PKGVERSION_NOREV}/etc/config.log
Update to Octave 3.4.3 This makes the package build and work at least in NetBSD on some platforms. Summary of important user-visible changes for version 3.4.3: ----------------------------------------------------------- ** Octave 3.4.3 is a bug fixing release. Summary of important user-visible changes for version 3.4.2: ----------------------------------------------------------- ** Octave 3.2.4 fixes some minor installation problems that affected version 3.4.1. Summary of important user-visible changes for version 3.4.1: ----------------------------------------------------------- ** Octave 3.4.1 is primarily a bug fixing release. ** IMPORTANT note about binary incompatibility in this release: Binary compatibility for all 3.4.x releases was originally planned, but this is impossible for the 3.4.1 release due to a bug in the way shared libraries were built in Octave 3.4.0. Because of this bug, .oct files built for Octave 3.4.0 must be recompiled before they will work with Octave 3.4.1. Given that there would be binary incompatibilities with shared libraries going from Octave 3.4.0 to 3.4.1, the following incompatible changes were also made in this release: * The Perl Compatible Regular Expression (PCRE) library is now required to build Octave. * Octave's libraries and .oct files are now installed in subdirectories of $libdir instead of $libexecdir. Any future Octave 3.4.x release versions should remain binary compatible with Octave 3.4.1 as proper library versioning is now being used as recommended by the libtool manual. ** The following functions have been deprecated in Octave 3.4.1 and will be removed from Octave 3.8 (or whatever version is the second major release after 3.4): cquad is_duplicate_entry perror strerror ** The following functions are new in 3.4.1: colstyle gmres iscolumn isrow mgorth nproc rectangle ** The get_forge_pkg function is now private. ** The rectangle_lw, rectangle_sw, triangle_lw, and triangle_sw functions are now private. ** The logistic_regression_derivatives and logistic_regression_likelihood functions are now private. ** ChangeLog files in the Octave sources are no longer maintained by hand. Instead, there is a single ChangeLog file generated from the Mercurial version control commit messages. Older ChangeLog information can be found in the etc/OLD-ChangeLogs directory in the source distribution. Summary of important user-visible changes for version 3.4: --------------------------------------------------------- ** BLAS and LAPACK libraries are now required to build Octave. The subset of the reference BLAS and LAPACK libraries has been removed from the Octave sources. ** The `lookup' function was extended to be more useful for general-purpose binary searching. Using this improvement, the ismember function was rewritten for significantly better performance. ** Real, integer and logical matrices, when used in indexing, will now cache the internal index_vector value (zero-based indices) when successfully used as indices, eliminating the conversion penalty for subsequent indexing by the same matrix. In particular, this means it is no longer needed to avoid repeated indexing by logical arrays using find for performance reasons. ** Logical matrices are now treated more efficiently when used as indices. Octave will keep the index as a logical mask unless the ratio of true elements is small enough, using a specialized code. Previously, all logical matrices were always first converted to index vectors. This results in savings in both memory and computing time. ** The `sub2ind' and `ind2sub' functions were reimplemented as compiled functions for better performance. These functions are now faster, can deliver more economized results for ranges, and can reuse the index cache mechanism described in previous paragraph. ** The built-in function equivalents to associative operators (`plus', `times', `mtimes', `and', and `or') have been extended to accept multiple arguments. This is especially useful for summing (multiplying, etc.) lists of objects (of possibly distinct types): matrix_sum = plus (matrix_list{:}); ** An FTP object type based on libcurl has been implemented. These objects allow ftp connections, downloads and uploads to be managed. For example, fp = ftp ("ftp.octave.org); cd (fp, "gnu/octave"); mget (fp, "octave-3.2.3.tar.bz2"); close (fp); ** The default behavior of `assert (observed, expected)' has been relaxed to employ less strict checking that does not require the internals of the values to match. This avoids previously valid tests from breaking due to new internal classes introduced in future Octave versions. For instance, all of these assertions were true in Octave 3.0.x but false in 3.2.x due to new optimizations and improvements: assert (2*linspace (1, 5, 5), 2*(1:5)) assert (zeros (0, 0), []) assert (2*ones (1, 5), (2) (ones (1,5))) ** The behavior of library functions `ismatrix', `issquare', and `issymmetric' has been changed for better consistency. * The `ismatrix' function now returns true for all numeric, logical and character 2-D or N-D matrices. Previously, `ismatrix' returned false if the first or second dimension was zero. Hence, `ismatrix ([])' was false, while `ismatrix (zeros (1,2,0))' was true. * The `issquare' function now returns a logical scalar, and is equivalent to the expression ismatrix (x) && ndims (x) == 2 && rows (x) == columns (x) The dimension is no longer returned. As a result, `issquare ([])' now yields true. * The `issymmetric' function now checks for symmetry instead of Hermitianness. For the latter, ishermitian was created. Also, logical scalar is returned rather than the dimension, so `issymmetric ([])' is now true. ** Function handles are now aware of overloaded functions. If a function is overloaded, the handle determines at the time of its reference which function to call. A non-overloaded version does not need to exist. ** Overloading functions for built-in classes (double, int8, cell, etc.) is now compatible with Matlab. ** Function handles can now be compared with the == and != operators, as well as the `isequal' function. ** Performance of concatenation (using []) and the functions `cat', `horzcat', and `vertcat' has been improved for multidimensional arrays. ** The operation-assignment operators +=, -=, *= and /= now behave more efficiently in certain cases. For instance, if M is a matrix and S a scalar, then the statement M += S; will operate on M's data in-place if it is not shared by another variable, usually increasing both time and memory efficiency. Only selected common combinations are affected, namely: matrix += matrix matrix -= matrix matrix .*= matrix matrix ./= matrix matrix += scalar matrix -= scalar matrix *= scalar matrix /= scalar logical matrix |= logical matrix logical matrix &= logical matrix where matrix and scalar belong to the same class. The left-hand side must be a simple variable reference. Moreover, when unary operators occur in expressions, Octave will also try to do the operation in-place if it's argument is a temporary expresssion. ** The effect of comparison operators (<, >, <=, and >=) applied to complex numbers has changed to be consistent with the strict ordering defined by the `max', `min', and `sort' functions. More specifically, complex numbers are compared by lexicographical comparison of the pairs `[abs(z), arg(z)]'. Previously, only real parts were compared; this can be trivially achieved by wrapping the operands in real(). ** The automatic simplification of complex computation results has changed. Octave will now simplify any complex number with a zero imaginary part or any complex matrix with all elements having zero imaginary part to a real value. Previously, this was done only for positive zeros. Note that the behavior of the complex function is unchanged and it still produces a complex value even if the imaginary part is zero. ** As a side effect of code refactoring in liboctave, the binary logical operations are now more easily amenable to compiler optimizations and are thus significantly faster. ** Octave now allows user-defined `subsasgn' methods to optimize out redundant copies. For more information, see the manual. ** More efficient matrix division handling. Octave is now able to handle the expressions M' \ V M.' \ V V / M (M is a matrix and V is a vector) more efficiently in certain cases. In particular, if M is triangular, all three expressions will be handled by a single call to xTRTRS (from LAPACK), with appropriate flags. Previously, all three expressions required a physical transpose of M. ** More efficient handling of certain mixed real-complex matrix operations. For instance, if RM is a real matrix and CM a complex matrix, RM * CM can now be evaluated either as complex (RM * real (CM), RM * imag (CM)) or as complex (RM) * CM, depending on the dimensions. The first form requires more temporaries and copying, but halves the FLOP count, which normally brings better performance if RM has enough rows. Previously, the second form was always used. Matrix division is similarly affected. ** More efficient handling of triangular matrix factors returned from factorizations. The functions for computing QR, LU and Cholesky factorizations will now automatically return the triangular matrix factors with proper internal matrix_type set, so that it won't need to be computed when the matrix is used for division. ** The built-in `sum' function now handles the non-native summation (i.e., double precision sum of single or integer inputs) more efficiently, avoiding a temporary conversion of the whole input array to doubles. Further, `sum' can now accept an extra option argument, using a compensated summation algorithm rather than a straightforward sum, which significantly improves precision if lots of cancellation occurs in the summation. ** The built-in `bsxfun' function now uses optimized code for certain cases where built-in operator handles are passed in. Namely, the optimizations concern the operators `plus', `minus', `times', `ldivide', `rdivide', `power', `and', `or' (for logical arrays), the relational operators `eq', `ne', `lt', `le', `gt', `ge', and the functions `min' and `max'. Optimizations only apply when both operands are of the same built-in class. Mixed real/complex and single/double operations will first convert both operands to a common type. ** The `strfind' and `strrep' functions now have compiled implementations, facilitating significantly more efficient searching and replacing in strings, especially with longer patterns. The code of `strcat' has been vectorized and is now much more efficient when many strings are concatenated. The `strcmpi' and `strncmpi' functions are now built-in functions, providing better performance. ** Matlab-style ignoring input and output function arguments using tilde (~) is now supported. Ignored output arguments may be detected from a function using the built-in function `isargout'. For more details, consult the manual. ** The list datatype, deprecated since the introduction of cells, has been removed. ** The accumarray function has been optimized and is now significantly faster in certain important cases. ** The behavior of isreal and isnumeric functions was changed to be more Matlab-compatible. ** The integer math & conversion warnings (Octave:int-convert-nan, Octave:int-convert-non-int-val, Octave:int-convert-overflow, Octave:int-math-overflow) have been removed. ** rem and mod are now built-in functions. They also handle integer types efficiently using integer arithmetic. ** Sparse indexing and indexed assignment has been mostly rewritten. Since Octave uses compressed column storage for sparse matrices, major attention is devoted to operations manipulating whole columns. Such operations are now significantly faster, as well as some other important cases. Further, it is now possible to pre-allocate a sparse matrix and subsequently fill it by assignments, provided they meet certain conditions. For more information, consult the `spalloc' function, which is no longer a mere dummy. Consequently, nzmax and nnz are no longer always equal in Octave. Octave may also produce a matrix with nnz < nzmax as a result of other operations, so you should consistently use nnz unless you really want to use nzmax (i.e. the space allocated for nonzero elements). Sparse concatenation is also affected, and concatenating sparse matrices, especially larger collections, is now significantly more efficient. This applies to both the [] operator and the cat/vertcat/horzcat functions. ** It is now possible to optionally employ the xGESDD LAPACK drivers for computing the singular value decomposition using svd(), instead of the default xGESVD, using the configuration pseudo-variable svd_driver. The xGESDD driver can be up to 6x times faster when singular vectors are requested, but is reported to be somewhat less robust on highly ill-conditioned matrices. ** Configuration pseudo-variables, such as page_screen_output or confirm_recursive_rmdir (or the above mentioned svd_driver), now accept a "local" option as second argument, requesting the change to be undone when the current function returns: function [status, msg] = rm_rf (dir) confirm_recursive_rmdir (false, "local"); [status, msg] = rmdir (dir, "s"); ... endfunction Upon return, confirm_recursive_rmdir will be restored to the value it had on entry to the function, even if there were subsequent changes to the variable in function rm_rf or any of the functions it calls. ** pkg now accepts a -forge option for downloading and installing packages from Octave Forge automatically. For example, pkg install -forge general will automatically download the latest release of the general package and attempt to install it. No automatic resolving of dependencies is provided. Further, pkg list -forge can be used to list all available packages. ** The internal data representation of structs has been completely rewritten to make certain optimizations feasible. The field data can now be shared between structs with equal keys but different dimensions or values, making operations that preserve the fields faster. Economized storage is now used for scalar structs (just like most other scalars), making their usage more memory-efficient. Certain array-like operations on structs (concatenation, uniform cellfun, num2cell) have gained a significant speed-up. Additionally, the octave_scalar_map class now provides a simpler interface to work with scalar structs within a C++ DLD function. ** Two new formats are available for displaying numbers: format short eng format long eng Both display numbers in engineering notation, i.e., mantissa + exponent where the exponent is a multiple of 3. ** The following functions are new in Octave 3.4: accumdim erfcx nfields pqpnonneg uigetdir bitpack fileread nth_element quadcc uigetfile bitunpack fminbnd onCleanup randi uiputfile blkmm fskipl pbaspect repelems uimenu cbrt ifelse pie3 reset whitebg curl ishermitian powerset rsf2csf chop isindex ppder saveas daspect luupdate ppint strread divergence merge ppjumps textread ** Using the image function to view images with external programs such as display, xv, and xloadimage is no longer supported. The image_viewer function has also been removed. ** The behavior of struct assignments to non-struct values has been changed. Previously, it was possible to overwrite an arbitrary value: a = 1; a.x = 2; This is no longer possible unless a is an empty matrix or cell array. ** The dlmread function has been extended to allow specifying a custom value for empty fields. ** The dlmread and dlmwrite functions have been modified to accept file IDs (as returned by fopen) in addition to file names. ** Octave can now optimize away the interpreter overhead of an anonymous function handle, if the function simply calls another function or handle with some of its parameters bound to certain values. Example: f = @(x) sum (x, 1); When f is called, the call is forwarded to @sum with the constant 1 appended, and the anonymous function call does not occur on the call stack. ** Deprecated functions. The following functions were deprecated in Octave 3.0 and have been removed from Octave 3.4. beta_cdf geometric_pdf pascal_pdf beta_inv geometric_rnd pascal_rnd beta_pdf hypergeometric_cdf poisson_cdf beta_rnd hypergeometric_inv poisson_inv binomial_cdf hypergeometric_pdf poisson_pdf binomial_inv hypergeometric_rnd poisson_rnd binomial_pdf intersection polyinteg binomial_rnd is_bool setstr chisquare_cdf is_complex struct_contains chisquare_inv is_list struct_elements chisquare_pdf is_matrix t_cdf chisquare_rnd is_scalar t_inv clearplot is_square t_pdf clg is_stream t_rnd com2str is_struct uniform_cdf exponential_cdf is_symmetric uniform_inv exponential_inv is_vector uniform_pdf exponential_pdf isstr uniform_rnd exponential_rnd lognormal_cdf weibcdf f_cdf lognormal_inv weibinv f_inv lognormal_pdf weibpdf f_pdf lognormal_rnd weibrnd f_rnd meshdom weibull_cdf gamma_cdf normal_cdf weibull_inv gamma_inv normal_inv weibull_pdf gamma_pdf normal_pdf weibull_rnd gamma_rnd normal_rnd wiener_rnd geometric_cdf pascal_cdf geometric_inv pascal_inv The following functions were deprecated in Octave 3.2 and will be removed from Octave 3.6 (or whatever version is the second major release after 3.2): create_set spcholinv splu dmult spcumprod spmax iscommand spcumsum spmin israwcommand spdet spprod lchol spdiag spqr loadimage spfind spsum mark_as_command sphcat spsumsq mark_as_rawcommand spinv spvcat spatan2 spkron str2mat spchol splchol unmark_command spchol2inv split unmark_rawcommand The following functions have been deprecated in Octave 3.4 and will be removed from Octave 3.8 (or whatever version is the second major release after 3.4): autocor cellidx gammai krylovb values autocov dispatch glpkmex replot betai fstat is_global saveimage * For compatibility with Matlab, mu2lin (x) is now equivalent to mu2lin (x, 0). * The ARPACK library is now distributed with Octave so it no longer needs to be available as an external dependency when building Octave.
2011-12-25 00:46:02 +01:00
TEST_TARGET= check
#pre-configure:
# cd ${WRKSRC} && autoconf
SUBST_CLASSES+= fix-make
SUBST_STAGE.fix-make= pre-configure
SUBST_MESSAGE.fix-make= Fixing path to gmake.
SUBST_FILES.fix-make= scripts/pkg/private/configure_make.m
Update octave to 4.0.3 XXX installs lib/charset.alias - is this a problem? Bugs Fixed in GNU Octave 4.0.3 * doc: clarify differences between atan and atan2 (bug #48178) * doc: delete mention of unsupported syntax for looping over structs (bug #48064) * ver.m: return empty struct for unknown package (bug #48235). * Update gnulib subrepo for texinfo formatting fixes (bug #48001) * Fix typos in Java conversion of 32 and 64 bit integers (bug #48107) * Create valid gnuplot commands even for single-entry colormaps (bug #48083). * orderfields.m: Remove trailing bracket in docstring (bug #48063). * Don't overly restrict options passed to Java jvm (bug #39063). * Write integers with correct byte order on big-endian systems (bug #47434) * doc: Document syntax for specifying color when using Tex interpreter (bug #47907). * Round quantized pixel values before writing uintN images (bug #47746) * Fix popen2 error on Windows when child writes to stderr (bug #43036) * it_IT.ts: Correct Italian translation of "col:" (bug #47857). * avoid crash in audiowrite argument processing (bug #47875) * make __magick_read__ a built-in function (bug #41699) * sortrows.m: Improve docstring (bug #47844). * doc: Fix typo in exec docstring. * Use correct URL for Online Documentation (bug #47835). * Fix autoscale affecting legend axes objects (bug #47765). * configure.ac: Remove AC_CHECK_FUNC for pipe now that gnulib::pipe used. * doc: fix on manual the syntax to empty elements from cell array. * octave.texi: Set document encoding to UTF-8. * Enable the pipe function on Windows (bug #47614) * avoid mulitple definitions of static function-scope vars (bug #47372) * Array-sym.cc: Delete obsolete file. * Initialize variable to stop unstable results for lgamma (bug #47524). * call openmp function at initialization (bug #47372) * macros.texi: Colorized links for PDF files with Texinfo 6.x.
2016-08-06 15:03:35 +02:00
SUBST_SED.fix-make= -e 's:@GMAKE@:${GMAKE}:g'
SUBST_CLASSES+= qt5-pkg-config
SUBST_STAGE.qt5-pkg-config= pre-configure
SUBST_MESSAGE.qt5-pkg-config= Updating pkg-config calls for Qt5
SUBST_FILES.qt5-pkg-config= configure.ac configure
SUBST_SED.qt5-pkg-config= -e 's,QtCore,Qt5Core,g'
SUBST_SED.qt5-pkg-config+= -e 's,QtGui,Qt5Widgets,g'
SUBST_SED.qt5-pkg-config+= -e 's,QtNetwork,Qt5Network,g'
SUBST_SED.qt5-pkg-config+= -e 's,QtOpenGL,Qt5OpenGL,g'
# Matches reduce-relocations logic in x11/qt5-qtbase
.if ${OPSYS} != "Darwin" && ${OPSYS} != "SunOS" && \
(!empty(MACHINE_ARCH:Mi386) || !empty(MACHINE_ARCH:Mx86_64))
CFLAGS+= -fPIC
.endif
PREPEND_PATH+= ${QTDIR}/bin
MAKE_ENV+= V=1
#post-extract:
# find ${WRKSRC}/doc -type f -name '*.info*' -print | xargs rm -f
# mkdir ${WRKSRC}/src/pic
post-install:
.for f in ${OCTAVE_DOC}
${INSTALL_DATA} ${WRKSRC}/${f} ${DESTDIR}${PREFIX}/share/octave/${PKGVERSION_NOREV}/doc
.endfor
${RM} -f ${DESTDIR}/${PREFIX}/lib/charset.alias
2005-04-01 12:15:46 +02:00
.include "../../audio/libsndfile/buildlink3.mk"
.include "../../devel/ncurses/buildlink3.mk"
2012-06-07 01:14:10 +02:00
.include "../../devel/pcre/buildlink3.mk"
.include "../../devel/readline/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
Update octave to 4.0.3 XXX installs lib/charset.alias - is this a problem? Bugs Fixed in GNU Octave 4.0.3 * doc: clarify differences between atan and atan2 (bug #48178) * doc: delete mention of unsupported syntax for looping over structs (bug #48064) * ver.m: return empty struct for unknown package (bug #48235). * Update gnulib subrepo for texinfo formatting fixes (bug #48001) * Fix typos in Java conversion of 32 and 64 bit integers (bug #48107) * Create valid gnuplot commands even for single-entry colormaps (bug #48083). * orderfields.m: Remove trailing bracket in docstring (bug #48063). * Don't overly restrict options passed to Java jvm (bug #39063). * Write integers with correct byte order on big-endian systems (bug #47434) * doc: Document syntax for specifying color when using Tex interpreter (bug #47907). * Round quantized pixel values before writing uintN images (bug #47746) * Fix popen2 error on Windows when child writes to stderr (bug #43036) * it_IT.ts: Correct Italian translation of "col:" (bug #47857). * avoid crash in audiowrite argument processing (bug #47875) * make __magick_read__ a built-in function (bug #41699) * sortrows.m: Improve docstring (bug #47844). * doc: Fix typo in exec docstring. * Use correct URL for Online Documentation (bug #47835). * Fix autoscale affecting legend axes objects (bug #47765). * configure.ac: Remove AC_CHECK_FUNC for pipe now that gnulib::pipe used. * doc: fix on manual the syntax to empty elements from cell array. * octave.texi: Set document encoding to UTF-8. * Enable the pipe function on Windows (bug #47614) * avoid mulitple definitions of static function-scope vars (bug #47372) * Array-sym.cc: Delete obsolete file. * Initialize variable to stop unstable results for lgamma (bug #47524). * call openmp function at initialization (bug #47372) * macros.texi: Colorized links for PDF files with Texinfo 6.x.
2016-08-06 15:03:35 +02:00
.include "../../graphics/hicolor-icon-theme/buildlink3.mk"
.include "../../math/arpack/buildlink3.mk"
2005-04-01 12:15:46 +02:00
.include "../../math/blas/buildlink3.mk"
.include "../../math/fftw/buildlink3.mk"
.include "../../math/fftwf/buildlink3.mk"
2005-04-01 12:15:46 +02:00
.include "../../math/lapack/buildlink3.mk"
.include "../../www/curl/buildlink3.mk"
.if ${OPSYS} != "Darwin"
.include "../../x11/libX11/buildlink3.mk"
.endif
.include "../../x11/qt5-qtbase/buildlink3.mk"
BUILDLINK_DEPMETHOD.qt5-qttools?=build
.include "../../x11/qt5-qttools/buildlink3.mk"
BUILDLINK_DEPMETHOD.gperf?=build
.include "../../devel/gperf/buildlink3.mk"
.include "../../x11/fltk13/buildlink3.mk"
.include "../../sysutils/desktop-file-utils/desktopdb.mk"
.include "../../mk/bsd.pkg.mk"