aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLazyHamster <ariman@inbox.ru>2017-10-19 15:19:29 +0300
committerLazyHamster <ariman@inbox.ru>2017-10-19 15:34:39 +0300
commit405d34b4a0af89ccb87000015656572cff19b7da (patch)
treeb8c045ce30d84ca2db940b3b74ec84e1ac9539f7
parent0b75d75f55e8620f1c3f92b5339eed0dd84c4349 (diff)
downloadvcpkg-405d34b4a0af89ccb87000015656572cff19b7da.tar.gz
vcpkg-405d34b4a0af89ccb87000015656572cff19b7da.zip
[GMime] Initial port.
-rw-r--r--ports/gmime/CMakeLists.txt179
-rw-r--r--ports/gmime/CONTROL4
-rw-r--r--ports/gmime/config.h184
-rw-r--r--ports/gmime/gmime.def589
-rw-r--r--ports/gmime/idna.h3
-rw-r--r--ports/gmime/portfile.cmake36
6 files changed, 995 insertions, 0 deletions
diff --git a/ports/gmime/CMakeLists.txt b/ports/gmime/CMakeLists.txt
new file mode 100644
index 000000000..18ec89518
--- /dev/null
+++ b/ports/gmime/CMakeLists.txt
@@ -0,0 +1,179 @@
+cmake_minimum_required(VERSION 3.8)
+
+project(gmime C)
+
+set(GLIB_LIB_SUFFIX 2.0)
+set(GMIME_DLL_SUFFIX 3)
+set(GMIME_LIB_SUFFIX 3.0)
+
+# Find glib
+find_path(GLIB_INCLUDE_DIR glib.h)
+find_library(GLIB_GLIB_LIBRARY glib-${GLIB_LIB_SUFFIX})
+find_library(GLIB_GIO_LIBRARY gio-${GLIB_LIB_SUFFIX})
+find_library(GLIB_GOBJECT_LIBRARY gobject-${GLIB_LIB_SUFFIX})
+set(GLIB_LIBRARIES ${GLIB_GLIB_LIBRARY} ${GLIB_GIO_LIBRARY} ${GLIB_GOBJECT_LIBRARY})
+
+# Find other deps
+find_path(ICONV_INCLUDE_DIR iconv.h)
+find_library(ICONV_LIBRARY NAMES iconv libiconv)
+
+find_library(IDN_LIBRARY NAMES libidn2 libidn)
+
+find_package(zlib REQUIRED)
+
+if(MSVC)
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+ add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE)
+endif()
+
+add_definitions(-DHAVE_CONFIG_H)
+add_definitions(-DG_LOG_DOMAIN="GMime")
+
+# List the source files
+set(LIB_SRC gmime/gmime.c
+ gmime/gmime-application-pkcs7-mime.c
+ gmime/gmime-certificate.c
+ gmime/gmime-charset.c
+ gmime/gmime-common.c
+ gmime/gmime-content-type.c
+ gmime/gmime-crypto-context.c
+ gmime/gmime-data-wrapper.c
+ gmime/gmime-disposition.c
+ gmime/gmime-encodings.c
+ gmime/gmime-events.c
+ gmime/gmime-filter.c
+ gmime/gmime-filter-basic.c
+ gmime/gmime-filter-best.c
+ gmime/gmime-filter-charset.c
+ gmime/gmime-filter-checksum.c
+ gmime/gmime-filter-dos2unix.c
+ gmime/gmime-filter-enriched.c
+ gmime/gmime-filter-from.c
+ gmime/gmime-filter-gzip.c
+ gmime/gmime-filter-html.c
+ gmime/gmime-filter-smtp-data.c
+ gmime/gmime-filter-strip.c
+ gmime/gmime-filter-unix2dos.c
+ gmime/gmime-filter-windows.c
+ gmime/gmime-filter-yenc.c
+ gmime/gmime-format-options.c
+ gmime/gmime-gpg-context.c
+ gmime/gmime-gpgme-utils.c
+ gmime/gmime-header.c
+ gmime/gmime-iconv.c
+ gmime/gmime-iconv-utils.c
+ gmime/gmime-message.c
+ gmime/gmime-message-part.c
+ gmime/gmime-message-partial.c
+ gmime/gmime-multipart.c
+ gmime/gmime-multipart-encrypted.c
+ gmime/gmime-multipart-signed.c
+ gmime/gmime-object.c
+ gmime/gmime-param.c
+ gmime/gmime-parse-utils.c
+ gmime/gmime-parser.c
+ gmime/gmime-parser-options.c
+ gmime/gmime-part.c
+ gmime/gmime-part-iter.c
+ gmime/gmime-pkcs7-context.c
+ gmime/gmime-references.c
+ gmime/gmime-signature.c
+ gmime/gmime-stream.c
+ gmime/gmime-stream-buffer.c
+ gmime/gmime-stream-cat.c
+ gmime/gmime-stream-file.c
+ gmime/gmime-stream-filter.c
+ gmime/gmime-stream-fs.c
+ gmime/gmime-stream-gio.c
+ gmime/gmime-stream-mem.c
+ gmime/gmime-stream-mmap.c
+ gmime/gmime-stream-null.c
+ gmime/gmime-stream-pipe.c
+ gmime/gmime-text-part.c
+ gmime/gmime-utils.c
+ gmime/internet-address.c
+ util/packed.c
+ util/url-scanner.c
+ util/gtrie.c
+)
+
+set (LIB_HEADERS gmime/gmime.h
+ gmime/gmime-version.h
+ gmime/gmime-error.h
+ gmime/gmime-charset.h
+ gmime/gmime-iconv.h
+ gmime/gmime-iconv-utils.h
+ gmime/gmime-param.h
+ gmime/gmime-content-type.h
+ gmime/gmime-disposition.h
+ gmime/gmime-data-wrapper.h
+ gmime/gmime-object.h
+ gmime/gmime-part.h
+ gmime/gmime-text-part.h
+ gmime/gmime-part-iter.h
+ gmime/gmime-application-pkcs7-mime.h
+ gmime/gmime-multipart.h
+ gmime/gmime-multipart-encrypted.h
+ gmime/gmime-multipart-signed.h
+ gmime/gmime-message.h
+ gmime/gmime-message-part.h
+ gmime/gmime-message-partial.h
+ gmime/internet-address.h
+ gmime/gmime-encodings.h
+ gmime/gmime-format-options.h
+ gmime/gmime-parser-options.h
+ gmime/gmime-parser.h
+ gmime/gmime-utils.h
+ gmime/gmime-references.h
+ gmime/gmime-stream.h
+ gmime/gmime-stream-buffer.h
+ gmime/gmime-stream-cat.h
+ gmime/gmime-stream-file.h
+ gmime/gmime-stream-filter.h
+ gmime/gmime-stream-fs.h
+ gmime/gmime-stream-gio.h
+ gmime/gmime-stream-mem.h
+ gmime/gmime-stream-mmap.h
+ gmime/gmime-stream-null.h
+ gmime/gmime-stream-pipe.h
+ gmime/gmime-filter.h
+ gmime/gmime-filter-basic.h
+ gmime/gmime-filter-best.h
+ gmime/gmime-filter-charset.h
+ gmime/gmime-filter-checksum.h
+ gmime/gmime-filter-dos2unix.h
+ gmime/gmime-filter-enriched.h
+ gmime/gmime-filter-from.h
+ gmime/gmime-filter-gzip.h
+ gmime/gmime-filter-html.h
+ gmime/gmime-filter-smtp-data.h
+ gmime/gmime-filter-strip.h
+ gmime/gmime-filter-unix2dos.h
+ gmime/gmime-filter-windows.h
+ gmime/gmime-filter-yenc.h
+ gmime/gmime-crypto-context.h
+ gmime/gmime-pkcs7-context.h
+ gmime/gmime-gpg-context.h
+)
+
+if(MSVC AND BUILD_SHARED_LIBS)
+ set(MSVC_SRC gmime.def)
+endif()
+
+add_library(${PROJECT_NAME} ${LIB_SRC} ${MSVC_SRC})
+
+set_target_properties(${PROJECT_NAME} PROPERTIES
+ OUTPUT_NAME ${PROJECT_NAME}-${GMIME_DLL_SUFFIX}
+ ARCHIVE_OUTPUT_NAME ${PROJECT_NAME}-${GMIME_LIB_SUFFIX}
+)
+
+target_include_directories(${PROJECT_NAME} PRIVATE . ./util ${GLIB_INCLUDE_DIR} ${ICONV_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
+target_link_libraries(${PROJECT_NAME} PRIVATE ${GLIB_LIBRARIES} ${ICONV_LIBRARY} ${ZLIB_LIBRARIES} ${IDN_LIBRARY})
+target_link_libraries(${PROJECT_NAME} PRIVATE Ws2_32.lib)
+
+install(TARGETS ${PROJECT_NAME}
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib)
+
+install(FILES ${LIB_HEADERS} DESTINATION include/gmime)
diff --git a/ports/gmime/CONTROL b/ports/gmime/CONTROL
new file mode 100644
index 000000000..215df5995
--- /dev/null
+++ b/ports/gmime/CONTROL
@@ -0,0 +1,4 @@
+Source: gmime
+Version: 3.0.2
+Build-Depends: zlib, glib, libiconv, libidn2
+Description: GMime is a C/C++ library which may be used for the creation and parsing of messages using the Multipurpose Internet Mail Extension (MIME).
diff --git a/ports/gmime/config.h b/ports/gmime/config.h
new file mode 100644
index 000000000..578223e20
--- /dev/null
+++ b/ports/gmime/config.h
@@ -0,0 +1,184 @@
+/* config.h. Generated from config.h.in by configure. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if GMime should enable GpgME PGP and S/MIME support. */
+/* #undef ENABLE_CRYPTO */
+
+/* Define if GMime should enable warning output. */
+/* #undef ENABLE_WARNINGS */
+
+/* Define to the GMime version */
+#define GMIME_VERSION "3.0.2"
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have the `fsync' function. */
+/* #undef HAVE_FSYNC */
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if you have the `getdomainname' function. */
+/* #undef HAVE_GETDOMAINNAME */
+
+/* Define to 1 if you have the `gethostname' function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the <getopt.h> header with the GNU `getopt_long'
+ function. */
+#define HAVE_GETOPT_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 to use auto-detected iconv-friendly charset names. */
+/* #undef HAVE_ICONV_DETECT_H */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+/* #undef HAVE_MMAP */
+
+/* Define to 1 if you have the `msync' function. */
+/* #undef HAVE_MSYNC */
+
+/* Define to 1 if you have the `munmap' function. */
+/* #undef HAVE_MUNMAP */
+
+/* Define to 1 if you have the <netdb.h> header file. */
+/* #undef HAVE_NETDB_H */
+
+/* Define to 1 if you have the `poll' function. */
+/* #undef HAVE_POLL */
+
+/* Define to 1 if you have the <poll.h> header file. */
+/* #undef HAVE_POLL_H */
+
+/* Define to 1 if you have the `select' function. */
+/* #undef HAVE_SELECT */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #undef HAVE_STRINGS_H */
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+/* #undef HAVE_SYS_MMAN_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+/* #undef HAVE_SYS_PARAM_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define if struct utsname has a domainname member */
+/* #undef HAVE_UTSNAME_DOMAINNAME */
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#define HAVE_WINSOCK2_H 1
+
+/* Define to 1 if GNU Libidn should be used. */
+#define LIBIDN 1
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ".libs/"
+
+/* Define with a value if your <sys/param.h> does not define MAXHOSTNAMELEN */
+/* #undef MAXHOSTNAMELEN */
+
+/* Define to 0 if your system does not have the O_LARGEFILE flag */
+/* #undef O_LARGEFILE */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "https://github.com/jstedfast/gmime/issues"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "gmime"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "gmime 3.0.2"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gmime"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "3.0.2"
+
+/* The size of `off_t', as computed by sizeof. */
+#define SIZEOF_OFF_T 8
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 8
+
+/* The size of `ssize_t', as computed by sizeof. */
+#define SIZEOF_SSIZE_T 8
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Using GNU libiconv */
+/* #undef USE_LIBICONV_GNU */
+
+/* Using a native implementation of iconv in a separate library */
+#define USE_LIBICONV_NATIVE 1
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#define inline __inline
+#endif
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef mode_t */
+
+/* Define to `unsigned long int' if <poll.h> does not define. */
+/* #undef nfds_t */
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define ssize_t intptr_t
+
+#ifdef _MSC_VER
+#pragma warning(disable: 4018)
+#pragma warning(disable: 4101)
+#endif
diff --git a/ports/gmime/gmime.def b/ports/gmime/gmime.def
new file mode 100644
index 000000000..463dda27e
--- /dev/null
+++ b/ports/gmime/gmime.def
@@ -0,0 +1,589 @@
+EXPORTS
+
+g_mime_application_pkcs7_mime_decrypt
+g_mime_application_pkcs7_mime_encrypt
+g_mime_application_pkcs7_mime_get_smime_type
+g_mime_application_pkcs7_mime_get_type
+g_mime_application_pkcs7_mime_new
+g_mime_application_pkcs7_mime_sign
+g_mime_application_pkcs7_mime_verify
+g_mime_certificate_get_created
+g_mime_certificate_get_digest_algo
+g_mime_certificate_get_email
+g_mime_certificate_get_expires
+g_mime_certificate_get_fingerprint
+g_mime_certificate_get_issuer_name
+g_mime_certificate_get_issuer_serial
+g_mime_certificate_get_key_id
+g_mime_certificate_get_name
+g_mime_certificate_get_pubkey_algo
+g_mime_certificate_get_trust
+g_mime_certificate_get_type
+g_mime_certificate_list_add
+g_mime_certificate_list_clear
+g_mime_certificate_list_contains
+g_mime_certificate_list_get_certificate
+g_mime_certificate_list_get_type
+g_mime_certificate_list_index_of
+g_mime_certificate_list_insert
+g_mime_certificate_list_length
+g_mime_certificate_list_new
+g_mime_certificate_list_remove
+g_mime_certificate_list_remove_at
+g_mime_certificate_list_set_certificate
+g_mime_certificate_new
+g_mime_certificate_set_created
+g_mime_certificate_set_digest_algo
+g_mime_certificate_set_email
+g_mime_certificate_set_expires
+g_mime_certificate_set_fingerprint
+g_mime_certificate_set_issuer_name
+g_mime_certificate_set_issuer_serial
+g_mime_certificate_set_key_id
+g_mime_certificate_set_name
+g_mime_certificate_set_pubkey_algo
+g_mime_certificate_set_trust
+g_mime_charset_best
+g_mime_charset_best_name
+g_mime_charset_can_encode
+g_mime_charset_canon_name
+g_mime_charset_iconv_name
+g_mime_charset_init
+g_mime_charset_iso_to_windows
+g_mime_charset_language
+g_mime_charset_locale_name
+g_mime_charset_map_init
+g_mime_charset_map_shutdown
+g_mime_charset_name
+g_mime_charset_step
+g_mime_check_version
+g_mime_content_disposition_encode
+g_mime_content_disposition_get_disposition
+g_mime_content_disposition_get_parameter
+g_mime_content_disposition_get_parameters
+g_mime_content_disposition_get_type
+g_mime_content_disposition_is_attachment
+g_mime_content_disposition_new
+g_mime_content_disposition_parse
+g_mime_content_disposition_set_disposition
+g_mime_content_disposition_set_parameter
+g_mime_content_encoding_from_string
+g_mime_content_encoding_to_string
+g_mime_content_type_encode
+g_mime_content_type_get_media_subtype
+g_mime_content_type_get_media_type
+g_mime_content_type_get_mime_type
+g_mime_content_type_get_parameter
+g_mime_content_type_get_parameters
+g_mime_content_type_get_type
+g_mime_content_type_is_type
+g_mime_content_type_new
+g_mime_content_type_parse
+g_mime_content_type_set_media_subtype
+g_mime_content_type_set_media_type
+g_mime_content_type_set_parameter
+g_mime_crypto_context_decrypt
+g_mime_crypto_context_digest_id
+g_mime_crypto_context_digest_name
+g_mime_crypto_context_encrypt
+g_mime_crypto_context_export_keys
+g_mime_crypto_context_get_encryption_protocol
+g_mime_crypto_context_get_key_exchange_protocol
+g_mime_crypto_context_get_request_password
+g_mime_crypto_context_get_signature_protocol
+g_mime_crypto_context_get_type
+g_mime_crypto_context_import_keys
+g_mime_crypto_context_new
+g_mime_crypto_context_register
+g_mime_crypto_context_set_request_password
+g_mime_crypto_context_shutdown
+g_mime_crypto_context_sign
+g_mime_crypto_context_verify
+g_mime_data_wrapper_get_encoding
+g_mime_data_wrapper_get_stream
+g_mime_data_wrapper_get_type
+g_mime_data_wrapper_new
+g_mime_data_wrapper_new_with_stream
+g_mime_data_wrapper_set_encoding
+g_mime_data_wrapper_set_stream
+g_mime_data_wrapper_write_to_stream
+g_mime_decrypt_result_get_cipher
+g_mime_decrypt_result_get_mdc
+g_mime_decrypt_result_get_recipients
+g_mime_decrypt_result_get_session_key
+g_mime_decrypt_result_get_signatures
+g_mime_decrypt_result_get_type
+g_mime_decrypt_result_new
+g_mime_decrypt_result_set_cipher
+g_mime_decrypt_result_set_mdc
+g_mime_decrypt_result_set_recipients
+g_mime_decrypt_result_set_session_key
+g_mime_decrypt_result_set_signatures
+g_mime_encoding_base64_decode_step
+g_mime_encoding_base64_encode_close
+g_mime_encoding_base64_encode_step
+g_mime_encoding_flush
+g_mime_encoding_init_decode
+g_mime_encoding_init_encode
+g_mime_encoding_outlen
+g_mime_encoding_quoted_decode_step
+g_mime_encoding_quoted_encode_close
+g_mime_encoding_quoted_encode_step
+g_mime_encoding_reset
+g_mime_encoding_step
+g_mime_encoding_uudecode_step
+g_mime_encoding_uuencode_close
+g_mime_encoding_uuencode_step
+g_mime_filter_backup
+g_mime_filter_basic_get_type
+g_mime_filter_basic_new
+g_mime_filter_best_charset
+g_mime_filter_best_encoding
+g_mime_filter_best_get_type
+g_mime_filter_best_new
+g_mime_filter_charset_get_type
+g_mime_filter_charset_new
+g_mime_filter_checksum_get_digest
+g_mime_filter_checksum_get_type
+g_mime_filter_checksum_new
+g_mime_filter_complete
+g_mime_filter_copy
+g_mime_filter_dos2unix_get_type
+g_mime_filter_dos2unix_new
+g_mime_filter_enriched_get_type
+g_mime_filter_enriched_new
+g_mime_filter_filter
+g_mime_filter_from_get_type
+g_mime_filter_from_new
+g_mime_filter_get_type
+g_mime_filter_gzip_get_type
+g_mime_filter_gzip_new
+g_mime_filter_html_get_type
+g_mime_filter_html_new
+g_mime_filter_reset
+g_mime_filter_set_size
+g_mime_filter_smtp_data_get_type
+g_mime_filter_smtp_data_new
+g_mime_filter_strip_get_type
+g_mime_filter_strip_new
+g_mime_filter_unix2dos_get_type
+g_mime_filter_unix2dos_new
+g_mime_filter_windows_get_type
+g_mime_filter_windows_is_windows_charset
+g_mime_filter_windows_new
+g_mime_filter_windows_real_charset
+g_mime_filter_yenc_get_crc
+g_mime_filter_yenc_get_pcrc
+g_mime_filter_yenc_get_type
+g_mime_filter_yenc_new
+g_mime_filter_yenc_set_crc
+g_mime_filter_yenc_set_state
+g_mime_format_options_add_hidden_header
+g_mime_format_options_clear_hidden_headers
+g_mime_format_options_clone
+g_mime_format_options_create_newline_filter
+g_mime_format_options_free
+g_mime_format_options_get_default
+g_mime_format_options_get_newline
+g_mime_format_options_get_newline_format
+g_mime_format_options_get_param_encoding_method
+g_mime_format_options_get_type
+g_mime_format_options_is_hidden_header
+g_mime_format_options_new
+g_mime_format_options_remove_hidden_header
+g_mime_format_options_set_newline_format
+g_mime_format_options_set_param_encoding_method
+g_mime_gpg_context_get_type
+g_mime_gpg_context_new
+g_mime_header_format_addrlist
+g_mime_header_format_content_disposition
+g_mime_header_format_content_type
+g_mime_header_format_default
+g_mime_header_format_message_id
+g_mime_header_format_received
+g_mime_header_format_references
+g_mime_header_get_name
+g_mime_header_get_offset
+g_mime_header_get_raw_name
+g_mime_header_get_raw_value
+g_mime_header_get_type
+g_mime_header_get_value
+g_mime_header_list_append
+g_mime_header_list_clear
+g_mime_header_list_contains
+g_mime_header_list_get_count
+g_mime_header_list_get_header
+g_mime_header_list_get_header_at
+g_mime_header_list_get_type
+g_mime_header_list_new
+g_mime_header_list_prepend
+g_mime_header_list_remove
+g_mime_header_list_remove_at
+g_mime_header_list_set
+g_mime_header_list_to_string
+g_mime_header_list_write_to_stream
+g_mime_header_set_raw_value
+g_mime_header_set_value
+g_mime_header_write_to_stream
+g_mime_iconv_close
+g_mime_iconv_locale_to_utf8
+g_mime_iconv_locale_to_utf8_length
+g_mime_iconv_open
+g_mime_iconv_strdup
+g_mime_iconv_strndup
+g_mime_iconv_utf8_to_locale
+g_mime_iconv_utf8_to_locale_length
+g_mime_init
+g_mime_locale_charset
+g_mime_locale_language
+g_mime_message_add_mailbox
+g_mime_message_foreach
+g_mime_message_get_addresses
+g_mime_message_get_all_recipients
+g_mime_message_get_bcc
+g_mime_message_get_body
+g_mime_message_get_cc
+g_mime_message_get_date
+g_mime_message_get_from
+g_mime_message_get_message_id
+g_mime_message_get_mime_part
+g_mime_message_get_reply_to
+g_mime_message_get_sender
+g_mime_message_get_subject
+g_mime_message_get_to
+g_mime_message_get_type
+g_mime_message_new
+g_mime_message_part_get_message
+g_mime_message_part_get_type
+g_mime_message_part_new
+g_mime_message_part_new_with_message
+g_mime_message_part_set_message
+g_mime_message_partial_get_id
+g_mime_message_partial_get_number
+g_mime_message_partial_get_total
+g_mime_message_partial_get_type
+g_mime_message_partial_new
+g_mime_message_partial_reconstruct_message
+g_mime_message_partial_split_message
+g_mime_message_set_date
+g_mime_message_set_message_id
+g_mime_message_set_mime_part
+g_mime_message_set_subject
+g_mime_multipart_add
+g_mime_multipart_clear
+g_mime_multipart_contains
+g_mime_multipart_encrypted_decrypt
+g_mime_multipart_encrypted_encrypt
+g_mime_multipart_encrypted_get_type
+g_mime_multipart_encrypted_new
+g_mime_multipart_foreach
+g_mime_multipart_get_boundary
+g_mime_multipart_get_count
+g_mime_multipart_get_epilogue
+g_mime_multipart_get_part
+g_mime_multipart_get_prologue
+g_mime_multipart_get_subpart_from_content_id
+g_mime_multipart_get_type
+g_mime_multipart_index_of
+g_mime_multipart_insert
+g_mime_multipart_new
+g_mime_multipart_new_with_subtype
+g_mime_multipart_remove
+g_mime_multipart_remove_at
+g_mime_multipart_replace
+g_mime_multipart_set_boundary
+g_mime_multipart_set_epilogue
+g_mime_multipart_set_prologue
+g_mime_multipart_signed_get_type
+g_mime_multipart_signed_new
+g_mime_multipart_signed_sign
+g_mime_multipart_signed_verify
+g_mime_object_append_header
+g_mime_object_encode
+g_mime_object_get_content_disposition
+g_mime_object_get_content_disposition_parameter
+g_mime_object_get_content_id
+g_mime_object_get_content_type
+g_mime_object_get_content_type_parameter
+g_mime_object_get_disposition
+g_mime_object_get_header
+g_mime_object_get_header_list
+g_mime_object_get_headers
+g_mime_object_get_type
+g_mime_object_new
+g_mime_object_new_type
+g_mime_object_prepend_header
+g_mime_object_register_type
+g_mime_object_remove_header
+g_mime_object_set_content_disposition
+g_mime_object_set_content_disposition_parameter
+g_mime_object_set_content_id
+g_mime_object_set_content_type
+g_mime_object_set_content_type_parameter
+g_mime_object_set_disposition
+g_mime_object_set_header
+g_mime_object_to_string
+g_mime_object_write_to_stream
+g_mime_param_get_charset
+g_mime_param_get_encoding_method
+g_mime_param_get_lang
+g_mime_param_get_name
+g_mime_param_get_type
+g_mime_param_get_value
+g_mime_param_list_clear
+g_mime_param_list_encode
+g_mime_param_list_get_parameter
+g_mime_param_list_get_parameter_at
+g_mime_param_list_get_type
+g_mime_param_list_length
+g_mime_param_list_new
+g_mime_param_list_parse
+g_mime_param_list_remove
+g_mime_param_list_remove_at
+g_mime_param_list_set_parameter
+g_mime_param_set_charset
+g_mime_param_set_encoding_method
+g_mime_param_set_lang
+g_mime_param_set_value
+g_mime_parser_construct_message
+g_mime_parser_construct_part
+g_mime_parser_eos
+g_mime_parser_get_format
+g_mime_parser_get_headers_begin
+g_mime_parser_get_headers_end
+g_mime_parser_get_mbox_marker
+g_mime_parser_get_mbox_marker_offset
+g_mime_parser_get_persist_stream
+g_mime_parser_get_respect_content_length
+g_mime_parser_get_type
+g_mime_parser_init_with_stream
+g_mime_parser_new
+g_mime_parser_new_with_stream
+g_mime_parser_options_clone
+g_mime_parser_options_free
+g_mime_parser_options_get_address_compliance_mode
+g_mime_parser_options_get_allow_addresses_without_domain
+g_mime_parser_options_get_default
+g_mime_parser_options_get_fallback_charsets
+g_mime_parser_options_get_parameter_compliance_mode
+g_mime_parser_options_get_rfc2047_compliance_mode
+g_mime_parser_options_get_type
+g_mime_parser_options_new
+g_mime_parser_options_set_address_compliance_mode
+g_mime_parser_options_set_allow_addresses_without_domain
+g_mime_parser_options_set_fallback_charsets
+g_mime_parser_options_set_parameter_compliance_mode
+g_mime_parser_options_set_rfc2047_compliance_mode
+g_mime_parser_set_format
+g_mime_parser_set_header_regex
+g_mime_parser_set_persist_stream
+g_mime_parser_set_respect_content_length
+g_mime_parser_tell
+g_mime_part_get_best_content_encoding
+g_mime_part_get_content
+g_mime_part_get_content_description
+g_mime_part_get_content_encoding
+g_mime_part_get_content_id
+g_mime_part_get_content_location
+g_mime_part_get_content_md5
+g_mime_part_get_filename
+g_mime_part_get_openpgp_data
+g_mime_part_get_type
+g_mime_part_is_attachment
+g_mime_part_iter_clone
+g_mime_part_iter_free
+g_mime_part_iter_get_current
+g_mime_part_iter_get_parent
+g_mime_part_iter_get_path
+g_mime_part_iter_get_toplevel
+g_mime_part_iter_get_type
+g_mime_part_iter_is_valid
+g_mime_part_iter_jump_to
+g_mime_part_iter_new
+g_mime_part_iter_next
+g_mime_part_iter_prev
+g_mime_part_iter_remove
+g_mime_part_iter_replace
+g_mime_part_iter_reset
+g_mime_part_new
+g_mime_part_new_with_type
+g_mime_part_openpgp_decrypt
+g_mime_part_openpgp_encrypt
+g_mime_part_openpgp_sign
+g_mime_part_openpgp_verify
+g_mime_part_set_content
+g_mime_part_set_content_description
+g_mime_part_set_content_encoding
+g_mime_part_set_content_id
+g_mime_part_set_content_location
+g_mime_part_set_content_md5
+g_mime_part_set_filename
+g_mime_part_set_openpgp_data
+g_mime_part_verify_content_md5
+g_mime_pkcs7_context_get_type
+g_mime_pkcs7_context_new
+g_mime_references_append
+g_mime_references_clear
+g_mime_references_copy
+g_mime_references_free
+g_mime_references_get_message_id
+g_mime_references_get_type
+g_mime_references_length
+g_mime_references_new
+g_mime_references_parse
+g_mime_references_set_message_id
+g_mime_shutdown
+g_mime_signature_get_certificate
+g_mime_signature_get_created
+g_mime_signature_get_expires
+g_mime_signature_get_status
+g_mime_signature_get_type
+g_mime_signature_list_add
+g_mime_signature_list_clear
+g_mime_signature_list_contains
+g_mime_signature_list_get_signature
+g_mime_signature_list_get_type
+g_mime_signature_list_index_of
+g_mime_signature_list_insert
+g_mime_signature_list_length
+g_mime_signature_list_new
+g_mime_signature_list_remove
+g_mime_signature_list_remove_at
+g_mime_signature_list_set_signature
+g_mime_signature_new
+g_mime_signature_set_certificate
+g_mime_signature_set_created
+g_mime_signature_set_expires
+g_mime_signature_set_status
+g_mime_stream_buffer_get_type
+g_mime_stream_buffer_gets
+g_mime_stream_buffer_new
+g_mime_stream_buffer_readln
+g_mime_stream_cat_add_source
+g_mime_stream_cat_get_type
+g_mime_stream_cat_new
+g_mime_stream_close
+g_mime_stream_construct
+g_mime_stream_eos
+g_mime_stream_file_get_owner
+g_mime_stream_file_get_type
+g_mime_stream_file_new
+g_mime_stream_file_new_with_bounds
+g_mime_stream_file_open
+g_mime_stream_file_set_owner
+g_mime_stream_filter_add
+g_mime_stream_filter_get_owner
+g_mime_stream_filter_get_type
+g_mime_stream_filter_new
+g_mime_stream_filter_remove
+g_mime_stream_filter_set_owner
+g_mime_stream_flush
+g_mime_stream_fs_get_owner
+g_mime_stream_fs_get_type
+g_mime_stream_fs_new
+g_mime_stream_fs_new_with_bounds
+g_mime_stream_fs_open
+g_mime_stream_fs_set_owner
+g_mime_stream_get_type
+g_mime_stream_gio_get_owner
+g_mime_stream_gio_get_type
+g_mime_stream_gio_new
+g_mime_stream_gio_new_with_bounds
+g_mime_stream_gio_set_owner
+g_mime_stream_length
+g_mime_stream_mem_get_byte_array
+g_mime_stream_mem_get_owner
+g_mime_stream_mem_get_type
+g_mime_stream_mem_new
+g_mime_stream_mem_new_with_buffer
+g_mime_stream_mem_new_with_byte_array
+g_mime_stream_mem_set_byte_array
+g_mime_stream_mem_set_owner
+g_mime_stream_mmap_get_type
+g_mime_stream_mmap_new
+g_mime_stream_mmap_new_with_bounds
+g_mime_stream_null_count_newlines
+g_mime_stream_null_get_count_newlines
+g_mime_stream_null_get_type
+g_mime_stream_null_new
+g_mime_stream_pipe_get_owner
+g_mime_stream_pipe_get_type
+g_mime_stream_pipe_new
+g_mime_stream_pipe_set_owner
+g_mime_stream_printf
+g_mime_stream_read
+g_mime_stream_reset
+g_mime_stream_seek
+g_mime_stream_set_bounds
+g_mime_stream_substream
+g_mime_stream_tell
+g_mime_stream_write
+g_mime_stream_write_string
+g_mime_stream_write_to_stream
+g_mime_stream_writev
+g_mime_text_part_get_charset
+g_mime_text_part_get_text
+g_mime_text_part_get_type
+g_mime_text_part_new
+g_mime_text_part_new_with_subtype
+g_mime_text_part_set_charset
+g_mime_text_part_set_text
+g_mime_utils_best_encoding
+g_mime_utils_decode_8bit
+g_mime_utils_decode_message_id
+g_mime_utils_generate_message_id
+g_mime_utils_header_decode_date
+g_mime_utils_header_decode_phrase
+g_mime_utils_header_decode_text
+g_mime_utils_header_encode_phrase
+g_mime_utils_header_encode_text
+g_mime_utils_header_format_date
+g_mime_utils_header_printf
+g_mime_utils_quote_string
+g_mime_utils_structured_header_fold
+g_mime_utils_text_is_8bit
+g_mime_utils_unquote_string
+g_mime_utils_unstructured_header_fold
+g_mime_ydecode_step
+g_mime_yencode_close
+g_mime_yencode_step
+gmime_binary_age
+gmime_error_quark
+gmime_gpgme_error_quark
+gmime_interface_age
+gmime_major_version
+gmime_micro_version
+gmime_minor_version
+internet_address_get_charset
+internet_address_get_name
+internet_address_get_type
+internet_address_group_add_member
+internet_address_group_get_members
+internet_address_group_get_type
+internet_address_group_new
+internet_address_group_set_members
+internet_address_list_add
+internet_address_list_append
+internet_address_list_clear
+internet_address_list_contains
+internet_address_list_encode
+internet_address_list_get_address
+internet_address_list_get_type
+internet_address_list_index_of
+internet_address_list_insert
+internet_address_list_length
+internet_address_list_new
+internet_address_list_parse
+internet_address_list_prepend
+internet_address_list_remove
+internet_address_list_remove_at
+internet_address_list_set_address
+internet_address_list_to_string
+internet_address_mailbox_get_addr
+internet_address_mailbox_get_idn_addr
+internet_address_mailbox_get_type
+internet_address_mailbox_new
+internet_address_mailbox_set_addr
+internet_address_set_charset
+internet_address_set_name
+internet_address_to_string
diff --git a/ports/gmime/idna.h b/ports/gmime/idna.h
new file mode 100644
index 000000000..3313cdbc7
--- /dev/null
+++ b/ports/gmime/idna.h
@@ -0,0 +1,3 @@
+// Redirects header from libidn to libidn2
+// Created to avoid sources patching
+#include <idn2.h>
diff --git a/ports/gmime/portfile.cmake b/ports/gmime/portfile.cmake
new file mode 100644
index 000000000..98b3a104f
--- /dev/null
+++ b/ports/gmime/portfile.cmake
@@ -0,0 +1,36 @@
+include(vcpkg_common_functions)
+
+set(LIB_NAME gmime)
+set(LIB_VERSION 3.0.2)
+
+set(LIB_FILENAME ${LIB_NAME}-${LIB_VERSION}.tar.xz)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/${LIB_NAME}-${LIB_VERSION})
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://download.gnome.org/sources/gmime/3.0/${LIB_FILENAME}"
+ FILENAME "${LIB_FILENAME}"
+ SHA512 246f489c168ce7e04fab664b7e9ae7772ae52f0063fb0eac9153460d84fa5d9712457d81fbd1bdcdadb7e03007cf71ed3bad5287f1639214f54167427c9209ca
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+# We can use file supplied with original sources
+configure_file(${SOURCE_PATH}/build/vs2010/unistd.h ${SOURCE_PATH} COPYONLY)
+
+configure_file(${CMAKE_CURRENT_LIST_DIR}/config.h ${SOURCE_PATH} COPYONLY)
+configure_file(${CMAKE_CURRENT_LIST_DIR}/idna.h ${SOURCE_PATH} COPYONLY)
+configure_file(${CMAKE_CURRENT_LIST_DIR}/gmime.def ${SOURCE_PATH} COPYONLY)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+)
+
+vcpkg_install_cmake()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# License and man
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${LIB_NAME} RENAME copyright)
+
+vcpkg_copy_pdbs()