User Tools

Site Tools


vmime

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
vmime [2016/09/21 18:22] – [Windows (MSYS + MinGW64)] mhatzvmime [2023/04/25 16:52] (current) – external edit 127.0.0.1
Line 4: Line 4:
  
 VMime is the library we intend to use in Mail2Voice Next. It supports emails protocols such as IMAP and SMTP. VMime is the library we intend to use in Mail2Voice Next. It supports emails protocols such as IMAP and SMTP.
-Visit http://vmime.org for more informations.+Visit http://vmime.org for more information.
  
 ===== Compiling ===== ===== Compiling =====
Line 38: Line 38:
   sudo make install   sudo make install
  
-==== Windows (MSYS + MinGW64) ====+ 
 +==== Windows (MSYS + MinGW32) ==== 
 + 
 +=== Prerequisites === 
 + 
 +  - Download iconv sources from http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz 
 +  - Download GnuTLS binaries from ftp://ftp.gnutls.org/gcrypt/gnutls/w32/ (gnutls-3.4.9-w32.zip on 2016-10-16) 
 +  - Download GSASL binaries from https://ftp.gnu.org/gnu/gsasl/ (gsasl-1.8.0-x86.zip on 2016-10-16) 
 +  - Download pkg-config binaries and dependencies: 
 +    - http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip 
 +    - http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip 
 +    - http://ftp.acc.umu.se/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip 
 +    - Unpack pkg-config.exe, the glib dll and the intl dll in the same folder 
 + 
 +=== Setup MSYS/MinGW environment === 
 + 
 +  - Download and install MinGW 
 +  - Download and install MSYS 
 +  - Go to your MSYS install folder 
 +  - start msys.bat 
 +  - type sh /postinstall/pi.sh and follow the instructions. 
 + 
 +=== Compiling iconv === 
 + 
 +<code> 
 +$ cd path/to/iconv/sources 
 +$ mkdir build 
 +$ cd build 
 +$ ../configure --prefix=$(pwd) 
 +$ make            <- I was using mingw32-make at first but I encountered some errors with it. It plays nice with MSYS make. 
 +$ make install 
 +</code> 
 + 
 + 
 +=== Compiling VMIME === 
 + 
 +In order to prevent some bugs with the -std=c++11 flag with gcc 5.3, you need to modify the file cmake/cmake-cxx11/Modules/CheckCXX11Features.cmake at lines 58 and 64 (not sure if the first one is useful). 
 + 
 +<code> 
 +
 +### Check for needed compiler flags 
 +
 +include(CheckCXXCompilerFlag) 
 +check_cxx_compiler_flag("-std=gnu++11" _HAS_CXX11_FLAG)        <--- MODIFY HERE 
 +if (NOT _HAS_CXX11_FLAG) 
 +    check_cxx_compiler_flag("-std=c++0x" _HAS_CXX0X_FLAG) 
 +endif () 
 + 
 +if (_HAS_CXX11_FLAG) 
 +    set(CXX11_COMPILER_FLAGS "-std=gnu++11"                  <--- MODIFY HERE 
 +elseif (_HAS_CXX0X_FLAG) 
 +    set(CXX11_COMPILER_FLAGS "-std=c++0x"
 +endif () 
 + 
 +</code> 
 + 
 +And you can finally compile VMime! 
 + 
 +<code> 
 +$ git clone https://github.com/kisli/vmime.git 
 +$ mkdir vmime/build 
 +$ cd vmime/build 
 +$ export DEPS=/path/to/dependencies/parent/dir 
 +$ cmake .. -G "MinGW Makefiles" -DCMAKE_CXX_COMPILER=/C/MinGW/bin/mingw32-g++.exe -DCMAKE_C_COMPILER=/C/MinGW/bin/mingw32-gcc.exe \ 
 +-DCMAKE_MAKE_PROGRAM=/C/MinGW/bin/mingw32-make.exe -DCMAKE_BUILD_TYPE=Release \ 
 +-DCMAKE_INSTALL_PREFIX=$(pwd)/install \ 
 +-DGNUTLS_INCLUDE_DIR=$DEPS/gnutls-3.4.9/include -DGNUTLS_LIBRARY=$DEPS/gnutls-3.4.9/lib/libgnutls.dll.a \ 
 +-DGSASL_INCLUDE_DIR=$DEPS/gsasl-1.8.0/include -DGSASL_LIBRARIES=$DEPS/gsasl-1.8.0/lib/libgsasl.dll.a \ 
 +-DICONV_INCLUDE_DIR=$DEPS/libiconv-1.14/build/dist/include -DICONV_LIBRARIES=$DEPS/libiconv-1.14/build/dist/lib/libiconv.dll.a \ 
 +-DPKG_CONFIG_EXECUTABLE=$DEPS/pkg-config/pkg-config.exe -DVMIME_CHARSETCONV_LIB=iconv \ 
 +-DVMIME_BUILD_DOCUMENTATION=OFF -DVMIME_BUILD_SAMPLES=OFF -DVMIME_BUILD_TESTS=OFF \ 
 +-DVMIME_HAVE_MLANG_H=OFF -DVMIME_HAVE_MLANG_LIB=OFF -DVMIME_HAVE_MESSAGING_PROTO_SENDMAIL=OFF \ 
 +-DVMIME_SHARED_PTR_USE_BOOST=OFF -DVMIME_SHARED_PTR_USE_CXX=ON -DCMAKE_CXX_FLAGS="-D_WIN32_WINNT=0x0502" 
 +$ mingw32-make.exe 
 +$ mingw32-make.exe install 
 +</code> 
 + 
 + 
 +==== Windows (MSYS + MinGW64) [DRAFT] ====
  
 === Prerequisites === === Prerequisites ===
Line 68: Line 146:
   - Then type the following commands :   - Then type the following commands :
  
-  cd /path/to/your/libgsasl_src_dir/ (i.e. /c/Users/MrNobody/dev/libgsasl-1.8.0/+<code> 
-  mkdir build +cd /path/to/your/libgsasl_src_dir/ (i.e. /c/Users/MrNobody/dev/libgsasl-1.8.0/
-  cd build +mkdir build 
-  ../configure --prefix=/path/to/your/libgsasl_src_dir/dist +cd build 
-  make +../configure --prefix=/path/to/your/libgsasl_src_dir/dist 
-  make install +make 
-  +make install 
 +</code> 
 == Get other dependencies == == Get other dependencies ==
-Fortunately, the Winbuilds project offers some precompiled dependencies we need. You can then download the following packages from http://win-builds.org/doku.php/1.5.0_packages:+Fortunately, the Winbuilds project offers some precompiled dependencies we need. You can download the following packages from http://win-builds.org/doku.php/1.5.0_packages:
   * gnutls   * gnutls
   * pkg-config   * pkg-config
Line 83: Line 163:
 == Compiling VMime == == Compiling VMime ==
  
 +Finally, you can compile VMime using the following commands:
 +
 +<code>
 +$ git clone https://github.com/kisli/vmime.git
 +$ mkdir vmime/build
 +$ cd vmime/build
 +$ export DEPS=/path/to/dependencies/parent/dir
 +$ cmake .. -G "MinGW Makefiles" -DCMAKE_CXX_COMPILER=/C/mingw64/bin/g++.exe -DCMAKE_C_COMPILER=/C/mingw64/bin/gcc.exe \
 +-DCMAKE_MAKE_PROGRAM=/C/mingw64/bin/mingw32-make.exe -DCMAKE_BUILD_TYPE=Release \
 +-DCMAKE_INSTALL_PREFIX=/C/Users/MrNobody/dev/vmime-master/install \
 +-DGNUTLS_INCLUDE_DIR=$DEPS/gnutls-3.2.21/include -DGNUTLS_LIBRARY=$DEPS/gnutls-3.2.21/lib64/libgnutls.dll.a \
 +-DGSASL_INCLUDE_DIR=$DEPS/libgsasl-1.8.0/include -DGSASL_LIBRARIES=$DEPS/libgsasl-1.8.0/lib/libgsasl.dll.a \
 +-DICONV_INCLUDE_DIR=$DEPS/win-iconv-0.0.6/include -DICONV_LIBRARIES=$DEPS/win-iconv-0.0.6/lib64/libiconv.dll.a \
 +-DPKG_CONFIG_EXECUTABLE=$DEPS/pkg-config/bin/pkg-config.exe -DVMIME_CHARSETCONV_LIB=iconv \
 +-DVMIME_BUILD_DOCUMENTATION=OFF -DVMIME_BUILD_SAMPLES=OFF -DVMIME_BUILD_TESTS=OFF \
 +-DVMIME_HAVE_MLANG_H=OFF -DVMIME_HAVE_MLANG_LIB=OFF -DVMIME_HAVE_MESSAGING_PROTO_SENDMAIL=OFF \
 +-DVMIME_SHARED_PTR_USE_BOOST=OFF -DVMIME_SHARED_PTR_USE_CXX=ON
 +$ mingw32-make.exe
 +$ mingw32-make.exe install
 +</code>
 +
 +Note 1: you may encounter some errors while generating the Makefile mentioning that libglib2 is missing but you can ignore it.
 +
 +Note 2: if the install step fails at the end, just copy the missing libvmime.dll file from the build/build/bin directory into the install/bin directory.
  
-  git clone https://github.com/kisli/vmime.git 
-  mkdir vmime/build 
-  cd vmime/build 
-  export DEPS=/path/to/dependencies/parent/dir 
-cmake .. -G "MinGW Makefiles" -DCMAKE_CXX_COMPILER=/C/mingw64/bin/g++.exe -DCMAKE_C_COMPILER=/C/mingw64/bin/gcc.exe -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/C/Users/Matthieu/dev/vmime-master/install -DCMAKE_MAKE_PROGRAM=/C/mingw64/bin/mingw32-make.exe -DGNUTLS_INCLUDE_DIR=$DEPS/gnutls-3.2.21/include -DGNUTLS_LIBRARY=$DEPS/gnutls-3.2.21/lib64/libgnutls.dll.a -DGSASL_INCLUDE_DIR=$DEPS/libgsasl-1.8.0/include -DGSASL_LIBRARIES=$DEPS/libgsasl-1.8.0/lib/libgsasl.dll.a -DICONV_INCLUDE_DIR=$DEPS/win-iconv-0.0.6/include -DICONV_LIBRARIES=$DEPS/win-iconv-0.0.6/lib64/libiconv.dll.a -DPKG_CONFIG_EXECUTABLE=$DEPS/pkg-config/bin/pkg-config.exe -DVMIME_BUILD_DOCUMENTATION=OFF -DVMIME_BUILD_SAMPLES=OFF -DVMIME_BUILD_TESTS=OFF -DVMIME_CHARSETCONV_LIB=iconv -DVMIME_HAVE_MLANG_H=OFF -DVMIME_HAVE_MLANG_LIB=OFF -DVMIME_HAVE_MESSAGING_PROTO_SENDMAIL=OFF -DVMIME_SHARED_PTR_USE_BOOST=OFF -DVMIME_SHARED_PTR_USE_CXX=ON 
vmime.1474482158.txt.gz · Last modified: 2023/04/25 16:52 (external edit)