[Piglit] [PATCH] Remove MSVC build support.

Jose Fonseca jfonseca at vmware.com
Mon Jul 31 13:38:17 UTC 2017


MSVC build of Piglit was broken for over a month.  No point in
sustaining it.
---
 CMakeLists.txt                  |  6 ++--
 HACKING                         | 10 ++----
 README                          | 68 +++++++++++------------------------------
 appveyor.yml                    |  8 -----
 tests/shaders/CMakeLists.gl.txt | 10 ++----
 tests/util/piglit-util.c        | 40 +++---------------------
 tests/util/piglit-util.h        | 53 --------------------------------
 7 files changed, 29 insertions(+), 166 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 76288b954..4259ec832 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,9 +17,9 @@ endif()
 
 project (piglit)
 
-# Require MSVC 2013 U4
-if (MSVC AND CMAKE_C_COMPILER_VERSION VERSION_LESS 18.00.31101.0)
-	message (FATAL_ERROR "Visual Studio 2013 Update 4 or later required")
+# Require MinGW
+if (MSVC)
+	message (FATAL_ERROR "Windows builds require MinGW")
 endif ()
 
 find_package(Threads)
diff --git a/HACKING b/HACKING
index 41565439d..7d7915603 100644
--- a/HACKING
+++ b/HACKING
@@ -101,14 +101,8 @@ Code conventions:
   e.g. libpiglitutil_gles2
 * Test names are '<lowercasegroupname>-<testname>.'  e.g. glsl-novertexdata
 * Use int, float, bool except when GL types (GLint, GLfloat) are really needed
-* Don't put declarations after code.  For example:
-      if (x < 3)
-         x = 0;
-      int y = x * x;
-  This will not compile with MSVC.  The 'int y' declaration must be at the
-  top of the brace-block.
-* Don't use named/designated initializers.  They don't compile with MSVC.
-
+* Always declare GL entrypoint pointer type with APIENTRY, or use piglit
+  dispatch typedef
 
 Test conventions:
 
diff --git a/README b/README
index 43bdfcae7..9d30bcc30 100644
--- a/README
+++ b/README
@@ -150,83 +150,51 @@ Configure and build.
 2.5 Windows
 -----------
 
-Install Python.
+Install Python 3.
 http://www.python.org/download
 
-Install NumPy.
-http://sourceforge.net/projects/numpy/files/NumPy
-
 Install CMake.
 http://cmake.org/cmake/resources/software.html
 Download and install 'Windows' platform.
 
-Install Microsoft Visual Studio 2013 or later.
-Install 'Visual C++' feature.
+Download and install Ninja
+https://github.com/ninja-build/ninja/releases
+
+Install MinGW-w64
+https://mingw-w64.org/
 
 Download OpenGL Core API and Extension Header Files.
 http://www.opengl.org/registry/#headers
-Copy header files to MSVC.
-C:\Program Files\Microsoft Visual Studio 12.0\VC\include\GL
-
-Install pip.
-http://www.pip-installer.org/en/latest/installing.html
+Pass -DGLEXT_INCLUDE_DIR=/path/to/headers
 
 Install python mako.
-  > c:\Python27\Scripts\pip.exe install mako
+> pip install mako
+
+Install NumPy.
+> pip install numpy
 
 
 2.5.1 GLUT
 ----------
 
-Download freeglut for MSVC.
-http://www.transmissionzero.co.uk/software/freeglut-devel
+Download freeglut for Mingw.
+http://www.transmissionzero.co.uk/software/freeglut-devel/
 
-Open Visual Studio Command Prompt.
-Start Menu->All Programs->Visual Studio 2013->Visual Studio Tools->VS2013 x86 Native Tools Command Prompt
-CD to piglit directory.
+> cmake -H. -Bbuild -G "Ninja" -DGLEXT_INCLUDE_DIR=\path\to\glext -DGLUT_INCLUDE_DIR=\path\to\freeglut\include -DGLUT_glut_LIBRARY=\path\to\freeglut\lib\x64\libfreeglut.a -DGLEXT_INCLUDE_DIR=\path\to\glext
+> ninja -C build
 
-Run CMake GUI.
-  > C:\Program Files\CMake 2.8\bin\cmake-gui.exe .
-Configure
-  - NMake Makefiles
-  - Use default native compilers
-Set these variables in the Advanced view.
-  - GLUT_INCLUDE_DIR
-  - GLUT_glut_LIBRARY
-Configure
-Generate
-File->Exit
-
-Build from the Visual Studio Command Prompt.
-  > nmake
 
 2.5.2 Waffle
 ------------
 
-Download waffle for MSVC.
+Download and build waffle for MinGW.
 http://www.waffle-gl.org/
 
 Open the Command Prompt.
 CD to piglit directory.
 
-Run CMake GUI.
-  > C:\Program Files\CMake 2.8\bin\cmake-gui.exe .
-Configure
-  - 'Visual Studio 12 2013', or
-  - 'Visual Studio 12 2013 Win64'
-  - Use default native compilers
-Set these variables in the Advanced view.
-Note that the values provided are for reference purposed and may differ on your system.
-  - PIGLIT_USE_WAFFLE, BOOL, TRUE
-  - WAFFLE_INCLUDE_DIRS, PATH, ${waffle_root}\include\waffle
-  - WAFFLE_LDFLAGS, FILEPATH, ${waffle_root}\lib\waffle-1.lib
-  - GLEXT_INCLUDE_DIR, PATH, C:\Program Files\Microsoft Visual Studio 12.0\VC\include\GL
-Configure
-Generate
-File->Exit
-
-Build from the Command Prompt.
-  > cmake --build .
+> cmake -H. -Bbuild -G "Ninja" -DGLEXT_INCLUDE_DIR=\path\to\glext -DPIGLIT_USE_WAFFLE=TRUE -DWAFFLE_INCLUDE_DIRS=\path\to\waffle\include\waffle WAFFLE_LDFLAGS=\path\to\waffle\lib\libwaffle-1.a
+
 
 3. How to run tests
 -------------------
diff --git a/appveyor.yml b/appveyor.yml
index 302308599..5f6faec85 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -49,12 +49,6 @@ environment:
   - MINGW_HOME: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64
     FREEGLUT_ARCHIVE: freeglut-MinGW-3.0.0-1.mp.zip
     FREEGLUT_LIB: lib\x64\libfreeglut.a
-# - MSVC_ARCH: x86
-#   FREEGLUT_ARCHIVE: freeglut-MSVC-3.0.0-2.mp.zip
-#   FREEGLUT_LIB: lib\freeglut.lib
-# - MSVC_ARCH: x86_amd64
-#   FREEGLUT_ARCHIVE: freeglut-MSVC-3.0.0-2.mp.zip
-#   FREEGLUT_LIB: lib\x64\freeglut.lib
 
 matrix:
   fast_finish: true
@@ -76,8 +70,6 @@ install:
 - ninja --version
 # Setup MinGW
 - if not "%MINGW_HOME%"=="" set Path=%MINGW_HOME%\bin;%Path%
-# Setup MSVC
-- if not "%MSVC_ARCH%"=="" call "%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" %MSVC_ARCH%
 # Install FreeGlut
 - if not exist "%FREEGLUT_ARCHIVE%" appveyor DownloadFile "http://files.transmissionzero.co.uk/software/development/GLUT/%FREEGLUT_ARCHIVE%"
 - 7z x -y "%FREEGLUT_ARCHIVE%" > nul
diff --git a/tests/shaders/CMakeLists.gl.txt b/tests/shaders/CMakeLists.gl.txt
index 7f786eed1..1dbd953e5 100644
--- a/tests/shaders/CMakeLists.gl.txt
+++ b/tests/shaders/CMakeLists.gl.txt
@@ -79,10 +79,7 @@ piglit_add_executable (glsl-fs-fragcoord-zw-ortho glsl-fs-fragcoord-zw-ortho.c)
 piglit_add_executable (glsl-fs-fragcoord-zw-perspective glsl-fs-fragcoord-zw-perspective.c)
 piglit_add_executable (glsl-fs-loop glsl-fs-loop.c)
 piglit_add_executable (glsl-fs-loop-nested glsl-fs-loop-nested.c)
-# MSVC fails with "string exceeds 65535 bytes in length" error
-IF (NOT MSVC)
-	piglit_add_executable (glsl-fs-raytrace-bug27060 glsl-fs-raytrace-bug27060.c)
-ENDIF ()
+piglit_add_executable (glsl-fs-raytrace-bug27060 glsl-fs-raytrace-bug27060.c)
 piglit_add_executable (glsl-fs-sampler-numbering glsl-fs-sampler-numbering.c)
 piglit_add_executable (glsl-fs-shader-stencil-export glsl-fs-shader-stencil-export.c)
 piglit_add_executable (glsl-fs-sqrt-branch glsl-fs-sqrt-branch.c)
@@ -102,10 +99,7 @@ piglit_add_executable (glsl-fs-pointcoord glsl-fs-pointcoord.c)
 piglit_add_executable (glsl-vs-if-bool glsl-vs-if-bool.c)
 piglit_add_executable (glsl-vs-loop glsl-vs-loop.c)
 piglit_add_executable (glsl-vs-loop-nested glsl-vs-loop-nested.c)
-# MSVC fails with "string exceeds 65535 bytes in length" error
-IF (NOT MSVC)
-	piglit_add_executable (glsl-vs-raytrace-bug26691 glsl-vs-raytrace-bug26691.c)
-ENDIF ()
+piglit_add_executable (glsl-vs-raytrace-bug26691 glsl-vs-raytrace-bug26691.c)
 piglit_add_executable (glsl-vs-statechange-1 glsl-vs-statechange-1.c)
 piglit_add_executable (glsl-vs-user-varying-ff glsl-vs-user-varying-ff.c)
 piglit_add_executable (glsl-light-model glsl-light-model.c)
diff --git a/tests/util/piglit-util.c b/tests/util/piglit-util.c
index 15a178b08..e33d055f2 100644
--- a/tests/util/piglit-util.c
+++ b/tests/util/piglit-util.c
@@ -29,7 +29,6 @@
 #endif
 
 #ifdef __linux__
-#include <unistd.h>
 #include <sys/types.h>
 #include <sys/syscall.h>
 #endif
@@ -64,6 +63,10 @@
 # define USE_STDIO
 #endif
 
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>  // for usleep
+#endif
+
 #include "piglit-util.h"
 
 
@@ -116,35 +119,6 @@ int asprintf(char **strp, const char *fmt, ...)
 
 #endif /* HAVE_ASPRINTF */
 
-#ifdef _MSC_VER
-
-char *
-basename(char *path)
-{
-	char *res;
-
-	// Skip drive letter
-	if (path[0] != '\0' && path[1] == ':') {
-		path += 2;
-	}
-
-	// Return pointer to the char after the last directory separator
-	res = path;
-	while (true) {
-		char c = *path++;
-		switch (c) {
-		case '\0':
-			return res;
-		case '\\':
-		case '/':
-			res = ++path;
-			break;
-		}
-	}
-}
-
-#endif /* _MSC_VER */
-
 /**
  * \brief Split \a string into an array of strings.
  *
@@ -343,12 +317,6 @@ piglit_disable_error_message_boxes(void)
 		 * http://msdn.microsoft.com/en-us/library/sas1dkb2.aspx
 		 */
 		_set_error_mode(_OUT_TO_STDERR);
-#ifdef _MSC_VER
-		/* Disable abort message box.
-		 * http://msdn.microsoft.com/en-us/library/e631wekh.aspx
-		 */
-		_set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT);
-#endif
 	}
 #endif /* _WIN32 */
 }
diff --git a/tests/util/piglit-util.h b/tests/util/piglit-util.h
index ad00817a1..c4e781808 100644
--- a/tests/util/piglit-util.h
+++ b/tests/util/piglit-util.h
@@ -61,31 +61,6 @@ extern "C" {
 #define __has_attribute(x) 0
 #endif
 
-#if defined(_MSC_VER)
-
-/* windows.h won't define min/max macros if NOMINMAX is defined, however
- * stdlib.h will still define them for C files regardless... */
-#undef max
-#undef min
-
-#if !defined(__cplusplus) && !defined(inline)
-#define inline __inline
-#endif
-
-#if !defined(__func__)
-#define __func__ __FUNCTION__
-#endif
-
-#define snprintf _snprintf
-
-#define alloca _alloca
-
-#define usleep(__usec) Sleep(((__usec) + 999)/1000)
-
-char *basename(char *path);
-
-#endif /* defined(_MSC_VER) */
-
 #if (__GNUC__ >= 3)
 #define PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a)))
 #else
@@ -94,8 +69,6 @@ char *basename(char *path);
 
 #if defined(__GNUC__) || __has_attribute(noreturn)
 #define NORETURN __attribute__((noreturn))
-#elif defined(_MSC_VER)
-#define NORETURN __declspec(noreturn)
 #else
 #define NORETURN
 #endif
@@ -253,28 +226,6 @@ streq(const char *a, const char *b)
 static inline double
 strtod_inf(const char *nptr, char **endptr)
 {
-#if defined(_MSC_VER)
-	/* skip spaces and tabs */
-	while (*nptr == ' ' || *nptr == '\t')
-		nptr++;
-
-#pragma warning( push )
-#pragma warning( disable : 4056 ) // overflow in floating-point constant arithmetic
-#pragma warning( disable : 4756 ) // overflow in constant arithmetic
-	if (nptr[0] == 'i' && nptr[1] == 'n' && nptr[2] == 'f') {
-		/* +infinity */
-		*endptr = (char *) (nptr + 3);
-		return INFINITY;
-	}
-	else if (nptr[0] == '-' && nptr[1] == 'i' && nptr[2] == 'n' && nptr[3] == 'f') {
-		/* -infinity */
-		*endptr = (char *) (nptr + 4);
-		return -INFINITY;
-	}
-#pragma warning( pop )
-
-	/* fall-through */
-#endif
 	return strtod(nptr, endptr);
 }
 
@@ -354,11 +305,7 @@ strtol_hex(const char *nptr, char **endptr)
 static inline char *
 strchrnul(const char *s, int c)
 {
-#if defined(_MSC_VER) && defined(__cplusplus)
-	char *t = strchr((char *)s, c);
-#else
 	char *t = strchr(s, c);
-#endif
 
 	return (t == NULL) ? ((char *) s + strlen(s)) : t;
 }
-- 
2.11.0



More information about the Piglit mailing list