Dev:MSYS2 Build

From Synfig Studio :: Documentation
Revision as of 00:57, 21 March 2016 by VeganaiZe (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Notes

  • If you are using the released versions instead of GIT, none of the libtoolize or autoreconf steps are necessary. For released versions, "./configure && make && sudo make install" should be enough.
  • pkg-config might not look in /usr/local/lib/pkgconfig by default. So if you are installing in anywhere other than the system pkg-config path, please run "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig" or similar before building or installing anything.
  • If you intend to build code repetitively you can export export CXX="/usr/bin/ccache /usr/bin/g++". This allows to not rebuild the already build modules so they taken from the cache.
  • After you obtain the source code using the git repository, you obtain a single synfig/ folder where the three main modules (ETL, synfig-core and synfig-studio) are up to date.
  • If you want to test a particular branch of the repository do the following:
~/synfig$ git branch -r 

You'll obtain a list of the remote branches that exists in the repo. For example:

  origin/0.64.2
  origin/0.64.x
  origin/1.0.x
  origin/HEAD -> origin/master
  origin/dev-1.0.1
  origin/eldruin_new_cairo_core
  origin/eldruin_transformation_matrix
  origin/genete_cairo_core
  origin/genete_new_cairo_core
  origin/master

To properly checkout a remote branch you have to create a local branch to track a particular remote branch and checkout. For example:

~/synfig$ git branch --track test_cairo origin/eldruin_new_cairo_core
~/synfig$ git checkout test_cairo

Your code is now ready to be built on that branch.

  • The CVS requirement is only because the autopoint program run by autoreconf needs CVS. You can avoid the need for CVS by disabling the translation/gettext stuff in configure.ac.
  • If you don't want to install to a system-wide directory, run something like these commands before starting:
prefix=$(pwd)/install
export PKG_CONFIG_PATH="$prefix/lib/pkgconfig"
export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH
export CXX="/usr/bin/ccache /usr/bin/g++"
  • export PKG_CONFIG_PATH="$prefix/lib/pkgconfig" allows to find the linking libraries.
  • export PATH=$(pwd)/synfig-core/src/tool/.libs:$PATH allows synfigstudio find the correct * libraries to render the icons for the toolbox etc.
  • export CXX="/usr/bin/ccache /usr/bin/g++" allows to use the cache to avoid rebuilding.


And when you run ./configure, run it with:
--prefix $prefix

System wide build Instructions

MSYS2 - Mingw64

1. Follow the instructions to install MSYS2 here:

   https://msys2.github.io/

"MinGW-w64 Win64 Shell"

  • These steps should be improved, but they seem to work for now...
  • The following 'pacman' command is incomplete... Refer to other wiki build pages for more dependecies...
$ pacman -S \
	git \
	nano \
	base-devel \
	mingw-w64-`uname -m`-binutils \
	mingw-w64-`uname -m`-boost \
	mingw-w64-`uname -m`-cairo \
	mingw-w64-`uname -m`-cairomm \
	mingw-w64-`uname -m`-ccache \
	mingw-w64-`uname -m`-crt-git \
	mingw-w64-`uname -m`-openexr \
	mingw-w64-`uname -m`-freetype \
	mingw-w64-`uname -m`-gcc \
	mingw-w64-`uname -m`-glibmm \
	mingw-w64-`uname -m`-gtk2 \
	mingw-w64-`uname -m`-gtk3 \
	mingw-w64-`uname -m`-gtkmm \
	mingw-w64-`uname -m`-gtkmm3 \
	mingw-w64-`uname -m`-ilmbase \
	mingw-w64-`uname -m`-imagemagick \
	mingw-w64-`uname -m`-libpng \
	mingw-w64-`uname -m`-libsigc++ \
	mingw-w64-`uname -m`-libtool \
	mingw-w64-`uname -m`-libxml++ \
	mingw-w64-`uname -m`-make \
	mingw-w64-`uname -m`-mesa \
	mingw-w64-`uname -m`-libmng \
	mingw-w64-`uname -m`-nsis \
	mingw-w64-`uname -m`-nsis-nsisunz \
	mingw-w64-`uname -m`-opencl-headers \
	mingw-w64-`uname -m`-openexr \
	mingw-w64-`uname -m`-pangomm \
	mingw-w64-`uname -m`-pkg-config \
	mingw-w64-`uname -m`-png2ico \

$ pacman -Ss <package>  # Search for <package>

MLT

https://sourceforge.net/projects/mlt/files/latest/download?source=files

$ tar xvf mlt-6*.tar.gz
$ cd mlt-6.0.0/

$ ./configure --prefix=/mingw64 --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 \
	--disable-debug \
	--disable-frei0r \
	--without-kde \
	--disable-sdl \
$ make
$ make install

ETL

ETL is a template library, there is nothing to build really, it just needs to be installed.

Requires: autoconf automake

Type the following commands from the directory where you cloned the git repo

$ cd synfig/ETL
$ autoreconf --install --force

$ ./configure --prefix=/mingw64 \
              --build=`uname -m`-w64-mingw32 \
              --host=`uname -m`-w64-mingw32 

$ make install  # Optional

synfig-core

Requires: ETL (etl-dev, already installed if you successfully built etl), libxml++, libsigc++, libltdl, libtool, gettext, autopoint (part of gettext-dev), cvs, boost-program-options

Note: libpng isn't required to build synfig, but if you build synfig without PNG support and go on to build synfigstudio, that step will fail (because the build process for synfigstudio uses synfig to create .png icon files).

Note: the 'configure.ac' file in the synfig-core directory doesn't work with libtool version 2; put a "#" at the front of the line with this command:

 sed -i 's/^AC_CONFIG_SUBDIRS/# AC_CONFIG_SUBDIRS/' synfig-core/configure.ac 

Optional: libpng, libmng, libjpeg, libfreetype, libfontconfig, libopenexr, libavcodec, libmagick++, vimage (MacOS only, proprietary)

Runtime: encodedv (from libdv), ffmpeg, convert (from imagemagick)

Type the following commands from the directory where you cloned the git repo

$ cd synfig/synfig-core
$ libtoolize --copy --force
$ autoreconf --install --force

$ ./configure --prefix=/mingw64 \
              --build=x86_64-w64-mingw32 \
              --host=x86_64-w64-mingw32 \
              --with-boost-libdir=/mingw64/lib

$ make
$ make install  # Optional

Note:

  • Don't use --enable-half, it is slow.
  • If ETL was installed in a non-standard directory using --prefix=<location>, it suffices to run the configure script with an updated PKG_CONFIG_PATH environment variable. E.g.:
    PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/my/install/prefix/lib/pkgconfig ./configure --prefix=/my/install/prefix

synfig-studio

Requires: ETL (etl-dev, already installed if you successfully built etl), synfig (libsynfig-dev, already installed if you successfully built synfig-core), gtkmm >= 2.4, gtk >= 2.0, glibmm, libsigc++, libltdl, libtool, gettext, cvs, intltool, libboost >= 1.53, libcairo >= 1.12

Optional: fonts (for the images), FMOD (version 3.x, proprietary)

  • ttf-freefont ttf-dejavu ttf-dustin
  • freefonts dejavu

Type the following commands from the directory where you cloned the git repo

$ cd synfig/synfig-studio
$ ./bootstrap.sh  # Necessary?

$ ./configure --prefix=/mingw64 --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw3

$ make
$ make install  # Optional