Enable linking against an external PolarSSL

Hiawatha contains its own copy of the PolarSSL source code, and its
build system builds this private copy of PolarSSL and links to it. In
the context of Buildroot, we prefer to link against the PolarSSL built
externally by the polarssl package.

This patch adds a ENABLE_SSL_EXTERNAL option, which, when used in
addition to ENABLE_SSL, tells Hiawatha's build system to link against
the already existing PolarSSL library instead of building its own.

[Gustavo]: Update for version 8.5
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

diff -Nura hiawatha-8.5.orig/CMakeLists.txt hiawatha-8.5/CMakeLists.txt
--- hiawatha-8.5.orig/CMakeLists.txt	2012-09-12 09:29:34.347994799 -0300
+++ hiawatha-8.5/CMakeLists.txt	2012-09-12 09:33:15.983118183 -0300
@@ -9,6 +9,7 @@
 option(ENABLE_MONITOR  "Enable support for the Hiawatha Monitor." off)
 option(ENABLE_RPROXY   "Enable reverse proxy support in Hiawatha." on)
 option(ENABLE_SSL      "Enable SSL (PolarSSL) support in Hiawatha." on)
+option(ENABLE_SSL_EXTERNAL "Enable SSL (PolarSSL) as an external library." off)
 option(ENABLE_TOMAHAWK "Enable Tomahawk in Hiawatha" off)
 option(ENABLE_TOOLKIT  "Enable the URL toolkit in Hiawatha" on)
 option(ENABLE_XSLT     "Enable XSLT support in Hiawatha." on)
@@ -88,19 +89,23 @@
 
 # PolarSSL
 if(ENABLE_SSL)
+ if(NOT ENABLE_SSL_EXTERNAL)
 	option(USE_SHARED_POLARSSL_LIBRARY "Build PolarSSL as a shared library." ON)
 	set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_FULL_LIBDIR}/hiawatha)
 	set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/hiawatha)
+	include_directories(polarssl/include)
 	add_subdirectory(polarssl)
+ endif()
 	set(POLARSSL_LIBRARY "polarssl")
 endif()
 
 # Hiawatha
-include_directories(${CMAKE_CURRENT_BINARY_DIR} polarssl/include)
 if(ENABLE_XSLT)
 	include_directories(${LIBXML2_INCLUDE_DIR} ${LIBXSLT_INCLUDE_DIR})
 endif()
 
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
 # Configure files
 configure_file(config.h.in config.h)
 foreach (configfile ${config_files_in})
@@ -121,7 +126,9 @@
 target_link_libraries(hiawatha ${CRYPT_LIBRARY} pthread ${Z_LIBRARY})
 if(ENABLE_SSL)
 	target_link_libraries(hiawatha ${POLARSSL_LIBRARY})
+ if(NOT ENABLE_SSL_EXTERNAL)
 	set_target_properties(hiawatha PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/hiawatha)
+ endif()
 endif()
 if(ENABLE_XSLT)
 	target_link_libraries(hiawatha ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES})
