aboutsummaryrefslogtreecommitdiff
Howto Build
===========

dependencies: binutils g++ autoconf automake
You'll need a GCC suite version 5.* or higher (for full C++2011 support)!

Basically there are four different possible build configurations which are (more or less) well-tested.
All builds require a full C++2011 toolchain! Microsoft's VisualStudio2013 won't work since it's not fully C++2011 compatible!
You can either use a Linux toolchain with g++/clang or a mingw64-g++ toolchain for Windows builds.

Linux (Debian):
	- non-GUI build
	- GUI build linked against a static wxWidgets library
	- GUI build linked against a dynamic wxWidgets library
Windows:
	- GUI build linked against a static wxWidgets library

Untested:
	- Windows non-GUI build
	- Windows GUI build linked against a dynamic wxWidgets library


Build with a shipped (static) wxWidgets version
===============================================

1. Run `build_wxwidgets.sh [target-triplet]`
	where [target-triplet] should look like cpu-vendor-os e.g. i686-w64-mingw32 if you are building for Windows
	Example: `./build_wxwidgets.sh i686-w64-mingw32`

2. Run `./autogen.sh`
	and add an additional `--help` to set some package options.
	You can cross compile for other architectures/systems by setting `--host` and `--build` *explicitly*.
	Example: `./autogen.sh --disable-gui`
	         OR
	         `./autogen.sh --host=i686-w64-mingw32 --build=x86_64-linux-gnu`
	         (cross compile from x86_64 Linux to i686 Windows w64-SysApi)

3. Run `make` or `make -j4` or `make -j4 V=1`
	The argument -jN specifies the number of parallel build jobs.
	The argument V=1 specifies a verbose compilation mode.

4. Do not forget to strip the resulting executable with `make install DESTDIR=./tmp`.
	Or you could run the strip program for yourself, e.g.: `i686-w64-mingw32-strip -s src/utool.exe`
	Because size matters! (~16mb unstripped > ~3mb stripped!)


Build with a dynamic wxWidgets version
======================================

1. Run `./autogen.sh --enable-host-wxwidgets`
	Build a binary executable which is dynamic linked against a native wxWidgets library.

2. Run `make` (see above)

3. Strip the resulting executable (see above)


For a successful host wxWidgets build you'll need at least one extra package:
	libwxbase3.0-dev OR libwxbase3.1-dev


Additional source packages used by this project
===============================================

Format: Project (LICENSE): URL

wxWidgets (wxWindows Library Licence): https://github.com/wxWidgets/wxWidgets
Fast C++ CSV Parser (BSD-3): https://github.com/ben-strasser/fast-cpp-csv-parser
cpp-httplib (The Boost Software License 1.0): https://github.com/yhirose/cpp-httplib
json11 (Dropbox): https://github.com/dropbox/json11