Rename version scripts to linker scripts.

Blaze (Bazel) requires linker dependencies to have a .ld, .lds, or
.ldscript extension. Note that version scripts are just the contents of
the VERSION command in (true) linker scripts. However, the gold linker
used by Android does not support implicit linker scripts (which amend
the default linker script), nor the INSERT command. Therefore these
linker scripts are still actually just version scripts.

https://sourceware.org/binutils/docs/ld/VERSION.html

Bug b/67482470

Change-Id: I3bbe25dab6d916376bdc41bb723279ed2ef62fb0
Reviewed-on: https://swiftshader-review.googlesource.com/13108
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 619111f..3e96a24 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -110,7 +110,8 @@
         # 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,--no-undefined")
+        set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "${LINKFLAGS} -Wl,--hash-style=both,--version-script=${DIR}/${TARGET}.lds,--gc-sections,--no-undefined")
+        set_target_properties(${TARGET} PROPERTIES LINK_DEPENDS "${DIR}/${TARGET}.lds")
     endif()
 endmacro()
 
diff --git a/docs/Index.md b/docs/Index.md
index 12c4318..f51f87e 100644
--- a/docs/Index.md
+++ b/docs/Index.md
@@ -55,7 +55,7 @@
 

 The GLSL compiler is implemented in [src/OpenGL/compiler/](../src/OpenGL/compiler/). It uses [Flex](http://flex.sourceforge.net/) and [Bison](https://www.gnu.org/software/bison/) to tokenize and parse GLSL shader source. It produces an [abstract syntax tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (AST), which is then traversed to output assembly-level instructions in [OutputASM.cpp](../src/OpenGL/compiler/OutputASM.cpp).

 

-The [EGL](https://www.khronos.org/registry/egl/specs/eglspec.1.4.20110406.pdf) API is implemented in [src/OpenGL/libEGL/](../src/OpenGL/libEGL/). Its entry functions are listed in [libEGL.def](../src/OpenGL/libEGL/libEGL.def) (for Windows) and [exports.map](../src/OpenGL/libEGL/exports.map) (for Linux), and defined in [main.cpp](../src/OpenGL/libEGL/main.cpp) and implemented in [libEGL.cpp](../src/OpenGL/libEGL/libEGL.cpp). The [Display](../src/OpenGL/libEGL/Display.h), [Surface](../src/OpenGL/libEGL/Surface.h), and [Config](../src/OpenGL/libEGL/Config.h) classes are respective implementations of the abstract EGLDisplay, EGLSurface, and EGLConfig types.

+The [EGL](https://www.khronos.org/registry/egl/specs/eglspec.1.4.20110406.pdf) API is implemented in [src/OpenGL/libEGL/](../src/OpenGL/libEGL/). Its entry functions are listed in [libEGL.def](../src/OpenGL/libEGL/libEGL.def) (for Windows) and [libEGL.lds](../src/OpenGL/libEGL/libEGL.lds) (for Linux), and defined in [main.cpp](../src/OpenGL/libEGL/main.cpp) and implemented in [libEGL.cpp](../src/OpenGL/libEGL/libEGL.cpp). The [Display](../src/OpenGL/libEGL/Display.h), [Surface](../src/OpenGL/libEGL/Surface.h), and [Config](../src/OpenGL/libEGL/Config.h) classes are respective implementations of the abstract EGLDisplay, EGLSurface, and EGLConfig types.

 

 [OpenGL ES 1.1](https://www.khronos.org/registry/gles/specs/1.1/es_full_spec_1.1.12.pdf) is implemented in [src/OpenGL/libGLES_CM/](../src/OpenGL/libGLES_CM/), while [OpenGL ES 2.0](https://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.25.pdf) is implemented in [src/OpenGL/libGLESv2/](../src/OpenGL/libGLESv2/). Note that while [OpenGL ES 3.0](https://www.khronos.org/registry/gles/specs/3.0/es_spec_3.0.0.pdf) functions are implemented in [libGLESv3.cpp](../src/OpenGL/libGLESv2/libGLESv3.cpp), it is compiled into the libGLESv2 library as standard among most implementations (some platforms have a libGLESv3 symbolically link to libGLESv2). We'll focus on OpenGL ES 2.0 in this documentation.

 

diff --git a/src/OpenGL/libEGL/Android.mk b/src/OpenGL/libEGL/Android.mk
index dd3796c..fa58b0e 100644
--- a/src/OpenGL/libEGL/Android.mk
+++ b/src/OpenGL/libEGL/Android.mk
@@ -59,7 +59,8 @@
 endif
 
 COMMON_LDFLAGS := \
-	-Wl,--version-script=$(LOCAL_PATH)/exports.map \
+	-Wl,--version-script=$(LOCAL_PATH)/libEGL.lds \
+	-Wl,--gc-sections \
 	-Wl,--hash-style=sysv
 
 include $(CLEAR_VARS)
diff --git a/src/OpenGL/libEGL/BUILD.gn b/src/OpenGL/libEGL/BUILD.gn
index 68a10bc..24727cf 100644
--- a/src/OpenGL/libEGL/BUILD.gn
+++ b/src/OpenGL/libEGL/BUILD.gn
@@ -74,7 +74,7 @@
   } else if (is_linux) {
     sources += [ "../../Main/libX11.cpp" ]
     ldflags =
-        [ "-Wl,--version-script=" + rebase_path("exports.map", root_build_dir) ]
+        [ "-Wl,--version-script=" + rebase_path("libEGL.lds", root_build_dir) ]
   }
 
   configs = [ ":swiftshader_libEGL_private_config" ]
diff --git a/src/OpenGL/libEGL/exports.map b/src/OpenGL/libEGL/libEGL.lds
similarity index 99%
rename from src/OpenGL/libEGL/exports.map
rename to src/OpenGL/libEGL/libEGL.lds
index 8455dc9..7a2a479 100644
--- a/src/OpenGL/libEGL/exports.map
+++ b/src/OpenGL/libEGL/libEGL.lds
@@ -56,4 +56,4 @@
 
 local:
 	*;
-};
+};
\ No newline at end of file
diff --git a/src/OpenGL/libGLES_CM/Android.mk b/src/OpenGL/libGLES_CM/Android.mk
index 12b68e1..864ae97 100644
--- a/src/OpenGL/libGLES_CM/Android.mk
+++ b/src/OpenGL/libGLES_CM/Android.mk
@@ -81,8 +81,8 @@
 endif
 
 COMMON_LDFLAGS := \
+	-Wl,--version-script=$(LOCAL_PATH)/libGLES_CM.lds \
 	-Wl,--gc-sections \
-	-Wl,--version-script=$(LOCAL_PATH)/exports.map \
 	-Wl,--hash-style=sysv
 
 include $(CLEAR_VARS)
diff --git a/src/OpenGL/libGLES_CM/exports.map b/src/OpenGL/libGLES_CM/libGLES_CM.lds
similarity index 100%
rename from src/OpenGL/libGLES_CM/exports.map
rename to src/OpenGL/libGLES_CM/libGLES_CM.lds
diff --git a/src/OpenGL/libGLESv2/Android.mk b/src/OpenGL/libGLESv2/Android.mk
index 12c4e9a..643e994 100644
--- a/src/OpenGL/libGLESv2/Android.mk
+++ b/src/OpenGL/libGLESv2/Android.mk
@@ -88,8 +88,8 @@
 endif
 
 COMMON_LDFLAGS := \
+	-Wl,--version-script=$(LOCAL_PATH)/libGLESv2.lds \
 	-Wl,--gc-sections \
-	-Wl,--version-script=$(LOCAL_PATH)/exports.map \
 	-Wl,--hash-style=sysv
 
 include $(CLEAR_VARS)
diff --git a/src/OpenGL/libGLESv2/BUILD.gn b/src/OpenGL/libGLESv2/BUILD.gn
index a917cfd..f29df3e 100644
--- a/src/OpenGL/libGLESv2/BUILD.gn
+++ b/src/OpenGL/libGLESv2/BUILD.gn
@@ -94,7 +94,7 @@
     ldflags = [ "-Wl,-install_name,@rpath/libswiftshader_libGLESv2.dylib" ]
   } else if (is_linux) {
     ldflags =
-        [ "-Wl,--version-script=" + rebase_path("exports.map", root_build_dir) ]
+        [ "-Wl,--version-script=" + rebase_path("libGLESv2.lds", root_build_dir) ]
   }
 
   configs = [ ":swiftshader_libGLESv2_private_config" ]
diff --git a/src/OpenGL/libGLESv2/exports.map b/src/OpenGL/libGLESv2/libGLESv2.lds
similarity index 99%
rename from src/OpenGL/libGLESv2/exports.map
rename to src/OpenGL/libGLESv2/libGLESv2.lds
index adc4ff5..483efc2 100644
--- a/src/OpenGL/libGLESv2/exports.map
+++ b/src/OpenGL/libGLESv2/libGLESv2.lds
@@ -302,4 +302,4 @@
 
 local:
 	*;
-};
+};
\ No newline at end of file