summaryrefslogtreecommitdiff
path: root/cmake
AgeCommit message (Collapse)AuthorFilesLines
2015-02-23Add dependency on Python sixDylan Baker1-0/+22
Six is a module that provides a clean, standardized interface for handling python2 and python3 from the same code base. This adds a requirement on six as a build-time dependency, the plan is to use it only for python generators (those called during build time) While it certainly is possible to reimplement much of what six does scratch and not add another python dependency, I think it's better to just use six. For one thing a large number of python modules already depend on six, so the chances are good that most people already have it installed. Second, it's the de facto standard for supporting complex code bases in 2 and 3, so it's familiar and many of the corner cases have already been addressed. This adds the necessary cmake boilerplate to ensure that six is available. At this time I don't know of a specific version being required, but I am currently using 1.9.0 v2: - update README with six dependency (Jordan) Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2015-01-19cmake: Simplify finding python modulesDylan Baker4-93/+81
This patch adds 3 files, PythonModule.cmake, FindPythonMako.cmake and FindPythonNumpy.cmake. PythonModule provides a simple function for running python and parsing the version strings, each FindPython*.cmake then just calls that function, and then calls the find_package_handle_standard_args macro for simple, standard finding. This is much more in line with how the core cmake modules work, and makes is trivial to add additional python modules with all of the standard cmake awesomeness like version checking. Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com> Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
2015-01-19cmake: use cmake builtin python moduleDylan Baker2-2/+2
This removes a bunch of code that we rolled for finding python interpreters, and uses the cmake builtins. Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com> Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
2014-10-20libpiglit: Do not set CMAKE_SOVERSION on OpenBSD.Vinson Lee1-1/+3
This patch fixes build regression on OpenBSD introduced with commit 4efb025fcac0b37d04ab759ab15055f27cea94f8 'libpiglit: Set CMAKE SOVERSION for internal libraries to "0"'. Linking CXX shared library ../../../../lib/libpiglitutil_gl.so /usr/bin/ld: cannot find -llibpiglitutil.so.0 collect2: ld returned 1 exit status target_api/gl/tests/util/CMakeFiles/piglitutil_gl.dir/build.make:515: recipe for target 'lib/libpiglitutil_gl.so.0' failed Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84969 Signed-off-by: Vinson Lee <vlee@freedesktop.org> Reviewed-by: Brian Paul <brianp@vmware.com>
2014-09-26libpiglit: Set CMAKE SOVERSION for internal libraries to "0"Jordan Justen1-0/+1
When packaging for piglit for debian, I see this type of message: dpkg-shlibdeps: warning: Can't extract name and version from library name libpiglitutil.so It it repeated several times for each piglit executable causing a significant delay in the build time. Setting a soname version for these internal libraries causes this message to go away. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
2014-07-05cmake: Bump Mako requirement 0.7 -> 0.7.3Chad Versace1-1/+1
Tom reported that Mako 0.7 fails with a nasty Python backtrace, but Mako 0.7.3 works. I assume Piglit hits a bug that was fixed between 0.7 and 0.7.3. Reported-by: Tom Stellard <tom@stellard.net> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2014-06-26cmake: Require Mako >= 0.7Chad Versace1-0/+93
Piglit began requiring Mako 0.7 as of commit ac1f382 "dispatch: Generate piglit-dispatch from Khronos XML". Piglit has required Mako for a long time, and CMake did check for Mako. But CMake didn't check the version. This patch fixes CMake to require Mako >= 0.7 and to provide the below hint on failure: Hint: Try installing Mako with `pip install --user --upgrade Mako` Reported-by: Tom Stellard <thomas.stellard@amd.com> Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2014-06-23util: Generate piglit_get_gl_enum_name() and friendsChad Versace1-0/+2
This patch removes the files "piglit-util-gl*-enum.c" and replaces them with a single file "piglit-util-gl-enum-gen.c" generated from the Khronos XML. The two functions now generated are: piglit_get_gl_enum_name(GLenum param) piglit_get_prim_name(GLenum prim) Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2014-06-23glapi: Remove the glapi directoryChad Versace1-45/+0
Piglit no longer uses the directory because it now generates piglit-dispatch from the Khronos XML. Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2014-06-23dispatch: Generate piglit-dispatch from Khronos XMLChad Versace1-4/+9
Khronos now generates its headers from XML and no longer maintains the old, crufty *.spec files. Piglit should do the same. Otherwise, piglit-dispatch won't be able to pick up new extension functions. As a really really big bonus, after Piglit starts generating its GL dispatch code from gl.xml, it will be a small step to start generating EGL and GLX dispatch from egl.xml and glx.xml. This patch imports 'gl.xml' into a new toplevel "registry" directory, to follow the precedent of libepoxy. This patch follows the precedent of libepoxy by importing "gl.xml" into a new toplevel "registry" directory. I did *not* try to redesign piglit-dispatch in this patch. To the contrary, I attempted to keep the newly generated dispatch code to be as similar as possible as the old generated code. Despite wanting to clean up piglit-dispatch's design, I refrained because "a patch should do one thing, and do it well". I strove to keep separate concerns in separate files. File "registry/gl.py" parses "registry/gl.xml". File "tests/util/gen_dispatch.py" generates code from the that parsed result. This decision kept gen_dispatch.py small and focused. I hope everyone finds the rewritten gen_dispatch.py more maintainable and easy to read. The generated code has changed as following: - It now contains the GLES1 API, because gl.xml contains information on all OpenGL APIs. - The comment block for each function alias set now contains more information. For each function in the set, it now lists the complete set of providers. For example: /* glActiveTexture (GL_VERSION_1_3) (GL_VERSION_ES_CM_1_0) (GL_ES_VERSION_2_0) */ /* glActiveTextureARB (GL_ARB_multitexture) */ extern PFNGLACTIVETEXTUREPROC piglit_dispatch_glActiveTexture; #define glActiveTexture piglit_dispatch_glActiveTexture #define glActiveTextureARB piglit_dispatch_glActiveTexture - Enums are sorted by group then by value. Old dispatch sorted only by value. For example: /* Enum Group MapBufferUsageMask */ #define GL_MAP_READ_BIT 0x0001 #define GL_MAP_READ_BIT_EXT 0x0001 #define GL_MAP_WRITE_BIT 0x0002 #define GL_MAP_WRITE_BIT_EXT 0x0002 ... Tested for regressions with: piglit run -p x11_egl -x glx -x glean Mesa 10.2.1 Intel Ivybridge Fedora 20 v3, for Dylan: - Replace ElementTree with cElementTree, for speed. - Each method $foo in KeyedOrderedSet that returns a generator, rename it to iter${foo} to follow Python2 (not 3) naming conventions. - Python 2.6 lacks OrderedDict, so don't use it. - Remove unused import 'dedent'. - Python 2.6 does not recognize the syntax for set literals, so replace each set literal with a list literal or generator literal. - Replace sys.stderr.write with print(file=sys.stderr). - Remove hand-coded OrderedKeyedSet.copy and instead use copy module. - Prefer the 'lxml' module (it uses libxml2) over Python's builtin 'xml' module. - Replace methods ``def foo(x, y):`` with ``def foo(self, other):``. - Replace lists with generators in methods Command.c_*_param_list. - PEP8: Separate all toplevel items with 2 newlines. - PEP8: Fix minor whitespace issues. - PEP8: Replace some ``== None`` with ``is None``. - Replace None-check for --out-dir with add_argument(..., required=True) - Remove 'prog' assignment when calling ArgumentParser(prog=PROG_NAME). Instead, use default value Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2014-06-23util: Rename generated dispatch filesChad Versace1-2/+2
Rename the files "generated_dispatch.[ch]" to "piglit-dispatch-gen.[ch]". They now follow the same filename convention ("piglit-*.[ch]") used by most other files in tests/util. Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2014-06-10util/framework/glut: Auto-detect glutInitErrorFunc support.José Fonseca1-0/+11
Should fix https://bugs.freedesktop.org/show_bug.cgi?id=79745 Tested-by: Vinson Lee <vlee@freedesktop.org> Reviewed-by: Brian Paul <brianp@vmware.com>
2014-05-02cmake: Install under separate piglit directoryJordan Justen1-2/+2
Install paths updated: * $PREFIX/share/doc => $PREFIX/share/doc/piglit * $PREFIX/lib => $PREFIX/lib/piglit/lib * $PREFIX/bin => $PREFIX/lib/piglit/bin * etc... Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
2013-06-17glapi: Add parsing of GLES2/gl2ext.h.Eric Anholt1-0/+1
Weirdly, the gl3ext.h has no entries currently, and to access extensions from GLES3 you need to include this GLES2 header. We now have code-generated piglit-dispatch support for all of desktop, GLES2, and GLES3. v2: Express the corename substitution as a regexp. (suggestion by Paul) Reviewed-by: Paul Berry <stereotype441@gmail.com>
2013-06-17glapi: Parse the GLES3 core header for piglit-dispatch.Eric Anholt1-0/+1
This gets us piglit-dispatch support for all the core functions of GLES2/3. v2: Improve the python-style-ness of the argument parsing code (thanks Paul!) Reviewed-by: Paul Berry <stereotype441@gmail.com>
2013-06-05Include enum.spec along with enumext.spec for piglit-dispatch.Eric Anholt1-0/+1
There are three differences between the two (as verified by sort, sed, uniq, and diff): - enum.spec includes GLES extension enums (since it's used for maintaining uniqueness of enums in the registry), which we want to include for cross-API compatibility. - enum.spec includes some entries for known GL versions and GL extensions. - enumext.spec has a few more synonyms for enums (since it's the file used for generating the official glext.h for desktop). This change only introduces new #define lines to generated-dispatch.h. v2: Make the statement about "only introduces new #define lines" actually true by continuing to emit based on the categories we collected during parsing, except with them defined to '1' instead of '', to match actual glext definitions and what gets autogenerated from enum.ext. Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
2013-05-17Modify the FindOpenCL.make to add the CL lib nameJunyan He1-1/+2
Some OpenCL lib's name is not libOpenCL.so. Some thing like libCL.so, libcl.so may exist, and in these cases the check failed. Add the names to fix this problem. Signed-off-by: Junyan He <junyan.he@linux.intel.com>
2013-02-06cmake: Ensure we use static libraries on Windows.José Fonseca1-1/+1
It would be nice to eventually get dynamic link libraries working with WGL too, but for now ensure that we always do static as intended. This might fix fdo bug 60352.
2013-02-06cmake: Allow to generate a tarball/zip with the binaries, scripts, data.José Fonseca1-0/+3
It doesn't make much sense to package piglit or install on machines, due to the frequency piglit tests are added/changed. However, binary packages are still useful for distributed testing where the binaries are built on one machine, and then passed to (sometimes other teams) for the actual testing. This patch allows one to conveniently generate such packages, simply by doing make package Then one can run piglit by unpacking the package elsewhere, set the PIGLIT_SOURCE_DIR and LD_LIBRARY_PATH accordingly, and run piglit scripts as usual. Reviewed-by: Brian Paul <brianp@vmware.com>
2012-11-29cmake: Support CMakeLists.gles3.txtChad Versace3-1/+13
Add "gles3" as a new api in PIGLIT_TOP/cmake/target_api. Now, you can build GLES3 tests and libraries by placing the build rules in files named CMakeLists.gles3.txt. I dislike the CMake hackery of havining multiple builds for each target api. But, because GLES2 and GLES3 use different headers (gl2.h vs gl3.h), until piglit-dispatch gains support for GLES the most sensible way to add GLES3 support to piglit is to continue the tradition of adding a new target api into PIGLIT_TOP/cmake/target_api. Signed-off-by: Chad Versace <chad.versace@linux.intel.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2012-11-16Fix discovery of OpenCL framework on MacOS.Aaron Watry1-2/+7
Tested on Mac OS 10.7 Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
2012-10-22cmake: Add a PIGLIT_BUILD_GL_TESTS optionAdrian Marius Negreanu1-1/+3
The GL tests were compiled unconditionally. This breaks on systems that dont't have a GL library. Signed-off-by: Adrian Marius Negreanu <adrian.m.negreanu@intel.com> Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
2012-10-09cmake,util: Switch GL tests to use new frameworkChad Versace4-8/+4
- Stop building old framework sources, piglit-framework-{fbo,glut}.c. - Stop building libglut_waffle. - Wire up piglit_gl_test_run() to use the new framework. Reviewed-and-tested-by: Jordan Justen <jordan.l.justen@intel.com> Tested-by: Paul Berry <stereotype441@gmail.com> Acked-by: Eric Anholt <eric@anholt.net> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-10-09cmake: Prefix cmake options and feature macros with PIGLITChad Versace4-13/+13
Some cmake options and features macros had form USE_${feature}, others BUILD_${category}_TESTS. This patch consistently prefixes all such options and macros with PIGLIT. Piglit, be a good code citizen. Namespace your variables. This patch was created with find . -type f | xargs sed -i \ -e 's/\(^\|[^_]\)\(USE_\(GLX\|GLUT\|WAFFLE\|OPENGL\|OPENGL_ES1\|OPENGL_ES2\)\)\($\|[^_]\)/\1PIGLIT_\2\4/g' \ -e 's/\(^\|[^_]\)\(BUILD_\(CL\|GLX\|GLES1\|GLES2\)_TESTS\)\($\|[^_]\)/\1PIGLIT_\2\4/g' \ Reviewed-and-tested-by: Jordan Justen <jordan.l.justen@intel.com> Acked-by: Kenneth Graunke <kenneth@whitecape.org> Tested-by: Paul Berry <stereotype441@gmail.com> Acked-by: Eric Anholt <eric@anholt.net> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-09-05cmake: Build OpenCL utilities and frameworkBlaž Tomažič4-1/+54
Add BUILD_CL_TESTS option to cmake configuration and build OpenCL utilities and framework to library piglitutil_cl. Signed-off-by: Blaž Tomažič <blaz.tomazic@gmail.com>
2012-08-23cmake: Remove unused moudule FindWaffleChad Versace1-43/+0
Now that Piglit uses pkgconfig to find Waffle, this module is no longer used. Signed-off-by: Chad Versace <chad@chad.versace.us>
2012-06-04make: Make util libraries shared in non-windows systemsPauli Nieminen1-1/+5
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@linux.intel.com> Reviewed-by: Chad Versace <chad.versace@linux.intel.com> Acked-by: Kenneth Graunke <kenneth@whitecape.org>
2012-05-23cmake: Use glut_waffle if USE_WAFFLE is enabledChad Versace4-15/+20
For GL tests (those built by CMakeLists.gl.txt), if USE_WAFFLE is enabled then freeglut is replaced with glut_waffle. For GLES1 and GLES2 tests, glut_waffle is now required. Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-05-23cmake: Add module FindWaffleChad Versace1-0/+43
This enables Piglit to call `find_package(Waffle REQUIRED)`. Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Signed-off-by: Chad Versace <chad@chad.versace.us>
2012-05-23cmake: Relocate all GLUT directives into single locationChad Versace1-0/+6
Nearly all CMakeLists.gl.txt contained the following: include_directories(${GLUT_INCLUDE_DIR}) link_libraries(${GLUT_glut_LIBRARY}) This patch relocates them to cmake/target_api/gl/CMakeLists.txt. Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-05-23cmake: Clean up gles{1,2}/CMakeLists.txtChad Versace2-18/+14
Now that there are options to control building the GLES1 and GLES2 tests, there is no need for the 'if' guard in these CMakeLists. Remove the unneeded 'if' guards, and hence a level of indentation. Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-05-23cmake: Add options BUILD_GLES{1,2} tests [v2]Chad Versace1-2/+9
Default value for each is OFF. Before this patch, Piglit automatically built the GLES1 tests if libEGL and libGLESv1_CM were found. Ditto for GLES2 and libGLESv2. If these libraries were installed on the system, it was impossible to disable the tests. This patch adds options to explicitly enable the tests. v2: Fix typo GLES1 -> GLES2. Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com> Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-03-23cmake: Make each *.o depend on generated piglit_dispatch headersChad Versace1-6/+12
Alter the wrapper functions `piglit_add_executable` and `piglit_add_library` to add to each object file a dependency on piglit_dispatch's generated files. This requires that a top-level custom target be created, `piglit_dispatch_gen`, to track that dependency. The result is that updating any files in `piglit_dispatch_gen_inputs` (for example, gl_API.xml) triggers a recompile of all objects. Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-03-23cmake: Define wrapper functions piglit_add_{executable,library}Chad Versace1-0/+26
For now, `piglit_add_executable` is a trivial wrapper around `add_executable`. Ditto for `piglit_add_library`. A subsequent commit will leverage the wrappers to add to each object file an explicit dependency on the header files generated by piglit_dispatch. Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-03-23cmake: Move utility functions into piglit_util.cmakeChad Versace2-23/+49
Currently there is only one utility function, piglit_include_target_api. However, subsequent commits will add several more. I'm choosing to define all the utility functions in their own file, piglit_util.cmake, in order to keep things organized and the top CMakeLists uncluttered. Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
2012-03-23piglit-dispatch: Code generation scripts.Paul Berry2-0/+86
This patch contains the code generation scripts that convert the files gl.spec, gl.tm, and enumext.spec into C code, as well as the CMake directives to run the scripts. Code generation occurs in two phases: first the script glapi/parse_glspec.py converts the .spec and .tm files into an intermediate JSON format, which is stored in glapi/glapi.json. Then, the script tests/util/gen_dispatch.py converts the JSON file into two files, tests/util/generated_dispatch.c and tests/util/generated_dispatch.h. There are two motivations for breaking code generation into two phases: (1) there are other code generation tasks we may add in the future (e.g. generating the tests/util/piglit-util-enum.c file), and it would be nice not to have to rewrite any parsing code when we do so. (2) if the GL consortium ever decides to change the format of gl.spec, gl.tm, and enumext.spec, then we only have to change parse_glspec.py. These code generation scripts can be run by invoking "make piglit_dispatch_gen" from the toplevel source directory. v2: Add clarifying comments, remove a bogus "print" statement, and raise an exception if an unrecognized multiplicity is encountered. Also, handle "reference" multiplicity. v3: Add APIENTRY to stub functions. Rename "near" and "far" to avoid problems on MSVC. Get rid of "__" in function names. Rename initialize_dispatch_pointers => reset_dispatch_pointers. Add gl_10x_version parameter to get_core_proc(). Output generated code relative to CMAKE_BINARY_DIR so that it won't pollute source directories when building out of tree. Add .gitignore so that generated files are ignored when building in tree. Add GL_VERSION_* defines.
2011-09-09cmake: add gles1 as a valid target APIChia-I Wu2-1/+13
This commit adds the infrastructure for writing GLES1 specific tests. Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
2011-02-26cmake: Do not add GLES2 targets if OPENGL_gles2_LIBRARY is not foundChad Versace1-7/+10
Signed-off-by: Chad Versace <chad.versace@intel.com>
2011-02-25glut_egl: Build library glut_eglChad Versace1-4/+6
2011-02-25cmake: Enable building GLES2 targetsChad Versace2-4/+10
Signed-off-by: Chad Versace <chad.versace@intel.com>
2011-02-25cmake: Add function piglit_include_target_apiChad Versace1-0/+47
piglit_include_target_api() facilitates building Piglit with multiple GL targets (for example, GL and GLES2). Note: This belongs to a series that add GLES2 support to Piglit. Signed-off-by: Chad Versace <chad.versace@intel.com>
2011-02-25cmake: Prepare CMake for GL and GLES2 buildsChad Versace4-0/+21
Add two new CMakeLists, /cmake/target_api/{gl,gles2}/CMakeLists.txt, each of which builds Piglit with its respective API. (Of course, gles2/CMakeLists.txt adds no targets because Piglit does not yet support building with GLES2.) The toplevel CMakeLists no longer adds subdirectory /tests; that is now the responsiblity of the API-specific CMakeLists. Note: This belongs to a series that adds GLES2 support to Piglit. Signed-off-by: Chad Versace <chad.versace@intel.com>