Manually load X11 and resolve its symbols when needed.

This removes the static dependency on X11 on Linux, allowing for
headless rendering on systems without it.

Bug 20104157

Change-Id: I463c8b3340c3ad16cd0f0d1d0f8804ee31012dd0
Reviewed-on: https://swiftshader-review.googlesource.com/2832
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLES_CM/libGLES_CM.cbp b/src/OpenGL/libGLES_CM/libGLES_CM.cbp
index ce1178b..7041a83 100644
--- a/src/OpenGL/libGLES_CM/libGLES_CM.cbp
+++ b/src/OpenGL/libGLES_CM/libGLES_CM.cbp
@@ -131,9 +131,9 @@
 		<Linker>
 			<Add option="-Wl,--version-script=./exports.map" />
 			<Add option="-Wl,--hash-style=both" />
+			<Add option="-Wl,--no-undefined" />
 			<Add library="pthread" />
-			<Add library="X11" />
-			<Add library="Xext" />
+			<Add library="dl" />
 		</Linker>
 		<Unit filename="../../Common/CPUID.cpp" />
 		<Unit filename="../../Common/CPUID.hpp" />
@@ -174,6 +174,8 @@
 		<Unit filename="../../Main/SwiftConfig.hpp" />
 		<Unit filename="../../Main/crc.cpp" />
 		<Unit filename="../../Main/crc.h" />
+		<Unit filename="../../Main/libX11.cpp" />
+		<Unit filename="../../Main/libX11.hpp" />
 		<Unit filename="../../Main/serialcommon.h" />
 		<Unit filename="../../Main/serialvalid.cpp" />
 		<Unit filename="../../Main/serialvalid.h" />
@@ -247,6 +249,8 @@
 		<Unit filename="../../Shader/VertexRoutine.hpp" />
 		<Unit filename="../../Shader/VertexShader.cpp" />
 		<Unit filename="../../Shader/VertexShader.hpp" />
+		<Unit filename="../common/MatrixStack.cpp" />
+		<Unit filename="../common/MatrixStack.hpp" />
 		<Unit filename="../common/NameSpace.cpp" />
 		<Unit filename="../common/NameSpace.hpp" />
 		<Unit filename="../common/Object.cpp" />
@@ -272,8 +276,6 @@
 		<Unit filename="Image.hpp" />
 		<Unit filename="IndexDataManager.cpp" />
 		<Unit filename="IndexDataManager.h" />
-		<Unit filename="../common/MatrixStack.cpp" />
-		<Unit filename="../common/MatrixStack.hpp" />
 		<Unit filename="Renderbuffer.cpp" />
 		<Unit filename="Renderbuffer.h" />
 		<Unit filename="ResourceManager.cpp" />