1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
Prerequisites for Building PSPP from Git
----------------------------------------
To build this project from the sources direct from the Git archive,
you must install the prerequisites listed in INSTALL, plus the
following:
* Autoconf 2.64 (or later).
* Automake 1.14 (or later).
* Gettext 0.19 (or later).
* GNU M4 1.4.9 (or later).
* pkg-config 0.21 (or later).
* gperf 3.0.1 (or later).
* Gnulib (see below for details).
* libtool 1.5.22 (or later).
* Texinfo 5.2 or later, to build the documentation.
* rsvg-convert from librsvg2.
After you install PSPP's prerequisites, you must obtain a copy of
Gnulib, then bootstrap the tree, as described in the sections below.
After that, you may follow the procedure described in INSTALL.
Obtaining Gnulib
----------------
This version of PSPP should work with the Gnulib commit shown below.
Gnulib does not maintain a stable API or ABI, so it is possible that
PSPP will not work with older or newer versions of Gnulib.
commit 37d43aa09011b2474b843e9386c6c246f50065c7 (origin/stable-202307)
Author: Collin Funk <collin.funk1@gmail.com>
Date: Sun Mar 10 01:02:30 2024 -0800
gnulib-tool: Don't remove comments referencing @NMD@, part 2.
* gnulib-tool (func_emit_tests_Makefile_am): Replace lines that start
with @NMD@ or @!NMD@ instead of lines that contain them.
To clone Gnulib into a directory named "gnulib" using Git, and then
check out this particular commit, run these commands:
git clone git://git.savannah.gnu.org/gnulib.git gnulib
cd gnulib
git checkout $COMMIT
where $COMMIT should be replaced by the commit number listed above
(usually it is sufficient to just type the first 6 or so digits).
If you do not have Git installed, then you may alternately download
http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=snapshot;h=$COMMIT;sf=tgz
where $COMMIT is, again, at least the first few digits of the commit
number listed above. This download will yield a tar.gz file that you
may extract with "gunzip" and "tar" to yield identical results.
Bootstrapping
-------------
Once you have Gnulib installed, PSPP must be "bootstrapped" using the
following command:
make -f Smake
If you checked Gnulib out in a directory named `gnulib' at the same
level as PSPP, then this is sufficient. Otherwise, provide the
location of GNULIB on the `make' command line:
make -f Smake GNULIB=/gnulib/base/directory/name
After executing Smake, follow the procedure described in INSTALL to
build and install PSPP. On some systems this may be as simple as:
./configure
make
Once PSPP is built, you may run its self-tests with:
make check
or for a more thorough test:
make distcheck
Building from git on Mac OS
---------------------------
You can build on MacOS in the brew environment. Install all
required packages to resolve library dependencies and autotools.
In brew the gettext automake macros are not found by default. Run
ACLOCAL_PATH=`brew --prefix`/Cellar/gettext/0.25/share/gettext/m4 make -f Smake
The brew system provides the libraries and header files in a separate
location from the MacOS system libraries. The typical locations are
Libraries: `brew --prefix`/lib
Headers: `brew --prefix`/include
pspp under brew will be linked against the brew libraries. The configure
script has to be informed about the library and header locations. Assume the following
directory structure for an out of tree build:
~/mypspp
|----pspp (This is the pspp git directory)
|----install (The install location containing also ui files for psppire)
|----build (The build directory)
|----gnulib (The gnulib directory as described above)
The configure command finds by default the MacOS libiconv library. That library
is not fully compatible to the gnu libiconv. So add the brew libiconv to the linker
and compiler flags such that the brew libiconv is found.
Then you can build with the following commands:
cd ~/mypspp/pspp
make -f Smake
cd ../build
../pspp/configure --prefix=/Users/USER/mypspp/install \
--without-perl-module \
LDFLAGS='-L/opt/homebrew/lib -L/opt/homebrew/Cellar/libiconv/1.18/lib'\
CPPFLAGS='-I/opt/homebrew/include -I/opt/homebrew/Cellar/libiconv/1.18/include'\
CFLAGS='-g -O0'
make
make install
../install/bin/psppire (If everything worked, you should see psppire...)
You need to run "make install" because psppire searches for some setup files which
must be present with respect to the "prefix" setting. For debugging with a
debugger it is better to launch the executable in the build directory.
cd <build>
lldb ./src/ui/gui/.libs/psppire
Inside lldb you need to set the environment variable DYLD_LIBRARY_PATH such that
psppire finds the debug symobls for code that is in libraries.
env DYLD_LIBRARY_PATH=<builddir>/src/ui/gui/.libs
|