-EXAMPLE_SYNTAX = \
- doc/examples/autorecode.sps \
- doc/examples/chisquare.sps \
- doc/examples/compute.sps \
- doc/examples/count.sps \
- doc/examples/descriptives.sps \
- doc/examples/flip.sps \
- doc/examples/frequencies.sps \
- doc/examples/means.sps \
- doc/examples/one-sample-t.sps \
- doc/examples/independent-samples-t.sps \
- doc/examples/reliability.sps \
- doc/examples/split.sps \
- doc/examples/weight.sps
-
-
-EXTRA_DIST += $(EXAMPLE_SYNTAX)
-
-EXAMPLE_OUTPUTS = $(EXAMPLE_SYNTAX:.sps=.out)
-EXAMPLE_HTML = $(EXAMPLE_SYNTAX:.sps=.html)
-
-$(top_builddir)/doc/pspp.info: $(EXAMPLE_OUTPUTS)
-$(top_builddir)/doc/pspp.ps: $(EXAMPLE_OUTPUTS)
-$(top_builddir)/doc/pspp.dvi: $(EXAMPLE_OUTPUTS)
-$(top_builddir)/doc/pspp.html: $(EXAMPLE_HTML)
-$(top_builddir)/doc/pspp.pdf: $(EXAMPLE_OUTPUTS)
-$(top_builddir)/doc/pspp.xml: $(EXAMPLE_OUTPUTS)
-
-# The examples cannot be built until the binary has been built
-$(EXAMPLE_OUTPUTS): $(top_builddir)/src/ui/terminal/pspp
-$(EXAMPLE_HTML): $(top_builddir)/src/ui/terminal/pspp
-
-CLEANFILES += $(EXAMPLE_OUTPUTS)
-
-SUFFIXES: .sps
-
-# use pspp to process a syntax file and reap the output into a text file
-.sps.out:
- $(MKDIR_P) $(@D)
- where=$$PWD ; \
- (cd $(top_srcdir)/examples; ${abs_builddir}/src/ui/terminal/pspp $(abs_srcdir)/doc/examples/$(<F) -o $$where/$@)
-
-# Use pspp to process a syntax file and reap the output into a html file
-# Then, use sed to delete everything up to and including <body> and
-# everything after and including </body>
-.sps.html:
- $(MKDIR_P) $(@D)
- where=$$PWD ; \
- (cd $(top_srcdir)/examples; ${abs_builddir}/src/ui/terminal/pspp $(abs_srcdir)/doc/examples/$(<F) -o $$where/$@,x -O format=html)
- $(SED) -e '\%</body%,$$d' -e '0,/<body/d' $@,x > $@
-
-# Insert the link tag for the cascading style sheet.
+FIGURE_SYNTAX = \
+ doc/pspp-figures/aggregate.sps \
+ doc/pspp-figures/autorecode.sps \
+ doc/pspp-figures/chisquare.sps \
+ doc/pspp-figures/compute.sps \
+ doc/pspp-figures/count.sps \
+ doc/pspp-figures/ctables1.sps \
+ doc/pspp-figures/ctables2.sps \
+ doc/pspp-figures/ctables3.sps \
+ doc/pspp-figures/ctables4.sps \
+ doc/pspp-figures/ctables5.sps \
+ doc/pspp-figures/ctables6.sps \
+ doc/pspp-figures/ctables7.sps \
+ doc/pspp-figures/ctables8.sps \
+ doc/pspp-figures/ctables9.sps \
+ doc/pspp-figures/ctables10.sps \
+ doc/pspp-figures/ctables11.sps \
+ doc/pspp-figures/ctables12.sps \
+ doc/pspp-figures/ctables13.sps \
+ doc/pspp-figures/ctables14.sps \
+ doc/pspp-figures/ctables15.sps \
+ doc/pspp-figures/ctables16.sps \
+ doc/pspp-figures/ctables17.sps \
+ doc/pspp-figures/ctables18.sps \
+ doc/pspp-figures/ctables19.sps \
+ doc/pspp-figures/ctables20.sps \
+ doc/pspp-figures/ctables21.sps \
+ doc/pspp-figures/ctables22.sps \
+ doc/pspp-figures/crosstabs.sps \
+ doc/pspp-figures/descriptives.sps \
+ doc/pspp-figures/flip.sps \
+ doc/pspp-figures/frequencies.sps \
+ doc/pspp-figures/matrix-print.sps \
+ doc/pspp-figures/means.sps \
+ doc/pspp-figures/one-sample-t.sps \
+ doc/pspp-figures/independent-samples-t.sps \
+ doc/pspp-figures/reliability.sps \
+ doc/pspp-figures/select-if.sps \
+ doc/pspp-figures/show-system.sps \
+ doc/pspp-figures/sort-cases.sps \
+ doc/pspp-figures/split.sps \
+ doc/pspp-figures/temporary.sps \
+ doc/pspp-figures/tutorial1.sps \
+ doc/pspp-figures/tutorial2.sps \
+ doc/pspp-figures/tutorial3.sps \
+ doc/pspp-figures/tutorial4.sps \
+ doc/pspp-figures/tutorial5.sps \
+ doc/pspp-figures/tutorial6.sps \
+ doc/pspp-figures/tutorial7.sps \
+ doc/pspp-figures/weight.sps
+
+
+EXTRA_DIST += $(FIGURE_SYNTAX)
+
+FIGURE_SPVS = $(FIGURE_SYNTAX:.sps=.spv) \
+ doc/pspp-figures/tutorial2a.spv \
+ doc/pspp-figures/tutorial2b.spv \
+ doc/pspp-figures/tutorial5a.spv \
+ doc/pspp-figures/tutorial5b.spv \
+ doc/pspp-figures/tutorial7a.spv \
+ doc/pspp-figures/tutorial7b.spv
+FIGURE_TXTS = $(FIGURE_SPVS:.spv=.txt)
+FIGURE_TEXIS = $(FIGURE_TXTS:.txt=.texi)
+FIGURE_HTMLS = $(FIGURE_SPVS:.spv=.html)
+FIGURE_PDFS = $(FIGURE_SPVS:.spv=.pdf)
+FIGURE_PNGS = $(FIGURE_SPVS:.spv=.png)
+
+figure-spvs: $(FIGURE_SPVS)
+figure-txts: $(FIGURE_TXTS)
+figure-texis: $(FIGURE_TEXIS)
+figure-htmls: $(FIGURE_HTMLS)
+figure-pdfs: $(FIGURE_PDFS)
+figure-pngs: $(FIGURE_PNGS)
+PHONY += \
+ figure-spv \
+ figure-txts \
+ figure-texis \
+ figure-htmls \
+ figure-pdfs \
+ figure-pngs
+
+$(top_builddir)/doc/pspp.info: $(FIGURE_PNGS)
+$(top_builddir)/doc/pspp.ps: $(FIGURE_TEXIS)
+$(top_builddir)/doc/pspp.dvi: $(FIGURE_TEXIS)
+$(top_builddir)/doc/pspp.html: $(FIGURE_HTMLS)
+$(top_builddir)/doc/pspp.pdf: $(FIGURE_TEXIS)
+$(top_builddir)/doc/pspp.xml: $(FIGURE_TEXIS)
+
+CLEANFILES += \
+ $(FIGURE_TXTS) \
+ $(FIGURE_SPVS) \
+ $(FIGURE_TEXIS) \
+ $(FIGURE_HTMLS) \
+ $(FIGURE_PNGS)
+SUFFIXES += .sps .spv .txt .html .texi .pdf .png
+
+# Use pspp to process a syntax file into an output file.
+if cross_compiling
+pspp = native/src/ui/terminal/pspp
+pspp_output = native/utilities/pspp-output
+
+native/Makefile:
+ $(MKDIR_P) native
+ (cd native && $(abs_top_srcdir)/configure --host=$(build) --without-gui)
+
+# The gnulib header files are required for the object files of the native pspp
+# They are defined in BUILT_SOURCES but that is only defined as a first dependency
+# for the make all target. src/ui/terminal/pspp as a target will try to compile the
+# objects first but that fails without the header files. Therefore I build the native
+# executables via the default make target
+$(pspp) $(pspp_output) &: native/Makefile
+ (cd native && flock --verbose $(top_builddir)/native-lock $(MAKE) )
+
+else
+pspp = src/ui/terminal/pspp$(EXEEXT)
+pspp_output = utilities/pspp-output$(EXEEXT)
+endif
+
+$(FIGURE_SPVS): $(pspp)
+.sps.spv:
+ $(AM_V_GEN)(cd "$(top_srcdir)/examples" \
+ && "$(abs_top_builddir)/$(pspp)" ../doc/pspp-figures/$(<F) -o - -O format=spv) > $@.tmp
+ $(AM_V_at)mv $@.tmp $@
+
+# In some cases, the tutorial only wants some parts of the output.
+convert = $(AM_V_GEN)LSAN_OPTIONS="suppressions=$(abs_top_srcdir)/tests/lsan.supp:print_suppressions=0:$$LSAN_OPTIONS" $(pspp_output) convert $< $@
+doc/pspp-figures/tutorial2a.spv: doc/pspp-figures/tutorial2.spv $(pspp_output)
+ $(convert) --command='Descriptives'
+doc/pspp-figures/tutorial2b.spv: doc/pspp-figures/tutorial2.spv $(pspp_output)
+ $(convert) --label='Extreme Values'
+doc/pspp-figures/tutorial5a.spv: doc/pspp-figures/tutorial5.spv $(pspp_output)
+ $(convert) --commands=examine --nth-command=1 --labels=descriptives
+doc/pspp-figures/tutorial5b.spv: doc/pspp-figures/tutorial5.spv $(pspp_output)
+ $(convert) --commands=examine --nth-command=2 --labels=descriptives
+doc/pspp-figures/tutorial7a.spv: doc/pspp-figures/tutorial7.spv $(pspp_output)
+ $(convert) --commands=regression --nth-command=1 --subtypes=coefficients
+doc/pspp-figures/tutorial7b.spv: doc/pspp-figures/tutorial7.spv $(pspp_output)
+ $(convert) --commands=regression --nth-command=2 --subtypes=coefficients
+
+
+$(FIGURE_PNGS): $(pspp_output)
+$(FIGURE_TXTS): $(pspp_output)
+$(FIGURE_HTMLS): $(pspp_output)
+$(FIGURE_PDFS): $(pspp_output)
+
+# Convert an output file into a text file or HTML file.
+$(FIGURE_TXTS) $(FIGURE_HTMLS): $(pspp_output)
+.spv.txt:
+ $(convert)
+.spv.pdf:
+ $(convert) -O trim=true -O left-margin=0in -O right-margin=0in -O top-margin=0in -O bottom-margin=0in -O paper-size=7.5x99in --table-look=$(srcdir)/doc/tutorial.stt
+.spv.png:
+ $(convert) -O trim=true -O left-margin=0in -O right-margin=0in -O top-margin=0in -O bottom-margin=0in -O paper-size=7.5x99in --table-look=$(srcdir)/doc/tutorial.stt
+EXTRA_DIST += doc/tutorial.stt
+.spv.html:
+ $(convert) -O format=html -O bare=true
+
+# Make sure that tutorial.stt outputs all layers, because a few of the
+# examples in the manual rely on that and it would be easy to replace
+# it with a style that didn't.
+ALL_LOCAL += tutorial-stt-must-print-all-layers
+tutorial-stt-must-print-all-layers:
+ $(AM_V_GEN)grep 'printAllLayers="true"' $(srcdir)/doc/tutorial.stt >/dev/null 2>&1 && touch $@
+
+# Convert a text file into a Texinfo file.
+.txt.texi:
+ $(AM_V_GEN)$(SED) -e 's/@/@@/g' $< > $@
+
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) --css-ref=pspp-manual.css
+# Adjust the path for screenshot images.