Compiling FileZilla 3 under macOS

From FileZilla Wiki
Revision as of 21:32, 22 January 2016 by CodeSquid (talk | contribs)
Jump to navigationJump to search

This documentation explains how to setup a build environment for FileZilla 3 and how to compile it under Mac OS X using Xcode. These directions have been tested under OS X 10.11 on an Intel Mac. Resulting binaries are for OS X 10.7 or later.

Xcode

You need to download and install the latest version of Xcode from https://developer.apple.com/xcode/download/

Build environment

Open a Terminal and type the following:

mkdir -p "$HOME/prefix"
mkdir -p "$HOME/src"
export CC="clang -mmacosx-version-min=10.7"
export CXX="clang++ -std=c++14 -stdlib=libc++ -mmacosx-version-min=10.7"
export AS="as -mmacosx-version-min=10.7"
export LD="ld -macosx_version_min 10.7"
export PATH="$PATH:$HOME/prefix/bin"
export CPPFLAGS="-I$HOME/prefix/include"
export LDFLAGS="-L$HOME/prefix/lib"
export LD_LIBRARY_PATH="$HOME/prefix/lib"
export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"

If you ever close the terminal and reopen it, repeat the above steps before you continue.

pkg-config

cd ~/src
# Note that we cannot use the newer pkg-config 0.29, it doesn't link on OS X.
curl -OL http://pkgconfig.freedesktop.org/releases/pkg-config-0.28.tar.gz
tar xvf pkg-config-0.28.tar.gz
cd pkg-config-0.28
./configure --prefix="$HOME/prefix" --disable-shared --with-internal-glib
make
make install

GMP

cd ~/src
curl -OL https://gmplib.org/download/gmp/gmp-6.1.0.tar.xz
tar xvf gmp-6.1.0.tar.xz
cd gmp-6.1.0
./configure --prefix="$HOME/prefix" --disable-shared --enable-fat
make
make install

Nettle

cd ~/src
curl -OL https://ftp.gnu.org/gnu/nettle/nettle-3.1.tar.gz
tar xvf nettle-3.1.tar.gz
cd nettle-3.1
./configure --prefix="$HOME/prefix" --disable-shared --enable-fat 
make
make install

GnuTLS

cd ~/src
curl -OL ftp://ftp.gnutls.org/gcrypt/gnutls/v3.4/gnutls-3.4.8.tar.xz
tar xvf gnutls-3.4.8.tar.xz
cd gnutls-3.4.8
./configure --prefix="$HOME/prefix" --disable-shared --with-included-libtasn1 --without-p11-kit --disable-doc --enable-local-libopts
make
make install

Compile SQLite

cd ~/src
curl -OL http://sqlite.org/2016/sqlite-autoconf-3100200.tar.gz
tar xvzf sqlite-autoconf-3100200.tar.gz
cd sqlite-autoconf-3100200
./configure --prefix="$HOME/prefix" --disable-shared --disable-dynamic-extensions
make
make install

Compile wxWidgets

cd ~/src
curl -OL http://sourceforge.net/projects/wxwindows/files/3.0.2/wxWidgets-3.0.2.tar.bz2
tar xvjf wxWidgets-3.0.2.tar.bz2
cd wxWidgets-3.0.2
./configure --prefix="$HOME/prefix" --disable-shared --disable-webkit
make
make install

Compile libfilezilla

cd ~/src
curl -OL https://download.filezilla-project.org/libfilezilla/libfilezilla-0.3.0.tar.bz2
tar xf libfilezilla-0.3.0.tar.bz2
cd libfilezilla-0.3.0
./configure --prefix="$HOME/prefix" --disable-shared
make
make install

Compile FileZilla

cd ~/src
curl -OL http://download.filezilla-project.org/client/FileZilla_3.14.1_src.tar.bz2
tar xvjf FileZilla_3.14.1_src.tar.bz2
cd filezilla-3.14.1
./configure
make