Building and testing pdfout

This document describes the details of pdfout's build system.

All build and test tasks are run with the make.pl script. It supports the following list of subcommands, which can also be viewed by running these commands:

 ./make.pl --help
 or: ./make.pl -h

build

 ./make.pl build [OPTION]
 or: ./make.pl [OPTION]

Build the pdfout binary. In a first step, this will build the mupdf submodule.

The default build directory is build.

 Options:
      --out=OUTPUT_DIR        alternative build directory.
      --cc=CC                 name of the C compiler
  -c, --cflags=CFLAGS         additional compiler flags
      --cppflags=CPPFLAGS     additional preprocessor flags
      --ldflags=LDFLAGS       additional linker flags
      --mupdf-cflags=CFLAGS   CFLAGS for mupdf. Defaults to '-O2 -g'
      --prefix=PREFIX         installation prefix
      --install               install pdfout
  -j, --jobs=JOBS             number of jobs used by make
  -v, --verbose               Show build commands

clean

 ./make.pl clean [OPTION]

Clean the build directory. By default everything is cleaned. The options give you more fine-grained control.

 Options:
      --out=OUTPUT_DIR        target directory
      --mupdf                 only clean the mupdf build
      --pdfout                keep the mupdf build
      --html                  only clean the doc output

check

 ./make.pl check
 or ./make.pl check --tests='info-dict.t page-count.t'

Test a pdfout build. This will run all *.t files in the test directory.

 Options:
      --out=OUTPUT_DIR        build directory
  -j, --jobs=JOBS             number of parallel jobs
      --valgrind              run tests under valgrind
  -t, --tests=TESTS           run only these tests
      --timer                 print elapsed time after each test

This requires Test::Files.

Using valgrind will only work, if the build does not use optimization.

doc

 ./make.pl doc

Build the documentation. This will produce nicely formatted XHTML. By default, the output will be written into build/html/.

This requires Pod::Simple::XHTML.

 Options:
      --out=OUTPUT_DIR        put output into OUTPUT_DIR/html

upload-doc

 ./make.pl upload-doc

Maintainer command to update the docs at https://amba.github.io/pdfout.

submodules

 ./make.pl submodules

Check out the mupdf submodule and mupdf's own submodules.

cover

 ./make.pl cover -j4

Requires Devel::Cover installed.

Do coverage build with gcov. Uses output directory cover-build.

Open output of gcov2perl in firefox.

 Options:
  -j, --jobs=JOBS             number of parallel jobs

perltidy

 ./make.pl perltidy

Run Perl::Tidy on all of our perl sources.