ekhtml ( http://ekhtml.sourceforge.net/ || Github mirror: https://github.com/hilbix/ekhtml ) 0.3.3-pre 2004-06-12 (from Github mirror, hash 0092d9d) Libgpg-error ( https://gnupg.org/download/ || git://git.gnupg.org/libgpg-error.git ) 1.18 Libgcrypt ( https://gnupg.org/download/ || git://git.gnupg.org/libgcrypt.git ) 1.6.3 libotr ( https://otr.cypherpunks.ca/ ) 4.1.0-dev (hash 03e3cad) HOW_TO_UPDATE_DEPENDENCIES in theory, it's possible to use MSYS + MSVC to do the following, but I've used GCC for convenience as my MSVC didn't want to :P I've used MSYS2 and its own GCC (used 32bit as reference in hope that it will work for 64bit as well) - ekhtml (clean checkout from Git repo mentioned above) - run MSYS and navigate to ekhtml root ./autogen.sh make - make failed on me, so I had to do ekhtml_mktables myself (make somehow failed to setup include dirs) cd src gcc -g -O2 -I../include ekhtml_mktables.c -o ekhtml_mktables ./ekhtml_mktables > ../include/ekhtml_tables.h - copy .c and .h files from include/ and src/ to our ekhtml - ekhtml_config.h: see CONVERT_CONFIG_H_FROM_GCC_TO_MSVC - Libgpg-error (from tarball) - run MSYS tar xvf libgpg-error-1.18.tar.bz2 cd libgpg-error-1.18 ./configure make - copy .c,.h,.def,.rc files from src/ to our Libgpg-error - copy src/gpg-error-config to our Libgpg-error since we don't build Libgpg-error but include it directly into Libgcrypt, config.h isn't really needed - Libgcrypt (from tarball) - run MSYS from MirOTR directory tar xvf libgcrypt-1.6.3.tar.bz2 cd libgcrypt-1.6.3 export GPG_ERROR_CONFIG=$(pwd)/../Libgpg-error/gpg-error-config ./configure - copy .c and .h files from cipher/ to our Libgcrypt - copy .c and .h files from compat/ to our Libgcrypt - copy mpi/ and random/ to our Libgcrypt - copy .c,.h,.def,.m4 and libgcrypt-config from src/ to our Libgcrypt - cipher/cipher-ccm.c: replace "tmp[blocksize];" with "tmp[16];" as MSVC is quite dumb - cipher/stribog.c: replace "u64 Z[8] = {};" with "u64 Z[8] = {0};" - random/rndw32.c: line 891 "DWORD minimumWorkingSetSize, maximumWorkingSetSize;", replace DWORD with proper SIZE_T to fix 64bit problem (patch submitted to Libgcrypt) - copy config.h to our Libgcrypt custom/ - config.h: see CONVERT_CONFIG_H_FROM_GCC_TO_MSVC - libotr (from Git hash 03e3cad) - run MSYS from checked out Git repository inside MirOTR directory (or change relative paths below) export ACLOCAL_PATH=$ACLOCAL_PATH:$(pwd)/../Libgcrypt/src export LIBGCRYPT_CONFIG=$(pwd)/../Libgcrypt/src/libgcrypt-config ./bootstrap ./configure --with-pic - copy files found in our "read/" folder - copy .c and .h files from src/ to our libotr - src/message.c: fix C99 at line 472 by declaring "now" before "fragment_and_send()" and assign after its call - src/instag.c: fix C99 at line 93 by moving "if (!instf) return gcry_error(GPG_ERR_NO_ERROR);" down a bit - src/proto.c: add snprintf define after last include #define snprintf _snprintf /* Miranda NG modification */ - copy config.h to our libotr custom/ - config.h: see CONVERT_CONFIG_H_FROM_GCC_TO_MSVC - if libotr's protocol changed, adapt our version string in MirOTR's otr.h CONVERT_CONFIG_H_FROM_GCC_TO_MSVC convert from GCC configured config to MSVC settings - define disabling ( simply comment them out or replace with /* #undef */ ) // generic HAVE_INTTYPES_H HAVE_STRINGS_H HAVE_UNISTD_H // needed for Libgcrypt HAVE_BUILTIN_BSWAP32 HAVE_BUILTIN_BSWAP64 HAVE_CLOCK_GETTIME HAVE_GCC_ASM_VOLATILE_MEMORY HAVE_GCC_ATTRIBUTE_ALIGNED HAVE_GCC_INLINE_ASM_AVX HAVE_GCC_INLINE_ASM_AVX2 HAVE_GCC_INLINE_ASM_BMI2 HAVE_GCC_INLINE_ASM_PCLMUL HAVE_GCC_INLINE_ASM_SSSE3 HAVE_GETPAGESIZE HAVE_GETTIMEOFDAY HAVE_VLA - replacing (first line is "find", indented line is "replace by") /* #undef inline */ #define inline __inline - see CUSTOM_CONFIG_H_MODIFICATIONS CUSTOM_CONFIG_H_MODIFICATIONS we do some Miranda NG / MSVC related modifications to *config.h files simply append: /* Miranda NG modifications */ #define GPGRT_ENABLE_ES_MACROS 1 #include #define strdup _strdup #define stricmp _stricmp #define snprintf _snprintf #ifdef _WIN64 # define __x86_64__ 1 #else # define __i386__ 1 #endif