Fix the CMake build for Linux.

Bug 27225594

Change-Id: Ice38ce8ca8ef157e24d309fe6ac9ce2f69e9e816
Reviewed-on: https://swiftshader-review.googlesource.com/5363
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 959be25..c9add06 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -81,7 +81,7 @@
         # hides all the others. Gc sections is used in combination
         # with each functions being in its section, to reduce the
         # binary size.
-        set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "${LINKFLAGS} -Wl,--hash-style=both,--version-script=${DIR}/exports.map,--gc-sections")
+        set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "${LINKFLAGS} -Wl,--hash-style=both,--version-script=${DIR}/exports.map,--gc-sections,--no-undefined")
     endif()
 endmacro()
 
@@ -618,29 +618,37 @@
     ${CMAKE_SOURCE_DIR}/include/*.h
 )
 
-file(GLOB_RECURSE OPENGL_COMMON_LIST
-    ${OPENGL_DIR}/common/*.cpp
-    ${OPENGL_DIR}/common/*.h
-    ${OPENGL_DIR}/common/*.hpp
-    ${CMAKE_SOURCE_DIR}/include/*.h
-)
-
 file(GLOB_RECURSE GL32_LIST
     ${OPENGL_DIR}/libGL/*.cpp
     ${OPENGL_DIR}/libGL/*.h
     ${OPENGL_DIR}/libGL/*.hpp
+    ${OPENGL_DIR}/common/*.cpp
+    ${OPENGL_DIR}/common/*.h
+    ${OPENGL_DIR}/common/*.hpp
+    ${CMAKE_SOURCE_DIR}/include/GL/*.h
 )
 
 file(GLOB_RECURSE GLES2_LIST
     ${OPENGL_DIR}/libGLESv2/*.cpp
     ${OPENGL_DIR}/libGLESv2/*.h
     ${OPENGL_DIR}/libGLESv2/*.hpp
+    ${OPENGL_DIR}/common/*.cpp
+    ${OPENGL_DIR}/common/*.h
+    ${OPENGL_DIR}/common/*.hpp
+    ${CMAKE_SOURCE_DIR}/include/KHR/*.h
+    ${CMAKE_SOURCE_DIR}/include/GLES2/*.h
+    ${CMAKE_SOURCE_DIR}/include/GLES3/*.h
 )
 
 file(GLOB_RECURSE GLES_CM_LIST
     ${OPENGL_DIR}/libGLES_CM/*.cpp
     ${OPENGL_DIR}/libGLES_CM/*.h
     ${OPENGL_DIR}/libGLES_CM/*.hpp
+    ${OPENGL_DIR}/common/*.cpp
+    ${OPENGL_DIR}/common/*.h
+    ${OPENGL_DIR}/common/*.hpp
+    ${CMAKE_SOURCE_DIR}/include/KHR/*.h
+    ${CMAKE_SOURCE_DIR}/include/GLES/*.h
 )
 
 file(GLOB_RECURSE OPENGL_COMPILER_LIST
@@ -679,6 +687,12 @@
     list(APPEND SWIFTSHADER_LIST
         ${SOURCE_DIR}/Main/FrameBufferX11.cpp
         ${SOURCE_DIR}/Main/FrameBufferX11.hpp
+        ${SOURCE_DIR}/Common/SharedLibrary.hpp
+        ${SOURCE_DIR}/Main/libX11.cpp
+        ${SOURCE_DIR}/Main/libX11.hpp
+    )
+    list(APPEND EGL_LIST
+        ${SOURCE_DIR}/Common/SharedLibrary.hpp
         ${SOURCE_DIR}/Main/libX11.cpp
         ${SOURCE_DIR}/Main/libX11.hpp
     )
@@ -702,7 +716,7 @@
 if(WIN32)
     set(OS_LIBS odbc32 odbccp32 WS2_32 dxguid)
 elseif(LINUX)
-    set(OS_LIBS dl X11 Xext pthread)
+    set(OS_LIBS dl pthread)
 elseif(APPLE)
     find_library(COCOA_FRAMEWORK Cocoa)
     find_library(QUARTZ_FRAMEWORK Quartz)
@@ -729,14 +743,6 @@
 )
 target_link_libraries(Reactor llvm ${OS_LIBS})
 
-add_library(GLCommon STATIC ${OPENGL_COMMON_LIST})
-set_target_properties(GLCommon PROPERTIES
-    INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
-    POSITION_INDEPENDENT_CODE 1
-    FOLDER "OpenGL"
-)
-target_link_libraries(GLCommon ${OS_LIBS})
-
 add_library(GLCompiler STATIC ${OPENGL_COMPILER_LIST})
 set_target_properties(GLCompiler PROPERTIES
     INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
@@ -778,7 +784,7 @@
         PREFIX ""
     )
     set_target_export_map(libGL ${SOURCE_DIR}/OpenGL/libGL)
-    target_link_libraries(libGL SwiftShader Reactor GLCommon GLCompiler ${OS_LIBS})
+    target_link_libraries(libGL SwiftShader Reactor GLCompiler ${OS_LIBS})
 endif()
 
 if(BUILD_GLESv2)
@@ -790,7 +796,7 @@
         PREFIX ""
     )
     set_target_export_map(libGLESv2 ${SOURCE_DIR}/OpenGL/libGLESv2)
-    target_link_libraries(libGLESv2 SwiftShader Reactor GLCommon GLCompiler ${OS_LIBS})
+    target_link_libraries(libGLESv2 SwiftShader Reactor GLCompiler ${OS_LIBS})
     add_custom_command(
         TARGET libGLESv2
         POST_BUILD
@@ -808,7 +814,7 @@
         PREFIX ""
     )
     set_target_export_map(libGLES_CM ${SOURCE_DIR}/OpenGL/libGLES_CM)
-    target_link_libraries(libGLES_CM SwiftShader Reactor GLCommon GLCompiler ${OS_LIBS})
+    target_link_libraries(libGLES_CM SwiftShader Reactor GLCompiler ${OS_LIBS})
     add_custom_command(
         TARGET libGLES_CM
         POST_BUILD