blob: 8bdda8430b514a778248124fb1d4824b0461dda4 [file] [log] [blame]
Installation Instructions
*************************
Basic Installation
==================
mkdir build
cd build
cmake ..
make
make install
CMake configuration options can be set using the -D option. eg
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=release
Build Options
=============
Set install prefix:
-DCMAKE_INSTALL_PREFIX=<path>
Set build type. This sets the standard compiler flags for the build
type.
-DCMAKE_BUILD_TYPE=debug or -DCMAKE_BUILD_TYPE=release
Set compiler flags:
-DCMAKE_CXX_FLAGS=<flags> or set CXXFLAGS environment variable
Set linker flags:
-DCMAKE_LD_FLAGS=<flags> or set LDFLAGS environment variable
Optional Features
=================
-D<FEATURE>=<ON|OFF>
eg
-DENABLE_LIBCURL=ON -DBUILD_GTK_TESTS=OFF
A list of all options can be display with the commmand:
egrep '^ *(option|set.*STRING)' CMakeLists.txt
Alternatively, the options can be edited by running "ccmake ." in the
build directory.
Cross Compiling
===============
A toolchain file is required to specify the target specific compiler
tools. Run cmake with the option:
-DCMAKE_TOOLCHAIN_FILE=<Toolchain file>
A sample toolchain for a 64-bit mingw build is shown below. Replace
/path/to/win/root with the install prefix for the target environment.
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32 /path/to/win/root )
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Debugging Options
=================
Debug Build Types
-----------------
Release build with debugging information:
-DCMAKE_BUILD_TYPE=relwithdebinfo
Debug build with optimization except for some code re-ordering optimizations:
-DCMAKE_BUILD_TYPE=debug
Debug build with no optimization:
-DCMAKE_BUILD_TYPE=debugfull
Release build with debugging and profiling information:
-DCMAKE_BUILD_TYPE=profile
Address Sanitizer
-----------------
Ensure the extra cmake modules are available (may be a separate
package) then use -DECM_ENABLE_SANITIZERS to specify the santizers. eg
-DECM_ENABLE_SANITIZERS='address;leak;undefined'
Some options may only be available with clang. Use
-DCMAKE_CXX_COMPILER=clang++ to build with clang.
The sanitizer can also be combined with fuzz testing by using Clang 6.0
or later and additionally enabling the sanitizer fuzzer which
will enable the fuzz target cpp/tests/pdf_fuzzer.