annotate etc/HACKING.md @ 28240:2fb684dc2ec2

axis.m: Implement "fill" option for Matlab compatibility. * axis.m: Document that "fill" is a synonym for "normal". Place "vis3d" option in documentation table for modes which affect aspect ratio. Add strcmpi (opt, "fill") to decode opt and executed the same behavior as "normal".
author Rik <rik@octave.org>
date Fri, 24 Apr 2020 13:16:09 -0700
parents 9e769371fb45
children f044b9951df5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24193
b7e5486e7bff doc: Doxygen documentation with more descriptive pages.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24163
diff changeset
1 Hacking Octave {#Hacking}
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
2 ==============
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
3
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
4 This file attempts to describe the rules to use when hacking the
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
5 Octave sources cloned from the Savannah source code
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
6 [repository](https://hg.savannah.gnu.org/hgweb/octave/).
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
7 **DO NOT** put this file into the distribution. These requirements
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
8 do not apply when building from a distribution tarball.
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
10 Quick start
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
11 -----------
16664
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
12
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
13 1. Install all the required dependencies. Precisely how to do that
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
14 depends on what type of system you are using. There are more
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
15 details below.
16664
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
16
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
17 2. Clone the Octave sources:
16664
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
18
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
19 hg clone https://www.octave.org/hg/octave
16664
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
20
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
21 3. Change to the top-level directory of the Octave source tree and
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
22 run the `bootstrap` script:
16664
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
23
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
24 cd octave
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
25 ./bootstrap
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
26
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
27 4. Create a build directory, `cd` to it, then run `configure` and
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
28 `make`, or `make -jX` (to run `X` simultaneous jobs):
16664
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
29
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
30 mkdir .build
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
31 cd .build
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
32 ../configure
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
33 make -j2
16664
789d2376db2d maint: update etc/HACKING
John W. Eaton <jwe@octave.org>
parents: 16235
diff changeset
34
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
35 Requirements
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
36 ------------
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38 We've opted to keep only the highest-level sources in the repository.
9977
711aa22ff83d Elaborate which DIRNAME to use for --gnulib-srcdir option in HACKING file
Rik <rdrider0-list@yahoo.com>
parents: 9949
diff changeset
39 This eases our maintenance burden, (fewer merges, etc.), but imposes
14646
f40c355491cc doc: Modify the language in HACKING concerning cloning and git subrepo
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 14138
diff changeset
40 more requirements on anyone wishing to build from the just-cloned
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41 sources. For example, you have to use the latest stable versions of
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
42 the maintainer tools we depend upon. These include:
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
44 - [Autoconf](https://www.gnu.org/software/autoconf/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
45 - [Automake](https://www.gnu.org/software/automake/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
46 - [Bison](https://www.gnu.org/software/bison/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
47 - [Flex](https://www.gnu.org/software/flex/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
48 - [Gnulib](https://www.gnu.org/software/gnulib/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
49 - [GNU Make](https://www.gnu.org/software/make/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
50 - [gperf](https://www.gnu.org/software/gperf/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
51 - [Gzip](https://www.gnu.org/software/gzip/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
52 - [Libtool](https://www.gnu.org/software/libtool/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
53 - [Mercurial](https://www.mercurial-scm.org/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
54 - [Perl](https://www.cpan.org/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
55 - [Rsync](https://samba.anu.edu.au/rsync/)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
56 - [Tar](https://www.gnu.org/software/tar/)
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
57
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
58 In addition to these maintainer tools, Octave makes use of many
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
59 external libraries and packages. See `doc/interpreter/install.txi`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
60 for the complete list of required and optional dependencies.
18286
de72c443ed3f HACKING: Refer to install.txi for the full dependency list (bug #41233)
Mike Miller <mtmiller@ieee.org>
parents: 17800
diff changeset
61
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 Only building the initial full source tree will be a bit painful.
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
63 Later, after synchronizing from the repository, a plain `make` should
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64 be sufficient.
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
66 First clone
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
67 -----------
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
68
14646
f40c355491cc doc: Modify the language in HACKING concerning cloning and git subrepo
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 14138
diff changeset
69 If you are reading these notes, you may have already managed to clone
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
70 this package from the repository. For the record, you will find all
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
71 the relevant information on downloading sources at:
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
72
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
73 <https://www.octave.org/download.html>
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
75 After cloning Octave, you will need to run the `bootstrap` script:
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
76
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
77 ./bootstrap
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
78
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
79 This script will examine the source tree and generate some `Makefile`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
80 fragments, then run autotools scripts to generate `Makefile.in` files
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
81 from `Makefile.am` files and create the `configure` script. The
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
82 `bootstrap` script comes from gnulib, but is kept in the Octave
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
83 source archive. It should be updated from the gnulib sources as
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
84 necessary.
9949
a6308dcad5ac update HACKING file
John W. Eaton <jwe@octave.org>
parents: 9946
diff changeset
85
a6308dcad5ac update HACKING file
John W. Eaton <jwe@octave.org>
parents: 9946
diff changeset
86 If you have a copy of gnulib in some directory apart from the Octave
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
87 source tree, then pass the name of the directory containing
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
88 `gnulib-tool` to the `bootstrap` script using the option:
9949
a6308dcad5ac update HACKING file
John W. Eaton <jwe@octave.org>
parents: 9946
diff changeset
89
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
90 --gnulib-srcdir=DIRNAME
9949
a6308dcad5ac update HACKING file
John W. Eaton <jwe@octave.org>
parents: 9946
diff changeset
91
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
92 If you have downloaded gnulib directly, `DIRNAME` will be the
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
93 directory where gnulib was unpacked. If you have installed gnulib
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
94 using a package manager, `DIRNAME` is likely to be `/usr/bin` or
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
95 `/usr/local/bin` (where the gnulib-tool script resides).
9977
711aa22ff83d Elaborate which DIRNAME to use for --gnulib-srcdir option in HACKING file
Rik <rdrider0-list@yahoo.com>
parents: 9949
diff changeset
96
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
97 By using an external gnulib directory, you can share a single gnulib
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
98 source tree among several projects. Since 2011, the gnulib sources
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
99 are a Mercurial subrepository of the Octave repository, so they will
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
100 be automatically updated to the corresponding Mercurial revision if
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
101 you update the working directory to a past revision not too far in
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
102 the past.
9949
a6308dcad5ac update HACKING file
John W. Eaton <jwe@octave.org>
parents: 9946
diff changeset
103
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
104 Additional options besides `--gnulib-srcdir` can be passed to
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
105 `bootstrap` and they will be forwarded without modification to the
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
106 gnulib `bootstrap` script.
9977
711aa22ff83d Elaborate which DIRNAME to use for --gnulib-srcdir option in HACKING file
Rik <rdrider0-list@yahoo.com>
parents: 9949
diff changeset
107
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
108 Once the `bootstrap` script completes successfully, you may configure
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
109 and build Octave. We recommend that you build Octave in a separate
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
110 directory tree from the sources. For example, if you have just
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
111 finished running the `bootstrap` script in the top-level source
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
112 directory, run the following commands to create a build tree,
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
113 configure, and build Octave:
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
114
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
115 mkdir .build
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
116 cd .build
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
117 ../configure
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
118 make -j2
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
119 make check
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
120
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
121 The `-j2` after the first `make` call means, that two jobs run
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
122 simultaneously. This number may be increased depending on your
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
123 system. At this point, there should be no difference between your
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
124 working tree and the currently visited hg revision:
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
125
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
126 hg diff
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
127
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
128 should output no difference.
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
129
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
130 Coding style
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
131 ------------
12139
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
132
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
133 The most important advice is to follow any conventions you detect
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
134 in the file being edited. In addition, Octave maintainers have
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
135 written a lot on the subject. See
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
136 <https://wiki.octave.org/Contribution_guidelines>.
12139
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
137
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
138 Bugs and patches
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
139 ----------------
12139
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
140
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
141 See the file BUGS in this directory for more guidance on reporting bugs
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
142 and preparing patches.
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
143
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
144 Source code directory layout
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
145 ----------------------------
12139
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
146
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
147 An overview of the directory layout of Octave's source files:
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
148
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
149 - `build-aux`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
150 scripts which support the build process.
17794
7e9382588570 HACKING: Update information for impending 3.8 release.
Rik <rik@octave.org>
parents: 17744
diff changeset
151
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
152 - `doc`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
153 Texinfo and Doxygen documentation for Octave.
17794
7e9382588570 HACKING: Update information for impending 3.8 release.
Rik <rik@octave.org>
parents: 17744
diff changeset
154
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
155 - `etc`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
156 miscellaneous files, such as this `HACKING` howto.
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
157
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
158 - `examples`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
159 some example files (`mkoctfile` and mex samples, old class
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
160 programming interface).
15198
c3d463c93604 * HACKING: Update for libinterp and libgui changes.
John W. Eaton <jwe@octave.org>
parents: 15194
diff changeset
161
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
162 - `gnulib`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
163 gnulib subrepo. This is a clone of the gnulib source tree
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
164 maintained by the Octave project. The default branch is
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
165 identical to the upstream gnulib sources. There is also an
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
166 `octave-stable` branch that may contain changes as needed for
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
167 the `stable` branch in the Octave archive. We usually don't
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
168 want to update gnulib sources when going from one stable point
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
169 release to the next, but we occasionally need to include small
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
170 updates.
17794
7e9382588570 HACKING: Update information for impending 3.8 release.
Rik <rik@octave.org>
parents: 17744
diff changeset
171
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
172 - `libgnu`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
173 gnulib sources that we use. The files here are copied here from
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
174 the gnulib directory by the `bootstrap` script.
15198
c3d463c93604 * HACKING: Update for libinterp and libgui changes.
John W. Eaton <jwe@octave.org>
parents: 15194
diff changeset
175
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
176 - `liboctave`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
177 C++ interfaces to the numerical libraries, Fortran numerical
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
178 libraries, various OS facilities, and utility functions.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
179 - `array`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
180 the base `Array`, `NDArray`, `Matrix`, and `Sparse` classes.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
181 - `external`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
182 various numerical libraries (mostly Fortran).
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
183 - `amos` bessel functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
184 - `blas-xtra` wrappers for blas functions used in Octave
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
185 - `daspk` large scale differential algebraic equation solver
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
186 - `dasrt` differential algebraic equation solver with root finding
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
187 - `dassl` differential-algebraic system solver
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
188 - `fftpack` subroutines for fast fourier transforms
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
189 - `lapack-xtra` wrappers for lapack functions used in Octave
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
190 - `odepack` ordinary differential equation solver
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
191 - `quadpack` subroutines for numerical integration
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
192 - `ranlib` random number generators
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
193 - `slatec-err` slatec error handling library
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
194 - `slatec-fn` various special function subroutines
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
195 - `numeric`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
196 C++ numerical algorithms and interfaces to the Fortran
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
197 algorithms.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
198 - `operators`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
199 code for operators that act on base classes (such as `Array`).
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
200 - `system`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
201 OS-related functions.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
202 - `util`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
203 utility and miscellaneous functions.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
204 - `wrappers`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
205 C++ wrappers for gnulib functions written in C.
15198
c3d463c93604 * HACKING: Update for libinterp and libgui changes.
John W. Eaton <jwe@octave.org>
parents: 15194
diff changeset
206
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
207 - `libinterp`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
208 the interpreter itself plus lots of infrastructure around it.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
209 Octave's extensive `octave_value` class hierarchy for
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
210 polymorphically handling all Octave types is defined here.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
211 The built-in functions are also defined here.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
212 - `octave-value`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
213 the `octave_value` class hierarchy. These are the container
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
214 classes that hold various Octave data types like struct
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
215 numerical arrays, structure arrays, and cell arrays.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
216 - `parse-tree`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
217 Classes that define the parse tree for the interpreter.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
218 - `corefcn`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
219 statically linked `DEFUN` functions (callable from the
27967
6628a284d56d fix more spelling errors (bug #57613)
Mike Miller <mtmiller@octave.org>
parents: 27812
diff changeset
220 scripting language) as well as internal C++ functions used by
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
221 the interpreter.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
222 - `dldfcn`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
223 dynamically linked `DEFUN` functions (callable from the
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
224 scripting language). If you see `help foo` telling you that
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
225 `foo` is defined in `foo.oct`, then `foo.cc` will be found
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
226 here and contain the source code.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
227 - `operators`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
228 definitions and template instantiations for operators for all
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
229 possible Octave type combinations.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
230 - `template-inst`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
231 some C++ template instantiations.
15198
c3d463c93604 * HACKING: Update for libinterp and libgui changes.
John W. Eaton <jwe@octave.org>
parents: 15194
diff changeset
232
12139
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
233
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
234 - `libgui`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
235 the graphical user interface of GNU Octave.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
236 - `graphics`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
237 Qt graphics toolkit (OpenGL plotting).
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
238 - `kb-layouts`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
239 various files need by the qterminal widget that has been
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
240 derived from Konsole.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
241 - `languages`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
242 translation files and list of translators.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
243 - `qterminal`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
244 Qt terminal widget.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
245 - `src`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
246 source files for the GUI
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
247 - `icons`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
248 icon files that will be compiled into the executable via a
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
249 resource file.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
250 - `m-editor`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
251 source files for the m-file editor.
15198
c3d463c93604 * HACKING: Update for libinterp and libgui changes.
John W. Eaton <jwe@octave.org>
parents: 15194
diff changeset
252
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
253 - `m4` m4 scripts used by configure during the build process.
17794
7e9382588570 HACKING: Update information for impending 3.8 release.
Rik <rik@octave.org>
parents: 17744
diff changeset
254
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
255 - `scripts` functions written in the Octave language.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
256 - `@ftp` ftp object class
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
257 - `+containers` container classes (Map)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
258 - `audio` play and record sound files (system dependent)
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
259 - `deprecated` older deprecated functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
260 - `elfun` elementary mathematical functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
261 - `general` utility functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
262 - `geometry` geometry algorithms
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
263 - `gui` User-Interface (UI) functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
264 - `help` help subsystem functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
265 - `image` image processing
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
266 - `io` input/output functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
267 - `java` java/Octave interface
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
268 - `linear-algebra` linear algebra
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
269 - `miscellaneous` stuff that doesn't fit anywhere else
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
270 - `ode` Ordinary Differential Equations
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
271 - `optimization` zero finders and minimizers
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
272 - `path` functions for path manipulation
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
273 - `pkg` the package manager
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
274 - `plot` plotting functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
275 - `polynomial` polynomial manipulation
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
276 - `prefs` user-defined preferences
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
277 - `profiler` code profiler for performance
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
278 - `set` set manipulation
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
279 - `signal` signal processing
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
280 - `sparse` sparse matrix support
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
281 - `specfun` special mathematical functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
282 - `special-matrix` functions for generating special types of matrices
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
283 - `startup` initialization functions
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
284 - `statistics` statistical functions, distributions, and tests
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
285 - `strings` character string manipulation
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
286 - `testfun` unit testing
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
287 - `time` time and date functions
15198
c3d463c93604 * HACKING: Update for libinterp and libgui changes.
John W. Eaton <jwe@octave.org>
parents: 15194
diff changeset
288
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
289 - `src`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
290 code for the actual executables that are created. This includes
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
291 `octave`, `octave-cli`, `octave-gui`, as well as `mkoctfile`.
15198
c3d463c93604 * HACKING: Update for libinterp and libgui changes.
John W. Eaton <jwe@octave.org>
parents: 15194
diff changeset
292
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
293 - `test`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
294 tests for the interpreter.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
295 - `*.tst`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
296 fixed tests for the interpreter.
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
297 - `fntests.m`
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
298 script to run function tests embedded in C++ and .m files.
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
299
25590
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
300 Release Numbering
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
301 -----------------
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
302
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
303 Since version 5, Octave uses the following rules for release numbering:
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
304
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
305 Version Dev Phase When
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
306
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
307 5.0.0 (experimental) active development of Octave 5 on default branch
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
308 5.0.1 (pre-release) stabilization period of Octave 5 on stable branch
26615
3945d8dd56a1 * HACKING.md: Explain release candidate version numbers.
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
309 5.0.90 (pre-release) first release candidate for 5.1.0
25590
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
310 6.0.0 (experimental) active development of Octave 6 on default branch
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
311 5.1.0 (release) first release of Octave 5 from stable branch
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
312 5.1.1 (pre-release) bug fixing on stable branch after 5.1.0 release
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
313 5.2.0 (release) second release of Octave 5 from stable branch
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
314 5.2.1 (pre-release) bug fixing on stable branch after 5.2.0 release
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
315 ...
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
316
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
317 To summarize, the first release of Octave 5 will be Octave 5.1.0 while
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
318 development snapshots will be Octave 5.0.0 and snapshots from the
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
319 release branch Octave 5.n.1.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
320
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
321 With this numbering scheme:
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
322
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
323 * Any version X.0.0 means "this is an experimental development
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
324 version".
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
325
26615
3945d8dd56a1 * HACKING.md: Explain release candidate version numbers.
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
326 * Any version X.Y.Z with Z > 0 means, "this is a pre-release version
3945d8dd56a1 * HACKING.md: Explain release candidate version numbers.
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
327 meant for bug fixing and testing". In practice, Z will be either 1
3945d8dd56a1 * HACKING.md: Explain release candidate version numbers.
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
328 (stabilization period after and before making release candidates) or
3945d8dd56a1 * HACKING.md: Explain release candidate version numbers.
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
329 90, 91, etc. (release candidate snapshots leading up to release).
25590
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
330
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
331 * Any version X.Y.0 with Y != 0 means "this is a released version".
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
332
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
333 Shared Library Versioning
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
334 -------------------------
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
335
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
336 Version numbers for the liboctave, liboctinterp, and liboctgui shared
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
337 libraries are set in the module.mk files in the top-level directory for
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
338 each library using the variables
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
339
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
340 %canon_reldir%_%canon_reldir%_current
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
341 %canon_reldir%_%canon_reldir%_revision
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
342 %canon_reldir%_%canon_reldir%_age
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
343
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
344 The rules for updating these version numbers are:
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
345
27216
823b4bcf79fc unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents: 26615
diff changeset
346 * Start with version information of `0:0:0` for each libtool library.
25590
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
347
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
348 * Update the version information only immediately before a public
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
349 release of your software. More frequent updates are unnecessary,
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
350 and only guarantee that the current interface number gets larger
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
351 faster.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
352
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
353 * If the library source code has changed at all since the last update,
27216
823b4bcf79fc unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents: 26615
diff changeset
354 then increment revision (`c:r:a` becomes `c:r+1:a`).
25590
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
355
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
356 * If any interfaces have been added, removed, or changed since the
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
357 last update, increment current, and set revision to 0.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
358
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
359 * If any interfaces have been added since the last public release,
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
360 then increment age.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
361
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
362 * If any interfaces have been removed or changed since the last public
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
363 release, then set age to 0.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
364
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
365 Never try to set the interface numbers so that they correspond to the
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
366 Octave version number. This is an abuse that only fosters
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
367 misunderstanding of the purpose of library versions.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
368
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
369 The following explanation may help to understand the above rules a bit
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
370 better: consider that there are three possible kinds of reactions from
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
371 users of your library to changes in a shared library:
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
372
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
373 * Programs using the previous version may use the new version as
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
374 drop-in replacement, and programs using the new version can also
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
375 work with the previous one. In other words, no recompiling nor
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
376 relinking is needed. In this case, bump revision only, don’t touch
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
377 current nor age.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
378
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
379 * Programs using the previous version may use the new version as
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
380 drop-in replacement, but programs using the new version may use APIs
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
381 not present in the previous one. In other words, a program linking
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
382 against the new version may fail with unresolved symbols if linking
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
383 against the old version at runtime: set revision to 0, bump current
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
384 and age.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
385
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
386 * Programs may need to be changed, recompiled, and relinked in order
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
387 to use the new version. Bump current, set revision and age to 0.
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
388
27812
b191a91b5157 doc: update reference to "Shared Library Versioning" information.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26615
diff changeset
389 These guidelines also appear in the GNU libtool manual, see
b191a91b5157 doc: update reference to "Shared Library Versioning" information.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 26615
diff changeset
390 https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html.
25590
02766a14c461 add info about version numbers in etc/HACKING.md file
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
391
12139
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
392
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
393 ################################################################################
2162104d40b1 Revise HACKING file and incorporate all of ROADMAP file.
Rik <octave@nomad.inbox5.com>
parents: 9977
diff changeset
394
27919
1891570abac8 update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 27918
diff changeset
395 Copyright (C) 2009-2020 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27814
diff changeset
396
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
397 See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
398 distribution or <https://octave.org/copyright/>.
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
399
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
400 This file is part of Octave.
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
401
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24193
diff changeset
402 Octave is free software: you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22383
diff changeset
403 under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24193
diff changeset
404 the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22383
diff changeset
405 (at your option) any later version.
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
406
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22383
diff changeset
407 Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22383
diff changeset
408 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22383
diff changeset
409 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22383
diff changeset
410 GNU General Public License for more details.
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
411
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
412 You should have received a copy of the GNU General Public License
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
413 along with Octave; see the file COPYING. If not, see
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
414 <https://www.gnu.org/licenses/>.
9946
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
415
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
416
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
417 This file was adapted for Octave from the HACKING file that is part of
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
418 GNU Bison, which contained the following Copyright notice:
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
419
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
420 Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
421 Free Software Foundation, Inc.
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
422
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
423 This file is part of GNU Bison.
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
424
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
425 This program is free software: you can redistribute it and/or modify
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
426 it under the terms of the GNU General Public License as published by
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
427 the Free Software Foundation, either version 3 of the License, or
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
428 (at your option) any later version.
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
429
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
430 This program is distributed in the hope that it will be useful,
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
431 but WITHOUT ANY WARRANTY; without even the implied warranty of
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
432 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
433 GNU General Public License for more details.
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
434
55061c7c8d6e start using gnulib
John W. Eaton <jwe@octave.org>
parents:
diff changeset
435 You should have received a copy of the GNU General Public License
24163
7ff6daa6b558 doc: use tree view in Doxygen documentation and add README and etc/HACKING.
Kai T. Ohlhus <k.ohlhus@gmail.com>
parents: 24162
diff changeset
436 along with this program. If not, see <https://www.gnu.org/licenses/>.