aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2014-05-27 19:59:37 +0000
committerVincent Richard <[email protected]>2014-05-27 19:59:37 +0000
commitb5d26604ef239c197ef59f4e1088fb331a0bdc2a (patch)
treeb67a3b3f3a68011206b02f1d45e5287af6fef1e5
parentMerge branch 'master' of https://github.com/kisli/vmime (diff)
downloadvmime-b5d26604ef239c197ef59f4e1088fb331a0bdc2a.tar.gz
vmime-b5d26604ef239c197ef59f4e1088fb331a0bdc2a.zip
Use string option instead of mutually exclusive bool options for charset and TLS library.
-rw-r--r--CMakeLists.txt96
-rw-r--r--doc/book/building.tex17
-rwxr-xr-xtest-outsourced-build.sh2
3 files changed, 57 insertions, 58 deletions
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"
)
-
-OPTION(
- VMIME_TLS_SUPPORT_LIB_IS_OPENSSL
- "Use OpenSSL library for SSL/TLS support"
- OFF
+SET_PROPERTY(
+ CACHE
+ VMIME_TLS_SUPPORT_LIB
+ PROPERTY STRINGS gnutls openssl
)
-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_HAVE_TLS_SUPPORT)
- 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}
-)
-
-OPTION(
- VMIME_CHARSETCONV_LIB_IS_ICU
- "Use ICU library for charset conversion"
- ${VMIME_CHARSETCONV_LIB_IS_ICU_DEFAULT}
+SET(
+ VMIME_CHARSETCONV_LIB
+ "${VMIME_CHARSETCONV_LIB_DETECTED}"
+ CACHE
+ STRING
+ "Library to use for charset conversion"
)
-
-OPTION(
- VMIME_CHARSETCONV_LIB_IS_WIN
- "Use Windows API for charset conversion"
- ${VMIME_CHARSETCONV_LIB_IS_WIN_DEFAULT}
+SET_PROPERTY(
+ CACHE
+ VMIME_CHARSETCONV_LIB
+ PROPERTY STRINGS win iconv icu
)
-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")
+
+ELSEIF(VMIME_CHARSETCONV_LIB STREQUAL "win")
- # Nothing to do
+ 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