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/ ) 1.18 Libgcrypt ( https://gnupg.org/download/ ) 1.6.3 libotr ( https://otr.cypherpunks.ca/ ) 3.2.0 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 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 files from src/ to our Libgcrypt - copy config.h to our Libgcrypt custom/ - 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};" - config.h: see CONVERT_CONFIG_H_FROM_GCC_TO_MSVC - libotr (from Git) - tbd 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