How broken was it? I never build Piglit with MSVC so I didn't notice.
You might want to note in the commit msg that building with MinGW is the way forward.
Reviewed-by: Brian Paul <bri...@vmware.com> On 07/31/2017 07:38 AM, Jose Fonseca wrote:
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; }
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit