changeset 359:c6dfa16c77be

Make things optional
author David Demelier <markand@malikania.fr>
date Tue, 28 Apr 2015 11:16:46 +0200
parents eb7723d8627a
children 469000c78227
files CMakeLists.txt
diffstat 1 files changed, 87 insertions(+), 77 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Tue Apr 28 11:13:34 2015 +0200
+++ b/CMakeLists.txt	Tue Apr 28 11:16:46 2015 +0200
@@ -113,9 +113,13 @@
 	endif ()
 endmacro()
 
+# Required
 find_package(Pandoc REQUIRED)
-find_package(OpenSSL REQUIRED)
-find_package(Jansson REQUIRED)
+
+# Optional
+find_package(Jansson)
+find_package(OpenSSL)
+find_package(ZIP)
 
 # ---------------------------------------------------------
 # Base64
@@ -223,23 +227,25 @@
 # Hash
 # ---------------------------------------------------------
 
-define_module(
-	TARGET hash
-	NAME Hash
-	DIRECTORY Hash
-	LIBRARIES ${OPENSSL_LIBRARIES}
-	INCLUDES ${OPENSSL_INCLUDE_DIR}
-	SOURCES
-		${code_SOURCE_DIR}/C++/modules/Hash/Hash.cpp
-		${code_SOURCE_DIR}/C++/modules/Hash/Hash.h
-	DOCS
-		${code_SOURCE_DIR}/C++/doc/Hash/Home.md
-		${code_SOURCE_DIR}/C++/doc/Hash/class/Hash.md
-		${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/md5.md
-		${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/sha1.md
-		${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/sha256.md
-		${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/sha512.md
-)
+if (OPENSSL_FOUND)
+	define_module(
+		TARGET hash
+		NAME Hash
+		DIRECTORY Hash
+		LIBRARIES ${OPENSSL_LIBRARIES}
+		INCLUDES ${OPENSSL_INCLUDE_DIR}
+		SOURCES
+			${code_SOURCE_DIR}/C++/modules/Hash/Hash.cpp
+			${code_SOURCE_DIR}/C++/modules/Hash/Hash.h
+		DOCS
+			${code_SOURCE_DIR}/C++/doc/Hash/Home.md
+			${code_SOURCE_DIR}/C++/doc/Hash/class/Hash.md
+			${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/md5.md
+			${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/sha1.md
+			${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/sha256.md
+			${code_SOURCE_DIR}/C++/doc/Hash/class/Hash/sha512.md
+	)
+endif ()
 
 # ---------------------------------------------------------
 # Ini
@@ -275,22 +281,24 @@
 # Json
 # ---------------------------------------------------------
 
-define_module(
-	TARGET json
-	NAME Json
-	DIRECTORY Json
-	INCLUDES ${Jansson_INCLUDE_DIRS}
-	LIBRARIES ${Jansson_LIBRARIES}
-	SOURCES
-		${code_SOURCE_DIR}/C++/modules/Json/Json.cpp
-		${code_SOURCE_DIR}/C++/modules/Json/Json.h
-	RESOURCES
-		${code_SOURCE_DIR}/C++/tests/Json/data/array-all.json
-		${code_SOURCE_DIR}/C++/tests/Json/data/array.json
-		${code_SOURCE_DIR}/C++/tests/Json/data/object-all.json
-		${code_SOURCE_DIR}/C++/tests/Json/data/object.json
-		${code_SOURCE_DIR}/C++/tests/Json/data/simple.json
-)
+if (Jansson_FOUND)
+	define_module(
+		TARGET json
+		NAME Json
+		DIRECTORY Json
+		INCLUDES ${Jansson_INCLUDE_DIRS}
+		LIBRARIES ${Jansson_LIBRARIES}
+		SOURCES
+			${code_SOURCE_DIR}/C++/modules/Json/Json.cpp
+			${code_SOURCE_DIR}/C++/modules/Json/Json.h
+		RESOURCES
+			${code_SOURCE_DIR}/C++/tests/Json/data/array-all.json
+			${code_SOURCE_DIR}/C++/tests/Json/data/array.json
+			${code_SOURCE_DIR}/C++/tests/Json/data/object-all.json
+			${code_SOURCE_DIR}/C++/tests/Json/data/object.json
+			${code_SOURCE_DIR}/C++/tests/Json/data/simple.json
+	)
+endif ()
 
 # ---------------------------------------------------------
 # OptionParser
@@ -326,32 +334,34 @@
 # Sockets
 # ---------------------------------------------------------
 
-if (WIN32)
-	set(SOCKET_LIBRARIES ws2_32)
-endif ()
+if (OPENSSL_FOUND)
+	if (WIN32)
+		set(SOCKET_LIBRARIES ws2_32)
+	endif ()
 
-define_module(
-	TARGET socket
-	NAME Socket
-	DIRECTORY Socket
-	INCLUDES ${OPENSSL_INCLUDE_DIR}
-	LIBRARIES
-		${SOCKET_LIBRARIES}
-		${OPENSSL_LIBRARIES}
-	SOURCES
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketAddress.cpp
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketAddress.h
-		${code_SOURCE_DIR}/C++/modules/Socket/Socket.cpp
-		${code_SOURCE_DIR}/C++/modules/Socket/Socket.h
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketListener.cpp
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketListener.h
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketSsl.cpp
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketSsl.h
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketTcp.cpp
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketTcp.h
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketUdp.cpp
-		${code_SOURCE_DIR}/C++/modules/Socket/SocketUdp.h
-)
+	define_module(
+		TARGET socket
+		NAME Socket
+		DIRECTORY Socket
+		INCLUDES ${OPENSSL_INCLUDE_DIR}
+		LIBRARIES
+			${SOCKET_LIBRARIES}
+			${OPENSSL_LIBRARIES}
+		SOURCES
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketAddress.cpp
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketAddress.h
+			${code_SOURCE_DIR}/C++/modules/Socket/Socket.cpp
+			${code_SOURCE_DIR}/C++/modules/Socket/Socket.h
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketListener.cpp
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketListener.h
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketSsl.cpp
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketSsl.h
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketTcp.cpp
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketTcp.h
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketUdp.cpp
+			${code_SOURCE_DIR}/C++/modules/Socket/SocketUdp.h
+	)
+endif ()
 
 # ---------------------------------------------------------
 # Treenode
@@ -382,7 +392,7 @@
 # Xdg
 # ---------------------------------------------------------
 
-#if (UNIX)
+if (UNIX)
 	define_module(
 		TARGET xdg
 		NAME Xdg
@@ -401,24 +411,24 @@
 			${code_SOURCE_DIR}/C++/doc/Xdg/class/Xdg/dataHome.md
 			${code_SOURCE_DIR}/C++/doc/Xdg/class/Xdg/runtimeDir.md
 	)
-#endif ()
+endif ()
 
 # ---------------------------------------------------------
 # Zip
 # ---------------------------------------------------------
 
-find_package(ZIP REQUIRED)
-
-define_module(
-	TARGET zip
-	NAME Zip
-	DIRECTORY Zip
-	INCLUDES ${ZIP_INCLUDE_DIRS}
-	LIBRARIES ${ZIP_LIBRARIES}
-	RESOURCES
-		${code_SOURCE_DIR}/C++/tests/Zip/data/data.txt
-		${code_SOURCE_DIR}/C++/tests/Zip/data/stats.zip
-	SOURCES
-		${code_SOURCE_DIR}/C++/modules/Zip/ZipArchive.cpp
-		${code_SOURCE_DIR}/C++/modules/Zip/ZipArchive.h
-)
+if (ZIP_FOUND)
+	define_module(
+		TARGET zip
+		NAME Zip
+		DIRECTORY Zip
+		INCLUDES ${ZIP_INCLUDE_DIRS}
+		LIBRARIES ${ZIP_LIBRARIES}
+		RESOURCES
+			${code_SOURCE_DIR}/C++/tests/Zip/data/data.txt
+			${code_SOURCE_DIR}/C++/tests/Zip/data/stats.zip
+		SOURCES
+			${code_SOURCE_DIR}/C++/modules/Zip/ZipArchive.cpp
+			${code_SOURCE_DIR}/C++/modules/Zip/ZipArchive.h
+	)
+endif ()