[Piglit] [RFC] make: Make util libraries shared in non-windows systems

Pauli Nieminen pauli.nieminen at linux.intel.com
Mon May 21 11:17:10 PDT 2012


Incremental builds take long time linking tests if utilities are
modified. The link time can be eliminate if libraries are made shared.

Shared libraries need to specify symbols that are excepted to be
declared in executeable as weak to allow linking without symbols that
aren't used in runtime.

Windows has limitation that shared library can't have programs main
function that forces windows to use static libraries.

Signed-off-by: Pauli Nieminen <pauli.nieminen at linux.intel.com>
---
 cmake/piglit_util.cmake       |    4 ++++
 tests/util/CMakeLists.txt     |    1 +
 tests/util/piglit-framework.c |   14 ++++++++++++++
 tests/util/piglit-glx-util.c  |    5 +++++
 4 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/cmake/piglit_util.cmake b/cmake/piglit_util.cmake
index 0daaad2..9d28036 100644
--- a/cmake/piglit_util.cmake
+++ b/cmake/piglit_util.cmake
@@ -75,7 +75,11 @@ endfunction(piglit_add_executable)
 function(piglit_add_library name)
 
     list(REMOVE_AT ARGV 0)
+if(WIN32)
     add_library(${name} ${ARGV})
+else(WIN32)
+    add_library(${name} SHARED ${ARGV})
+endif(WIN32)
     add_dependencies(${name} piglit_dispatch_gen)
 
 endfunction(piglit_add_library)
diff --git a/tests/util/CMakeLists.txt b/tests/util/CMakeLists.txt
index c7fe8cb..aaec988 100644
--- a/tests/util/CMakeLists.txt
+++ b/tests/util/CMakeLists.txt
@@ -25,6 +25,7 @@ if(OPENGL_egl_LIBRARY)
 	    ${UTIL_SOURCES}
 	    piglit-util-egl.c
 	    )
+	link_libraries(${OPENGL_egl_LIBRARY})
 endif(OPENGL_egl_LIBRARY)
 
 piglit_include_target_api()
diff --git a/tests/util/piglit-framework.c b/tests/util/piglit-framework.c
index dac04b7..301c353 100644
--- a/tests/util/piglit-framework.c
+++ b/tests/util/piglit-framework.c
@@ -50,6 +50,20 @@ XVisualInfo *piglit_glx_visinfo;
 GLXContext piglit_glx_context;
 #endif
 
+#ifndef _WIN32
+__attribute__((weak)) int piglit_width = 100;
+__attribute__((weak)) int piglit_height = 100;
+__attribute__((weak)) int piglit_window_mode = GLUT_RGB | GLUT_DOUBLE;
+
+__attribute__((weak)) enum piglit_result piglit_display(void)
+{
+	return PIGLIT_FAIL;
+}
+__attribute__((weak)) void piglit_init(int argc, char **argv)
+{
+}
+#endif
+
 static void
 display(void)
 {
diff --git a/tests/util/piglit-glx-util.c b/tests/util/piglit-glx-util.c
index df54c50..069ea72 100644
--- a/tests/util/piglit-glx-util.c
+++ b/tests/util/piglit-glx-util.c
@@ -34,6 +34,11 @@
 
 int piglit_automatic;
 
+#ifndef _WIN32
+__attribute__((weak)) int piglit_width = 100;
+__attribute__((weak)) int piglit_height = 100;
+#endif
+
 Display *
 piglit_get_glx_display()
 {
-- 
1.7.5.4



More information about the Piglit mailing list