diff --git a/BaseLib/Configure.h.in b/BaseLib/Configure.h.in
index 0d9a33c8155c2d953dc9bb73604618ee8d2c3d1f..2e2bf998ab26685f801cd2f80ecbb0ffd53d53d6 100644
--- a/BaseLib/Configure.h.in
+++ b/BaseLib/Configure.h.in
@@ -12,6 +12,27 @@
  #ifndef CONFIGURE_H
  #define CONFIGURE_H
 
+// Type sizes
+#cmakedefine SIZEOF_INT ${SIZEOF_INT}
+#cmakedefine SIZEOF_LONG ${SIZEOF_LONG}
+#cmakedefine SIZEOF_LONG_LONG ${SIZEOF_LONG_LONG}
+#cmakedefine SIZEOF_VOID_P ${SIZEOF_VOID_P}
+
+// Has includes?
+#cmakedefine HAVE_DLFCN_H
+#cmakedefine HAVE_INTTYPES_H
+#cmakedefine HAVE_MALLOC_H
+#cmakedefine HAVE_MEMORY_H
+#cmakedefine HAVE_STDINT_H
+#cmakedefine HAVE_STDLIB_H
+#cmakedefine HAVE_STRINGS_H
+#cmakedefine HAVE_STRING_H
+#cmakedefine HAVE_SYS_STAT_H
+#cmakedefine HAVE_SYS_TIME_H
+#cmakedefine HAVE_SYS_TYPES_H
+#cmakedefine HAVE_UNISTD_H
+#cmakedefine HAVE_SYS_MOUNT_H
+
 #define SOURCEPATH "${CMAKE_SOURCE_DIR}"
 
 #cmakedefine OGS_VERSION "${OGS_VERSION}"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f12857f65688bfae6476d2528c0dee22fcc8401f..99cdefed5b705cca4d9dfdc72d8fa66472173eb7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,6 +9,8 @@ cmake_minimum_required(VERSION 2.6)
 project( OGS-6 )
 
 ### CMake includes ###
+INCLUDE(scripts/cmake/CheckTypeSizes.cmake)
+INCLUDE(scripts/cmake/FindIncludeHeader.cmake)
 INCLUDE(scripts/cmake/Functions.cmake)
 INCLUDE(scripts/cmake/CMakeSetup.cmake)
 INCLUDE(scripts/cmake/CompilerSetup.cmake)
diff --git a/FileIO/XmlIO/XMLInterface.cpp b/FileIO/XmlIO/XMLInterface.cpp
index f97c869b2cd9eb954849f1d2dfda0185da2ac82b..a25cb40cf086f47489e0157c89ec71a1ace9c9bf 100644
--- a/FileIO/XmlIO/XMLInterface.cpp
+++ b/FileIO/XmlIO/XMLInterface.cpp
@@ -17,10 +17,9 @@
 
 #include <QCryptographicHash>
 #include <QFileInfo>
-#ifdef QT_USE_QTXMLPATTERNS
 #include <QtXmlPatterns/QXmlSchema>
 #include <QtXmlPatterns/QXmlSchemaValidator>
-#endif // QT_USE_QTXMLPATTERNS
+
 
 namespace FileIO
 {
@@ -32,7 +31,6 @@ XMLInterface::XMLInterface(ProjectData* project, const std::string &schemaFile)
 
 int XMLInterface::isValid(const QString &fileName) const
 {
-#ifdef QT_USE_QTXMLPATTERNS
 	QXmlSchema schema;
 	schema.load( QUrl::fromLocalFile((QString::fromStdString(_schemaName))) );
 
@@ -55,13 +53,6 @@ int XMLInterface::isValid(const QString &fileName) const
 		" is invalid." << std::endl;
 		return 0;
 	}
-#else // ifdef QT_USE_QTXMLPATTERNS
-	Q_UNUSED (fileName);
-	std::cout <<
-	"XMLInterface: XML schema validation skipped. Qt 4.6 is required for validation." <<
-	std::endl;
-	return 1;
-#endif // QT_USE_QTXMLPATTERNS
 }
 
 void XMLInterface::setSchema(const std::string &schemaName)
diff --git a/scripts/cmake/CheckTypeSizes.cmake b/scripts/cmake/CheckTypeSizes.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..c73aed8b3d4821145907c76678d62fbd1834cf52
--- /dev/null
+++ b/scripts/cmake/CheckTypeSizes.cmake
@@ -0,0 +1,6 @@
+INCLUDE (CheckTypeSize)
+
+CHECK_TYPE_SIZE(int SIZEOF_INT)
+CHECK_TYPE_SIZE(long SIZEOF_LONG)
+CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
+CHECK_TYPE_SIZE("void *" SIZEOF_VOID_P)
\ No newline at end of file
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index 91fcc5696fa4f966e58171fe6ac9f9c72a3baa31..e6b98de5295cf2aa021ff3e9d2fd8766308c0a26 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -39,9 +39,7 @@ IF ( QT4_FOUND )
 	SET(QT_USE_QTSQL TRUE)
 	SET(QT_USE_QTTEST TRUE)
 	SET(QT_USE_QTXML TRUE)
-	IF(QT_QTXMLPATTERNS_FOUND)
-		SET(QT_USE_QTXMLPATTERNS TRUE)
-	ENDIF(QT_QTXMLPATTERNS_FOUND)
+	SET(QT_USE_QTXMLPATTERNS TRUE)
 	INCLUDE( ${QT_USE_FILE} )
 	ADD_DEFINITIONS(${QT_DEFINITIONS})
 ENDIF (QT4_FOUND )
diff --git a/scripts/cmake/FindIncludeHeader.cmake b/scripts/cmake/FindIncludeHeader.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..2e0b21856b116fda0a857c6491c16d0c5ef4e26e
--- /dev/null
+++ b/scripts/cmake/FindIncludeHeader.cmake
@@ -0,0 +1,15 @@
+INCLUDE (CheckIncludeFiles)
+
+CHECK_INCLUDE_FILES (dlfcn.h HAVE_DLFCN_H)
+CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
+CHECK_INCLUDE_FILES (memory.h HAVE_MEMORY_H)
+CHECK_INCLUDE_FILES (stdint.h HAVE_STDINT_H)
+CHECK_INCLUDE_FILES (stdlib.h HAVE_STDLIB_H)
+CHECK_INCLUDE_FILES (strings.h HAVE_STRINGS_H)
+CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
+CHECK_INCLUDE_FILES (sys/stat.h HAVE_SYS_STAT_H)
+CHECK_INCLUDE_FILES (sys/time.h HAVE_SYS_TIME_H)
+CHECK_INCLUDE_FILES (sys/types.h HAVE_SYS_TYPES_H)
+CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)
+CHECK_INCLUDE_FILES ("sys/param.h;sys/mount.h" HAVE_SYS_MOUNT_H)
\ No newline at end of file