README.Git: Recommend newer Gnulib, to avoid GCC 7 segfaults.
[pspp] / README.Git
1 Prerequisites for Building PSPP from Git
2 ----------------------------------------
3
4 To build this project from the sources direct from the Git archive,
5 you must install the prerequisites listed in README, plus the
6 following:
7
8         * Autoconf 2.60 (or later).
9
10         * Automake 1.10 (or later).
11
12         * Gettext 0.17 (or later).
13
14         * GNU M4 1.4.9 (or later).
15
16         * pkg-config 0.21 (or later).
17
18         * gperf 3.0.1 (or later).
19
20         * Gnulib (see below for details).
21
22         * libtool 1.5.22 (or later).
23
24         * Texinfo 5.2 or later, to build the documentation.
25
26         * Gimp --  2.8.2 is known to work
27
28 After you install PSPP's prerequisites, you must obtain a copy of
29 Gnulib, then bootstrap the tree, as described in the sections below.
30 After that, you may follow the procedure described in INSTALL.
31
32 Obtaining Gnulib
33 ----------------
34
35 This version of PSPP should work with the Gnulib commit shown below.
36 Gnulib does not maintain a stable API or ABI, so it is possible that
37 PSPP will not work with older or newer versions of Gnulib.
38
39         commit 9ae75d1450362acb61bfa1f0f77905b76f894838 
40         Author: Bruno Haible <bruno@clisp.org>
41         Date:   Sun Jun 25 11:09:42 2017 +0200
42
43             stat: Improve last change.
44
45             * lib/stat-w32.c: Revert last change. Use generic idiom instead.
46
47 To clone Gnulib into a directory named "gnulib" using Git, and then
48 check out this particular commit, run these commands:
49         git clone git://git.savannah.gnu.org/gnulib.git gnulib
50         cd gnulib
51         git checkout $COMMIT
52 where $COMMIT should be replaced by the commit number listed above
53 (usually it is sufficient to just type the first 6 or so digits).
54
55 If you do not have Git installed, then you may alternately download
56 http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=snapshot;h=$COMMIT;sf=tgz
57 where $COMMIT is, again, at least the first few digits of the commit
58 number listed above.  This download will yield a tar.gz file that you
59 may extract with "gunzip" and "tar" to yield identical results.
60
61 Bootstrapping
62 -------------
63
64 Once you have Gnulib installed, PSPP must be "bootstrapped" using the
65 following command:
66         make -f Smake
67 If you checked Gnulib out in a directory named `gnulib' at the same
68 level as PSPP, then this is sufficient.  Otherwise, provide the
69 location of GNULIB on the `make' command line:
70         make -f Smake GNULIB=/gnulib/base/directory/name
71
72 After executing Smake, follow the procedure described in INSTALL to
73 build and install PSPP.  On some systems this may be as simple as:
74         ./configure
75         make
76
77 Once PSPP is built, you may run its self-tests with:
78         make check
79 or for a more thorough test:
80         make distcheck
81
82 Glade UI Design
83 ---------------
84
85 The ui files in src/ui/gui may be viewed (maybe changed) with Glade. For this
86 you need
87
88         * libgladeui 2.0 or later
89
90 Then you need to run
91
92         configure --with-gui-tools
93         make
94         make install
95
96 psppire uses some self defined widgets. To use glade these widgets have
97 to be announced to glade such that you can view the interface.
98 The install process will install the psppire glade library, icons and
99 psppire.xml files in the appropiate system locations. You cannot override
100 this with --prefix. After that you can run "glade" and open the ui files.
101
102 Building from git on Mac OS
103 ---------------------------
104
105 You can build on MacOS in the macports environment. After installing all
106 required packages to resolve library dependencies and autotools e.t.c, you
107 run make -f Smake as described above.
108
109 The macports system provides the libraries and header files in a separate
110 location from the MacOS system libraries. The typical locations are
111
112 Libraries: /opt/local/lib
113 Headers:   /opt/local/include
114
115 pspp under macports will be linked against the macports libraries. The configure
116 script has to be informed about the library and header locations. Assume the following
117 directory structure for an out of tree build:
118
119 ~/mypspp
120   |----pspp    (This is the pspp git directory)
121   |----install (The install location containing also ui files for psppire)
122   |----build   (The build directory)
123   |----gnulib  (The gnulib directory as described above)
124
125 Then you can build with the following commands:
126
127     cd ~/mypspp/pspp
128     make -f Smake
129     cd ../build
130     ../pspp/configure --prefix=/Users/USER/mypspp/install \
131                   LDFLAGS=-L/opt/local/lib \
132                   CPPFLAGS=-I/opt/local/include
133     make
134     make install
135     ../install/bin/psppire (If everything worked, you should see psppire...)