diff --git a/CMakeLists.txt b/CMakeLists.txt index 9aa0283b..7b51f8cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -652,25 +652,23 @@ OPTION( ON ) -OPTION( - VMIME_TLS_SUPPORT_LIB_IS_GNUTLS - "Use GNU TLS library for SSL/TLS support" - ON +SET( + VMIME_TLS_SUPPORT_LIB + "gnutls" + CACHE + STRING + "Library to use for SSL/TLS conversion" +) +SET_PROPERTY( + CACHE + VMIME_TLS_SUPPORT_LIB + PROPERTY STRINGS gnutls openssl ) -OPTION( - VMIME_TLS_SUPPORT_LIB_IS_OPENSSL - "Use OpenSSL library for SSL/TLS support" - OFF -) IF(VMIME_HAVE_TLS_SUPPORT) - IF(VMIME_TLS_SUPPORT_LIB_IS_GNUTLS AND VMIME_TLS_SUPPORT_LIB_IS_OPENSSL) - MESSAGE(FATAL_ERROR "Options VMIME_TLS_SUPPORT_LIB_IS_GNUTLS and VMIME_TLS_SUPPORT_LIB_IS_OPENSSL are mutually exclusive (select one or the other, but not both!)") - ENDIF() - - IF(VMIME_TLS_SUPPORT_LIB_IS_GNUTLS) + IF(VMIME_TLS_SUPPORT_LIB STREQUAL "gnutls") INCLUDE_DIRECTORIES( ${INCLUDE_DIRECTORIES} @@ -692,7 +690,10 @@ IF(VMIME_HAVE_TLS_SUPPORT) SET(VMIME_PKGCONFIG_REQUIRES "${VMIME_PKGCONFIG_REQUIRES} gnutls") - ELSEIF(VMIME_TLS_SUPPORT_LIB_IS_OPENSSL) + SET(VMIME_TLS_SUPPORT_LIB_IS_GNUTLS "ON") + SET(VMIME_TLS_SUPPORT_LIB_IS_OPENSSL "OFF") + + ELSEIF(VMIME_TLS_SUPPORT_LIB STREQUAL "openssl") INCLUDE_DIRECTORIES( ${INCLUDE_DIRECTORIES} @@ -709,6 +710,9 @@ IF(VMIME_HAVE_TLS_SUPPORT) SET(VMIME_PKGCONFIG_REQUIRES "${VMIME_PKGCONFIG_REQUIRES} openssl") + SET(VMIME_TLS_SUPPORT_LIB_IS_GNUTLS "OFF") + SET(VMIME_TLS_SUPPORT_LIB_IS_OPENSSL "ON") + ELSE() MESSAGE(FATAL_ERROR "TLS support is enabled, but no TLS/SSL library was selected/found") @@ -727,44 +731,28 @@ INCLUDE(cmake/FindICU.cmake) FIND_PACKAGE(ICU QUIET) IF(WIN32) - SET(VMIME_CHARSETCONV_LIB_IS_ICONV_DEFAULT "OFF") - SET(VMIME_CHARSETCONV_LIB_IS_ICU_DEFAULT "OFF") - SET(VMIME_CHARSETCONV_LIB_IS_WIN_DEFAULT "ON") -ELSEIF(ICONV_FOUND) - SET(VMIME_CHARSETCONV_LIB_IS_ICONV_DEFAULT "ON") - SET(VMIME_CHARSETCONV_LIB_IS_ICU_DEFAULT "OFF") - SET(VMIME_CHARSETCONV_LIB_IS_WIN_DEFAULT "OFF") + SET(VMIME_CHARSETCONV_LIB_DETECTED "win") ELSEIF(ICU_LIBRARIES) - SET(VMIME_CHARSETCONV_LIB_IS_ICONV_DEFAULT "OFF") - SET(VMIME_CHARSETCONV_LIB_IS_ICU_DEFAULT "ON") - SET(VMIME_CHARSETCONV_LIB_IS_WIN_DEFAULT "OFF") + SET(VMIME_CHARSETCONV_LIB_DETECTED "icu") +ELSEIF(ICONV_FOUND) + SET(VMIME_CHARSETCONV_LIB_DETECTED "iconv") ENDIF() -OPTION( - VMIME_CHARSETCONV_LIB_IS_ICONV - "Use iconv library for charset conversion" - ${VMIME_CHARSETCONV_LIB_IS_ICONV_DEFAULT} +SET( + VMIME_CHARSETCONV_LIB + "${VMIME_CHARSETCONV_LIB_DETECTED}" + CACHE + STRING + "Library to use for charset conversion" +) +SET_PROPERTY( + CACHE + VMIME_CHARSETCONV_LIB + PROPERTY STRINGS win iconv icu ) -OPTION( - VMIME_CHARSETCONV_LIB_IS_ICU - "Use ICU library for charset conversion" - ${VMIME_CHARSETCONV_LIB_IS_ICU_DEFAULT} -) -OPTION( - VMIME_CHARSETCONV_LIB_IS_WIN - "Use Windows API for charset conversion" - ${VMIME_CHARSETCONV_LIB_IS_WIN_DEFAULT} -) - -IF((VMIME_CHARSETCONV_LIB_IS_ICONV AND VMIME_CHARSETCONV_LIB_IS_ICU) OR - (VMIME_CHARSETCONV_LIB_IS_ICONV AND VMIME_CHARSETCONV_LIB_IS_WIN) OR - (VMIME_CHARSETCONV_LIB_IS_ICU AND VMIME_CHARSETCONV_LIB_IS_WIN)) - MESSAGE(FATAL_ERROR "Options VMIME_CHARSETCONV_LIB_IS_ICONV, VMIME_CHARSETCONV_LIB_IS_ICU and VMIME_CHARSETCONV_LIB_IS_WIN are mutually exclusive (select only one of them, but not all!)") -ENDIF() - -IF(VMIME_CHARSETCONV_LIB_IS_ICONV) +IF(VMIME_CHARSETCONV_LIB STREQUAL "iconv") INCLUDE_DIRECTORIES( ${INCLUDE_DIRECTORIES} @@ -782,7 +770,11 @@ IF(VMIME_CHARSETCONV_LIB_IS_ICONV) SET(VMIME_PKGCONFIG_LIBS "${VMIME_PKGCONFIG_LIBS} ${ICONV_LIBRARIES}") SET(VMIME_PKGCONFIG_CFLAGS "${VMIME_PKGCONFIG_CFLAGS} -I${ICONV_INCLUDE_DIR}") -ELSEIF(VMIME_CHARSETCONV_LIB_IS_ICU) + SET(VMIME_CHARSETCONV_LIB_IS_ICONV "ON") + SET(VMIME_CHARSETCONV_LIB_IS_ICU "OFF") + SET(VMIME_CHARSETCONV_LIB_IS_WIN "OFF") + +ELSEIF(VMIME_CHARSETCONV_LIB STREQUAL "icu") INCLUDE_DIRECTORIES( ${INCLUDE_DIRECTORIES} @@ -800,9 +792,15 @@ ELSEIF(VMIME_CHARSETCONV_LIB_IS_ICU) SET(VMIME_PKGCONFIG_LIBS "${VMIME_PKGCONFIG_LIBS} ${ICU_LIBRARIES}") SET(VMIME_PKGCONFIG_CFLAGS "${VMIME_PKGCONFIG_CFLAGS} -I${ICU_INCLUDE_DIRS}") -ELSEIF(VMIME_CHARSETCONV_LIB_IS_WIN) + SET(VMIME_CHARSETCONV_LIB_IS_ICONV "OFF") + SET(VMIME_CHARSETCONV_LIB_IS_ICU "ON") + SET(VMIME_CHARSETCONV_LIB_IS_WIN "OFF") - # Nothing to do +ELSEIF(VMIME_CHARSETCONV_LIB STREQUAL "win") + + SET(VMIME_CHARSETCONV_LIB_IS_ICONV "OFF") + SET(VMIME_CHARSETCONV_LIB_IS_ICU "OFF") + SET(VMIME_CHARSETCONV_LIB_IS_WIN "ON") ELSE() diff --git a/doc/book/building.tex b/doc/book/building.tex index a34db5ba..f0fabfd5 100644 --- a/doc/book/building.tex +++ b/doc/book/building.tex @@ -1,4 +1,5 @@ -\chapter{Building and Installing VMime\label{chapter_building}} +\label{chapter_building} +\chapter{Building and Installing VMime} % ============================================================================ \section{Introduction} @@ -137,15 +138,15 @@ Set to ON to build a static version (.a) of the library (default is ON). \\ VMIME\_BUILD\_TESTS & Set to ON to build unit tests (default is OFF). \\ \hline -VMIME\_TLS\_SUPPORT\_LIB\_IS\_OPENSSL \\ VMIME\_TLS\_SUPPORT\_LIB\_IS\_GNUTLS & -Set either the one or the other (but not both) to ON to force using either OpenSSL -or GNU TLS as the SSL library (default depends on which libraries are available on +VMIME\_TLS\_SUPPORT\_LIB & +Set to either "openssl" or "gnutls" to force using either OpenSSL or GNU TLS +for SSL/TLS support (default depends on which libraries are available on your system). \\ \hline -VMIME\_CHARSETCONV\_LIB\_IS\_ICONV \\ VMIME\_CHARSETCONV\_LIB\_IS\_ICU & -Set either the one or the other (but not both) to ON to force using either iconv -or ICU as the charset conversion library (default depends on which libraries are -available on your system). \\ +VMIME\_CHARSETCONV\_LIB & +Set to either "iconv", "icu" or "win" (Windows only) to force using iconv, ICU +or Windows built-in API for converting between charsets (default value depends +on which libraries are available on your system). \\ \hline CMAKE\_BUILD\_TYPE & Set the build type: either "Release" or "Debug". In Debug build, optimizations diff --git a/test-outsourced-build.sh b/test-outsourced-build.sh index 1700a30b..ac07288d 100755 --- a/test-outsourced-build.sh +++ b/test-outsourced-build.sh @@ -5,7 +5,7 @@ cd _build rm -f ../CMakeCache.txt ../src/vmime/config.hpp ../src/vmime/export-static.hpp ../src/vmime/export-shared.hpp #cmake .. -DCMAKE_INSTALL_PREFIX=../_install -DVMIME_BUILD_SHARED_LIBRARY=NO #cmake .. -DCMAKE_INSTALL_PREFIX=../_install -DVMIME_BUILD_TESTS=YES -cmake .. -DCMAKE_INSTALL_PREFIX=../_install -DVMIME_BUILD_TESTS=YES -DVMIME_BUILD_SAMPLES=YES -DVMIME_TLS_SUPPORT_LIB_IS_OPENSSL=ON -DVMIME_TLS_SUPPORT_LIB_IS_GNUTLS=OFF -DCMAKE_BUILD_TYPE=Debug +cmake .. -DCMAKE_INSTALL_PREFIX=../_install -DVMIME_BUILD_TESTS=YES -DVMIME_BUILD_SAMPLES=YES -DVMIME_TLS_SUPPORT_LIB=openssl -DCMAKE_BUILD_TYPE=Debug cmake .. -L make make install