Editing Compiling FileZilla 3 under Windows
From FileZilla Wiki
Jump to navigationJump to searchWarning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 11: | Line 11: | ||
=Installing the MSYS2 environment= | =Installing the MSYS2 environment= | ||
− | Download the 64bit MSYS2 installer and install it in a convenient location: [ | + | Download the 64bit MSYS2 installer and install it in a convenient location: [http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe msys2-x86_64-20180531.exe] |
=Installing the compiler toolchain= | =Installing the compiler toolchain= | ||
Line 28: | Line 28: | ||
Start MSYS2 MinGW 64-bit shell, execute the following command to install the necessary packages: | Start MSYS2 MinGW 64-bit shell, execute the following command to install the necessary packages: | ||
− | pacman -S autoconf automake libtool | + | pacman -S autoconf automake libtool mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain git svn |
Execute the following to work around some most-annoying bugs in the toolchain | Execute the following to work around some most-annoying bugs in the toolchain | ||
Line 40: | Line 40: | ||
Execute the following commands: | Execute the following commands: | ||
mkdir ~/prefix | mkdir ~/prefix | ||
− | echo 'export PATH="$HOME/prefix/bin | + | echo 'export PATH="$HOME/prefix/bin:/mingw64/bin:/mingw32/bin:$PATH"' >> ~/.profile |
echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.profile | echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.profile | ||
− | echo 'export PATH="$HOME/prefix/bin | + | echo 'export PATH="$HOME/prefix/bin:/mingw64/bin:/mingw32/bin:$PATH"' >> ~/.bash_profile |
echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.bash_profile | echo 'export PKG_CONFIG_PATH="$HOME/prefix/lib/pkgconfig"' >> ~/.bash_profile | ||
− | |||
Restart the MSYS2 MINGW64 shell. | Restart the MSYS2 MINGW64 shell. | ||
Line 53: | Line 52: | ||
cd ~ | cd ~ | ||
− | curl -O https://gmplib.org/download/gmp/gmp-6.2 | + | curl -O https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz |
− | tar xf gmp-6.2 | + | tar xf gmp-6.1.2.tar.xz |
− | cd gmp-6.2 | + | cd gmp-6.1.2 |
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat | ./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat | ||
make && make install | make && make install | ||
Line 62: | Line 61: | ||
cd ~ | cd ~ | ||
− | wget https://ftp.gnu.org/gnu/nettle/nettle-3. | + | wget https://ftp.gnu.org/gnu/nettle/nettle-3.4.tar.gz |
− | tar xf nettle-3. | + | tar xf nettle-3.4.tar.gz |
− | cd nettle-3. | + | cd nettle-3.4 |
./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat | ./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-shared --disable-static --enable-fat | ||
make && make install | make && make install | ||
Line 71: | Line 70: | ||
cd ~ | cd ~ | ||
− | wget https://zlib.net | + | wget https://zlib.net/zlib-1.2.11.tar.gz |
− | tar xf zlib-1.2. | + | tar xf zlib-1.2.11.tar.gz |
− | cd zlib-1.2. | + | cd zlib-1.2.11 |
LDSHAREDLIBC='' ./configure --prefix="$HOME/prefix" -u=GNU | LDSHAREDLIBC='' ./configure --prefix="$HOME/prefix" -u=GNU | ||
make && make install | make && make install | ||
Line 80: | Line 79: | ||
cd ~ | cd ~ | ||
− | wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3. | + | wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.15.tar.xz |
− | tar xf gnutls-3. | + | tar xf gnutls-3.5.15.tar.xz |
− | cd gnutls-3. | + | cd gnutls-3.5.15 |
− | ./configure --prefix="$HOME/prefix" --enable- | + | ./configure --prefix="$HOME/prefix" --enable-static --disable-shared --build=x86_64-w64-mingw32 --with-included-libtasn1 --disable-doc --disable-guile --without-p11-kit --enable-local-libopts --disable-nls --with-included-unistring |
make && make install | make && make install | ||
+ | |||
+ | # The __declspec(dllimport) is needed for DLLs, but we're linking statically. It thus results in undefined references. Remove it. | ||
+ | sed -i 's/__declspec(dllimport)//' "$HOME/prefix/include/gnutls/gnutls.h" | ||
==Building SQLite== | ==Building SQLite== | ||
cd ~ | cd ~ | ||
− | wget https://sqlite.org/ | + | wget https://sqlite.org/2017/sqlite-autoconf-3200100.tar.gz |
− | tar xf sqlite-autoconf- | + | tar xf sqlite-autoconf-3200100.tar.gz |
− | cd sqlite-autoconf- | + | cd sqlite-autoconf-3200100 |
− | ./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable- | + | ./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-static --disable-shared |
make && make install | make && make install | ||
Line 98: | Line 100: | ||
cd ~ | cd ~ | ||
− | + | svn co https://github.com/wxWidgets/wxWidgets/branches/WX_3_0_BRANCH wx3 | |
cd wx3 | cd wx3 | ||
− | ./configure | + | ./configure --prefix="$HOME/prefix" --enable-static --disable-shared --build=x86_64-w64-mingw32 --enable-unicode --without-libtiff --without-libjpeg --with-expat=builtin --with-libpng=builtin |
make && make install | make && make install | ||
Line 109: | Line 111: | ||
cd libfilezilla | cd libfilezilla | ||
autoreconf -i | autoreconf -i | ||
− | ./configure --prefix="$HOME/prefix" --enable- | + | ./configure --build=x86_64-w64-mingw32 --prefix="$HOME/prefix" --enable-static --disable-shared |
make && make install | make && make install | ||
Line 123: | Line 125: | ||
cd ~/filezilla | cd ~/filezilla | ||
autoreconf -i | autoreconf -i | ||
− | ./configure --with-pugixml=builtin | + | ./configure --build=x86_64-w64-mingw32 --with-pugixml=builtin LDFLAGS="-static-libgcc -static-libstdc++" |
make | make | ||
Line 133: | Line 135: | ||
strip src/fzshellext/64/.libs/libfzshellext-0.dll | strip src/fzshellext/64/.libs/libfzshellext-0.dll | ||
strip src/fzshellext/32/.libs/libfzshellext-0.dll | strip src/fzshellext/32/.libs/libfzshellext-0.dll | ||
− | |||
==Building the installer== | ==Building the installer== |