1 cmake_minimum_required(VERSION 3.4...3.28)
4 cmake_policy (SET CMP0072 OLD)
7 cmake_policy (SET CMP0148 OLD)
12 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules")
14 INCLUDE (GNUInstallDirs)
15 INCLUDE (CheckCCompilerFlag)
16 INCLUDE (CheckCSourceCompiles)
17 INCLUDE (CheckCXXCompilerFlag)
18 INCLUDE (CheckFunctionExists)
19 INCLUDE (CheckSymbolExists)
20 INCLUDE (CheckIncludeFile)
21 INCLUDE (FindPkgConfig)
23 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
25 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
30 set(DEFAULT_WAFFLE ON)
33 set(DEFAULT_WAYLAND ON)
36 set(DEFAULT_GLES_TESTS_BUILD ON)
37 set(DEFAULT_VK_TESTS_BUILD ON)
43 set(DEFAULT_WAFFLE OFF)
46 set(DEFAULT_WAYLAND OFF)
49 set(DEFAULT_GLES_TESTS_BUILD OFF)
50 set(DEFAULT_VK_TESTS_BUILD OFF)
56 set(DEFAULT_WAFFLE OFF)
59 set(DEFAULT_WAYLAND OFF)
62 set(DEFAULT_GLES_TESTS_BUILD OFF)
63 set(DEFAULT_VK_TESTS_BUILD OFF)
65 message(FATAL_ERROR "Unsupported platform")
68 option(PIGLIT_SSE2 "Build with SSE2 support on 32-bit x86 architecture" ON)
70 option(PIGLIT_USE_WAFFLE "Use Waffle in place of GLUT" ${DEFAULT_WAFFLE})
72 option(PIGLIT_USE_GBM "Use GBM" ${DEFAULT_GBM})
73 option(PIGLIT_USE_WAYLAND "Use Wayland" ${DEFAULT_WAYLAND})
74 option(PIGLIT_USE_X11 "Use X11" ${DEFAULT_X11})
76 option(PIGLIT_BUILD_EGL_TESTS "Build tests that require EGL" ${DEFAULT_EGL})
77 option(PIGLIT_BUILD_GLX_TESTS "Build tests that require GLX" ${DEFAULT_GLX})
78 option(PIGLIT_BUILD_WGL_TESTS "Build tests that require WGL" ${DEFAULT_WGL})
80 option(PIGLIT_BUILD_GL_TESTS "Build tests for OpenGL" ON)
81 option(PIGLIT_BUILD_GLES1_TESTS "Build tests for OpenGL ES1" ${DEFAULT_GLES_TESTS_BUILD})
82 option(PIGLIT_BUILD_GLES2_TESTS "Build tests for OpenGL ES2" ${DEFAULT_GLES_TESTS_BUILD})
83 option(PIGLIT_BUILD_GLES3_TESTS "Build tests for OpenGL ES3" ${DEFAULT_GLES_TESTS_BUILD})
84 option(PIGLIT_BUILD_CL_TESTS "Build tests for OpenCL" OFF)
85 option(PIGLIT_BUILD_VK_TESTS "Build tests for Vulkan" ${DEFAULT_VK_TESTS_BUILD})
87 option(PIGLIT_BUILD_DMA_BUF_TESTS "Build tests that use dma_buf" ${DEFAULT_GBM})
93 add_definitions(-DPIGLIT_HAS_PNG)
96 if(PIGLIT_BUILD_GLX_TESTS AND NOT PIGLIT_USE_X11)
97 message(FATAL_ERROR "X11 has to be enabled for GLX to build")
100 if(PIGLIT_BUILD_DMA_BUF_TESTS AND NOT PIGLIT_USE_GBM)
101 message(FATAL_ERROR "PIGLIT_BUILD_DMA_BUF_TESTS require GBM")
104 if(PIGLIT_BUILD_EGL_TESTS AND NOT PIGLIT_USE_WAFFLE)
105 message(FATAL_ERROR "Waffle has to be enabled for EGL tests to build")
109 find_package(X11 REQUIRED)
110 set(PIGLIT_HAS_X11 True)
111 add_definitions(-DPIGLIT_HAS_X11)
114 if(PIGLIT_BUILD_GL_TESTS)
115 find_package(OpenGL REQUIRED)
118 if(PIGLIT_USE_WAFFLE)
120 pkg_check_modules(Waffle REQUIRED waffle-1)
123 message(FATAL_ERROR "Failed to find Waffle. If Waffle "
124 "is not packaged for your distribution, you can get "
125 "it at https://gitlab.freedesktop.org/mesa/waffle."
129 # Check the installed waffle version.
131 # We cannot reliably check the version with pkg_check_modules(), but
132 # instead must check the version manually as below. The problem is that,
133 # if one passes a required version to pkg_check_modules(), CMake
134 # validates the required version at most once for the lifetime of the
135 # source tree. If someone changes the required version by editing the
136 # CMakeLists, CMake fails to detect the new requirement.
137 set(Waffle_REQUIRED_VERSION "1.6.0")
138 if(Waffle_VERSION VERSION_LESS Waffle_REQUIRED_VERSION)
139 message(FATAL_ERROR "Found waffle-${Waffle_VERSION}, but "
140 "piglit requires waffle-${Waffle_REQUIRED_VERSION}")
143 find_path(Waffle_INCLUDE_DIRS waffle.h)
144 find_library(Waffle_LDFLAGS waffle-1)
145 if(Waffle_INCLUDE_DIRS AND Waffle_LDFLAGS)
146 set(Waffle_FOUND TRUE)
148 message(FATAL_ERROR "Failed to find Waffle. Get and build Waffle from "
149 "https://gitlab.freedesktop.org/mesa/waffle and set "
150 "Waffle_INCLUDE_DIRS and Waffle_LDFLAGS variables accordingly."
155 add_definitions(-DPIGLIT_USE_WAFFLE)
156 add_definitions(-DWAFFLE_API_VERSION=0x0103)
158 find_package(GLUT REQUIRED)
159 endif(PIGLIT_USE_WAFFLE)
161 if(PIGLIT_BUILD_GLES1_TESTS AND (NOT PIGLIT_USE_WAFFLE OR NOT PIGLIT_BUILD_EGL_TESTS))
162 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES1_TESTS requires EGL and PIGLIT_USE_WAFFLE")
164 if(PIGLIT_BUILD_GLES2_TESTS AND (NOT PIGLIT_USE_WAFFLE OR NOT PIGLIT_BUILD_EGL_TESTS))
165 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES2_TESTS requires EGL and PIGLIT_USE_WAFFLE")
167 if(PIGLIT_BUILD_GLES3_TESTS AND (NOT PIGLIT_USE_WAFFLE OR NOT PIGLIT_BUILD_EGL_TESTS))
168 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES3_TESTS requires EGL and PIGLIT_USE_WAFFLE")
171 if(PIGLIT_BUILD_CL_TESTS)
172 find_package(OpenCL 1.2 REQUIRED)
173 endif(PIGLIT_BUILD_CL_TESTS)
177 pkg_check_modules(GBM REQUIRED gbm>=17.1)
178 set(PIGLIT_HAS_GBM True)
179 add_definitions(-DPIGLIT_HAS_GBM)
180 set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GBM_LIBRARIES})
182 CHECK_FUNCTION_EXISTS(gbm_bo_map PIGLIT_HAS_GBM_BO_MAP)
183 if (PIGLIT_HAS_GBM_BO_MAP)
184 add_definitions(-DPIGLIT_HAS_GBM_BO_MAP)
187 CHECK_FUNCTION_EXISTS(gbm_bo_get_fd_for_plane PIGLIT_HAS_GBM_BO_GET_FD_FOR_PLANE)
188 if (PIGLIT_HAS_GBM_BO_GET_FD_FOR_PLANE)
189 add_definitions(-DPIGLIT_HAS_GBM_BO_GET_FD_FOR_PLANE)
193 if(PIGLIT_USE_WAYLAND)
194 pkg_check_modules(WAYLAND REQUIRED wayland-client)
195 set(PIGLIT_HAS_WAYLAND True)
196 add_definitions(-DPIGLIT_HAS_WAYLAND)
197 include_directories(${WAYLAND_INCLUDE_DIRS})
199 FIND_LIBRARY(HAVE_XKBCOMMON NAMES xkbcommon)
200 if(NOT HAVE_XKBCOMMON)
201 message(FATAL_ERROR "Wayland support requires xkbcommon. "
202 "Failed to find xkbcommon library.")
204 pkg_check_modules(XKBCOMMON QUIET xkbcommon)
207 if(PIGLIT_USE_X11 AND OPENGL_gl_LIBRARY AND PIGLIT_BUILD_GLX_TESTS)
208 set(PIGLIT_HAS_GLX True)
209 add_definitions(-DPIGLIT_HAS_GLX)
212 if(PIGLIT_BUILD_WGL_TESTS)
213 set(PIGLIT_HAS_WGL True)
214 add_definitions(-DPIGLIT_HAS_WGL)
217 IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
218 pkg_check_modules(LIBDRM QUIET libdrm)
219 pkg_check_modules(XCB QUIET xcb)
220 pkg_check_modules(XCB_DRI2 QUIET xcb-dri2)
221 pkg_check_modules(GLPROTO QUIET glproto)
222 pkg_check_modules(LIBVULKAN QUIET vulkan)
225 if(PIGLIT_BUILD_VK_TESTS)
226 if (NOT LIBVULKAN_FOUND)
227 message(FATAL_ERROR "libvulkan required by vulkan tests not found")
230 find_program(GLSLANG_VALIDATOR NAMES glslangValidator)
232 if (NOT GLSLANG_VALIDATOR)
233 message(FATAL_ERROR "glslangValidator required by vulkan tests not found")
235 endif(PIGLIT_BUILD_VK_TESTS)
237 # Choose to build tests that use dma_buf.
239 # Piglit's dma_buf utilities require xcb-dri2 to gain DRM authentication, and
240 # gbm_bo_map() to be available for generating dma_bufs, and libdrm for fourcc
243 if(PIGLIT_BUILD_DMA_BUF_TESTS)
244 if(PIGLIT_HAS_GBM_BO_MAP AND LIBDRM_FOUND AND LIBDRM_VERSION VERSION_GREATER "2.4.97" AND XCB_DRI2_FOUND)
245 set(PIGLIT_BUILD_DMA_BUF_TESTS_IS_VALID true)
248 "PIGLIT_BUILD_DMA_BUF_TESTS require libdrm, "
249 "gbm_bo_map(), libdrm>=2.4.98 and xcb-dri2")
250 set(PIGLIT_BUILD_DMA_BUF_TESTS_IS_VALID false)
254 IF(PIGLIT_BUILD_GLX_TESTS)
255 pkg_check_modules(GLPROTO REQUIRED glproto)
258 if (NOT Python_ADDITIONAL_VERSIONS)
259 set(Python_ADDITIONAL_VERSIONS 3.12 3.11 3.10 3.9 3.8 3.7 3.6)
261 find_package(PythonInterp REQUIRED)
262 find_package(PythonNumpy 1.7.0 REQUIRED)
263 find_package(PythonMako 1.0.2 REQUIRED)
265 pkg_search_module(BASH_COMPLETION bash-completion)
267 # Default to compiling with debug information (`gcc -g`):
268 if(NOT CMAKE_BUILD_TYPE)
269 SET(CMAKE_BUILD_TYPE Debug CACHE STRING
270 "May be one of: None Debug RelWithDebInfo Release MinSizeRel" FORCE)
271 endif(NOT CMAKE_BUILD_TYPE)
274 if (PIGLIT_SSE2 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)")
275 # enables SSE2 and precision used on x86-64 by default
276 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mfpmath=sse")
277 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mfpmath=sse")
279 # degrade performance a bit, but enforce required precision
280 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffloat-store")
281 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffloat-store")
283 CHECK_C_COMPILER_FLAG("-Wall" C_COMPILER_FLAG_WALL)
284 IF (C_COMPILER_FLAG_WALL)
285 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
286 ENDIF (C_COMPILER_FLAG_WALL)
287 CHECK_CXX_COMPILER_FLAG("-Wall" CXX_COMPILER_FLAG_WALL)
288 IF (CXX_COMPILER_FLAG_WALL)
289 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
290 ENDIF (CXX_COMPILER_FLAG_WALL)
292 # Target C99. GCC's default is gnu11 for 5.0 and newer, gnu89 for
294 check_c_compiler_flag ("-std=gnu99" C_COMPILER_FLAG_STD_GNU99)
295 if (C_COMPILER_FLAG_STD_GNU99)
296 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
298 # MSVC does not support C99 variable length arrays
299 CHECK_C_COMPILER_FLAG("-Werror=vla" C_COMPILER_FLAG_WEVLA)
300 IF (C_COMPILER_FLAG_WEVLA)
301 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=vla")
303 # GCC allows void pointer arithmetic, but it is not part of ISO C and
304 # in particular MSVC will throw `C2036: 'void *' : unknown size`
305 check_c_compiler_flag ("-Werror=pointer-arith" C_COMPILER_FLAG_WEPOINTER_ARITH)
306 if (C_COMPILER_FLAG_WEPOINTER_ARITH)
307 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=pointer-arith")
309 # MSVC only supports C99 variadic macros. It doesn't support the
310 # non-standard GNU named variadic macro syntax that's documented in
311 # https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
313 # XXX: on older GCC version this option has no effect unless -Wpedantic
314 # is set, but this should be fixed on future GCC versions, per
315 # https://gcc.gnu.org/ml/gcc-patches/2014-04/msg01459.html
316 check_c_compiler_flag ("-Werror=variadic-macros" C_COMPILER_FLAG_WVARIADIC_MACROS)
317 if (C_COMPILER_FLAG_WVARIADIC_MACROS)
318 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=variadic-macros")
321 CHECK_CXX_COMPILER_FLAG("-Wno-narrowing" CXX_COMPILER_FLAG_WNO_NARROWING)
322 IF (CXX_COMPILER_FLAG_WNO_NARROWING)
323 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing")
324 ENDIF (CXX_COMPILER_FLAG_WNO_NARROWING)
327 add_definitions (-W3)
328 add_definitions (-wd4018) # signed/unsigned mismatch
329 add_definitions (-wd4244) # conversion from 'type1' to 'type2', possible loss of data
330 add_definitions (-wd4305) # truncation from 'type1' to 'type2'
331 add_definitions (-wd4800) # forcing value to bool 'true' or 'false' (performance warning)
333 add_definitions (-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS)
334 add_definitions (-D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
338 # Match MSVC default stack size
339 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,1048576")
342 if (${CMAKE_C_COMPILER_ID} STREQUAL "SunPro")
343 # Use C++ to link C files.
344 # http://developers.sun.com/solaris/articles/mixing.html#linking
345 # Modified rule from Modules/CMakeCInformation.cmake.
346 set (CMAKE_C_LINK_EXECUTABLE
347 "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
350 # Always enable GNU C extensions. Non-GNU platforms will need to
351 # define wrappers for them.
352 add_definitions(-D_GNU_SOURCE)
355 # MSVC & MinGW only define & use APIENTRY
356 add_definitions (-DGLAPIENTRY=__stdcall)
358 # Avoid namespace pollution when including windows.h
359 # http://support.microsoft.com/kb/166474
360 add_definitions (-DWIN32_LEAN_AND_MEAN=1)
362 # Don't define min/max macros
363 add_definitions (-DNOMINMAX)
365 # Even more no min/max macros
366 add_definitions (-D_CRT_DECLARE_NONSTDC_NAMES=0)
368 # Define M_PI and others
369 add_definitions (-D_USE_MATH_DEFINES)
373 # Don't warn about using deprecated OpenGL/GLUT functions.
374 # TODO: It would be nice to silence just the deprecation macros from
375 # OpenGLAvailability.h as opposed to all deprecated functions.
376 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
377 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
380 if (PIGLIT_BUILD_GL_TESTS)
382 find_path(GLEXT_INCLUDE_DIR
384 PATHS ${OPENGL_INCLUDE_DIR}
385 DOC "Include for OpenGL/glext.h on OSX"
388 find_path(GLEXT_INCLUDE_DIR
390 PATHS ${OPENGL_INCLUDE_DIR}
391 DOC "Include for GL/glext.h"
396 if(CMAKE_USE_PTHREADS_INIT)
397 set(PIGLIT_HAS_PTHREADS true)
398 add_definitions(-DPIGLIT_HAS_PTHREADS)
401 FIND_LIBRARY(HAVE_LIBRT NAMES rt)
403 set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} rt)
406 check_c_source_compiles(
408 #define _POSIX_C_SOURCE 199309L
410 int main() { return clock_gettime(CLOCK_MONOTONIC, NULL); }
412 PIGLIT_HAS_POSIX_CLOCK_MONOTONIC
415 if(PIGLIT_HAS_PTHREADS AND PIGLIT_HAS_POSIX_CLOCK_MONOTONIC)
416 check_c_source_compiles(
420 static void timeout(union sigval val) { }
422 struct sigevent sev = {
423 .sigev_notify = SIGEV_THREAD,
424 .sigev_notify_function = timeout,
427 return timer_create(CLOCK_MONOTONIC, &sev, &timerid);
430 PIGLIT_HAS_POSIX_TIMER_NOTIFY_THREAD
434 set(CMAKE_REQUIRED_LIBRARIES)
436 if(PIGLIT_HAS_POSIX_CLOCK_MONOTONIC)
437 add_definitions(-DPIGLIT_HAS_POSIX_CLOCK_MONOTONIC)
440 if(PIGLIT_HAS_POSIX_TIMER_NOTIFY_THREAD)
441 add_definitions(-DPIGLIT_HAS_POSIX_TIMER_NOTIFY_THREAD)
445 FIND_LIBRARY(HAVE_LIBCACA NAMES caca)
447 set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} caca)
448 add_definitions(-DPIGLIT_HAS_LIBCACA)
452 if(PIGLIT_BUILD_EGL_TESTS)
453 pkg_check_modules(EGL REQUIRED egl)
454 set(PIGLIT_HAS_EGL True)
455 add_definitions(-DPIGLIT_HAS_EGL)
456 include_directories(${EGL_INCLUDE_DIRS})
457 add_definitions (${EGL_CFLAGS_OTHER})
460 # Put all executables into the bin subdirectory
461 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${piglit_BINARY_DIR}/bin)
462 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${piglit_BINARY_DIR}/lib)
464 # Do the same for MSVC, regardless of the build type. This only works correctly
465 # for CMake 2.8.1 and above.
466 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${piglit_BINARY_DIR}/bin)
467 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${piglit_BINARY_DIR}/bin)
468 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${piglit_BINARY_DIR}/bin)
469 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${piglit_BINARY_DIR}/bin)
471 check_function_exists(asprintf HAVE_ASPRINTF)
472 check_function_exists(ffs HAVE_FFS)
473 check_function_exists(strchrnul HAVE_STRCHRNUL)
474 check_function_exists(strndup HAVE_STRNDUP)
476 check_function_exists(fopen_s HAVE_FOPEN_S)
478 check_function_exists(setrlimit HAVE_SETRLIMIT)
480 check_symbol_exists(htobe32 "endian.h" HAVE_HTOBE32)
481 check_symbol_exists(htole16 "endian.h" HAVE_HTOLE16)
482 check_symbol_exists(htole32 "endian.h" HAVE_HTOLE32)
483 check_symbol_exists(htole64 "endian.h" HAVE_HTOLE64)
485 check_include_file(sys/time.h HAVE_SYS_TIME_H)
486 check_include_file(sys/types.h HAVE_SYS_TYPES_H)
487 check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H)
488 check_include_file(sys/stat.h HAVE_SYS_STAT_H)
489 check_include_file(unistd.h HAVE_UNISTD_H)
490 check_include_file(fcntl.h HAVE_FCNTL_H)
491 check_include_file(linux/sync_file.h HAVE_LINUX_SYNC_FILE_H)
492 check_include_file(endian.h HAVE_ENDIAN_H)
493 check_include_file(libgen.h HAVE_LIBGEN_H)
495 if(DEFINED PIGLIT_INSTALL_VERSION)
496 set(PIGLIT_INSTALL_VERSION_SUFFIX
497 "-${PIGLIT_INSTALL_VERSION}")
499 set(PIGLIT_INSTALL_VERSION_SUFFIX "")
501 set(PIGLIT_INSTALL_LIBDIR
502 "${CMAKE_INSTALL_LIBDIR}/piglit${PIGLIT_INSTALL_VERSION_SUFFIX}")
503 if(NOT IS_ABSOLUTE ${PIGLIT_INSTALL_LIBDIR})
504 set(PIGLIT_INSTALL_FULL_LIBDIR "${CMAKE_INSTALL_PREFIX}/${PIGLIT_INSTALL_LIBDIR}")
506 set(PIGLIT_INSTALL_FULL_LIBDIR "${PIGLIT_INSTALL_LIBDIR}")
509 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
510 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--enable-new-dtags")
511 endif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
513 SET(CMAKE_INSTALL_RPATH "${PIGLIT_INSTALL_FULL_LIBDIR}/lib")
516 "${piglit_SOURCE_DIR}/tests/util/config.h.in"
517 "${piglit_BINARY_DIR}/tests/util/config.h"
520 include(cmake/piglit_util.cmake)
521 include(cmake/piglit_dispatch.cmake)
523 include_directories(src)
524 add_subdirectory(cmake/target_api)
525 add_subdirectory(generated_tests)
526 add_subdirectory(replayer)
529 ##############################################################################
537 DESTINATION share/doc/piglit${PIGLIT_INSTALL_VERSION_SUFFIX}
542 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
543 FILES_MATCHING PATTERN "*.py"
548 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
553 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
554 FILES_MATCHING REGEX ".*\\.(xml|xml.gz|py|program_test|shader_test|shader_source|frag|vert|geom|tesc|tese|comp|spv|ktx|cl|txt|inc|vk_shader_test)$"
555 REGEX "CMakeFiles|CMakeLists|serializer.py|opengl.py|cl.py|quick_gl.py|glslparser.py|shader.py|quick_shader.py|no_error.py|llvmpipe_gl.py|sanity.py" EXCLUDE
559 DIRECTORY ${CMAKE_BINARY_DIR}/tests
560 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
561 FILES_MATCHING REGEX ".*\\.xml.gz"
565 DIRECTORY ${CMAKE_BINARY_DIR}/generated_tests
566 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
567 FILES_MATCHING REGEX ".*\\.(shader_test|program_test|frag|vert|geom|tesc|tese|comp|cl|txt|vk_shader_test)$"
568 REGEX "CMakeFiles|CMakeLists" EXCLUDE
572 DIRECTORY generated_tests
573 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
574 FILES_MATCHING REGEX ".*\\.inc$"
575 REGEX "CMakeFiles|CMakeLists" EXCLUDE
578 if (BASH_COMPLETION_FOUND)
579 pkg_get_variable(BASH_COMPLETION_COMPLETIONSDIR bash-completion completionsdir)
581 if(NOT "${BASH_COMPLETION_PREFIX}" STREQUAL "${CMAKE_INSTALL_PREFIX}")
582 string(REGEX REPLACE "^${BASH_COMPLETION_PREFIX}" "${CMAKE_INSTALL_PREFIX}" COMP_DIR ${BASH_COMPLETION_COMPLETIONSDIR})
583 set(BASH_COMPLETION_COMPLETIONSDIR ${COMP_DIR})
588 FILES completions/bash/piglit
589 DESTINATION ${BASH_COMPLETION_COMPLETIONSDIR}
591 endif (BASH_COMPLETION_FOUND)
594 set (PYTHON_SUFFIX ".py")
596 set (PYTHON_SUFFIX "")
599 PROGRAMS piglit RENAME piglit${PIGLIT_INSTALL_VERSION_SUFFIX}${PYTHON_SUFFIX}
600 DESTINATION ${CMAKE_INSTALL_BINDIR}
603 # Install MinGW runtime DLLs
605 if (CMAKE_SIZEOF_VOID_P EQUAL 8)
606 set (LIBGCC_DLL_NAME libgcc_s_seh-1.dll)
608 set (LIBGCC_DLL_NAME libgcc_s_sjlj-1.dll)
611 COMMAND ${CMAKE_C_COMPILER} -print-file-name=${LIBGCC_DLL_NAME}
612 OUTPUT_STRIP_TRAILING_WHITESPACE
613 OUTPUT_VARIABLE LIBGCC_DLL
616 COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=libstdc++-6.dll
617 OUTPUT_STRIP_TRAILING_WHITESPACE
618 OUTPUT_VARIABLE LIBSTDCXX_DLL
620 if (EXISTS ${LIBGCC_DLL})
621 message (STATUS "Found libgcc DLL: ${LIBGCC_DLL}")
622 install (FILES ${LIBGCC_DLL} DESTINATION ${PIGLIT_INSTALL_LIBDIR}/bin)
624 if (EXISTS ${LIBSTDCXX_DLL})
625 message (STATUS "Found libstdc++ DLL: ${LIBSTDCXX_DLL}")
626 install (FILES ${LIBSTDCXX_DLL} DESTINATION ${PIGLIT_INSTALL_LIBDIR}/bin)
630 # Install Waffle DLL if specified
631 if (WIN32 AND Waffle_DLL)
632 install (FILES ${Waffle_DLL} DESTINATION ${PIGLIT_INSTALL_LIBDIR}/bin)
636 set (CPACK_PACKAGE_VERSION_MAJOR "1")
637 set (CPACK_PACKAGE_VERSION_MINOR "0")
639 # Use current date in YYYYMMDD format as patch number
641 COMMAND ${PYTHON_EXECUTABLE} -c "import time, sys; sys.stdout.write(time.strftime('%Y%m%d'))"
642 OUTPUT_VARIABLE CPACK_PACKAGE_VERSION_PATCH
645 # cpack mistakenly detects Mingw-w64 as win32
647 if (CMAKE_SIZEOF_VOID_P EQUAL 8)
648 set (CPACK_SYSTEM_NAME win64)
652 # See http://www.vtk.org/Wiki/CMake:CPackPackageGenerators
654 set (CPACK_GENERATOR "7Z")
655 set (CPACK_STRIP_FILES ON)
657 set (CPACK_GENERATOR "TBZ2")