1 cmake_minimum_required(VERSION 3.2)
3 # http://www.cmake.org/cmake/help/v3.0/policy/CMP0042.html
5 cmake_policy (SET CMP0042 NEW)
9 cmake_policy (SET CMP0072 OLD)
14 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules")
16 INCLUDE (GNUInstallDirs)
17 INCLUDE (CheckCCompilerFlag)
18 INCLUDE (CheckCSourceCompiles)
19 INCLUDE (CheckCXXCompilerFlag)
20 INCLUDE (CheckFunctionExists)
21 INCLUDE (CheckSymbolExists)
22 INCLUDE (CheckIncludeFile)
23 INCLUDE (FindPkgConfig)
25 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
30 add_definitions(-DPIGLIT_HAS_PNG)
34 set(PIGLIT_HAS_X11 True)
35 add_definitions(-DPIGLIT_HAS_X11)
38 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
39 set(PIGLIT_BUILD_GLES_TESTS_DEFAULT ON)
40 set(PIGLIT_BUILD_VK_TESTS_DEFAULT ON)
42 set(PIGLIT_BUILD_GLES_TESTS_DEFAULT OFF)
43 set(PIGLIT_BUILD_VK_TESTS_DEFAULT OFF)
46 option(PIGLIT_SSE2 "Build with SSE2 support on 32-bit x86 architecture" ON)
48 option(PIGLIT_BUILD_GL_TESTS "Build tests for OpenGL" ON)
49 option(PIGLIT_BUILD_GLES1_TESTS "Build tests for OpenGL ES1" ${PIGLIT_BUILD_GLES_TESTS_DEFAULT})
50 option(PIGLIT_BUILD_GLES2_TESTS "Build tests for OpenGL ES2" ${PIGLIT_BUILD_GLES_TESTS_DEFAULT})
51 option(PIGLIT_BUILD_GLES3_TESTS "Build tests for OpenGL ES3" ${PIGLIT_BUILD_GLES_TESTS_DEFAULT})
52 option(PIGLIT_BUILD_CL_TESTS "Build tests for OpenCL" OFF)
53 option(PIGLIT_BUILD_VK_TESTS "Build tests for Vulkan" ${PIGLIT_BUILD_VK_TESTS_DEFAULT})
55 if(PIGLIT_BUILD_GL_TESTS)
56 find_package(OpenGL REQUIRED)
59 if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
60 option(PIGLIT_USE_WAFFLE "Use Waffle in place of GLUT" ON)
62 option(PIGLIT_USE_WAFFLE "Use Waffle in place of GLUT" OFF)
67 pkg_check_modules(Waffle REQUIRED waffle-1)
70 message(FATAL_ERROR "Failed to find Waffle. If Waffle "
71 "is not packaged for your distribution, you can get "
72 "it at https://gitlab.freedesktop.org/mesa/waffle."
76 # Check the installed waffle version.
78 # We cannot reliably check the version with pkg_check_modules(), but
79 # instead must check the version manually as below. The problem is that,
80 # if one passes a required version to pkg_check_modules(), CMake
81 # validates the required version at most once for the lifetime of the
82 # source tree. If someone changes the required version by editing the
83 # CMakeLists, CMake fails to detect the new requirement.
84 set(Waffle_REQUIRED_VERSION "1.6.0")
85 if(Waffle_VERSION VERSION_LESS Waffle_REQUIRED_VERSION)
86 message(FATAL_ERROR "Found waffle-${Waffle_VERSION}, but "
87 "piglit requires waffle-${Waffle_REQUIRED_VERSION}")
90 find_path(Waffle_INCLUDE_DIRS waffle.h)
91 find_library(Waffle_LDFLAGS waffle-1)
92 if(Waffle_INCLUDE_DIRS AND Waffle_LDFLAGS)
93 set(Waffle_FOUND TRUE)
95 message(FATAL_ERROR "Failed to find Waffle. Get and build Waffle from "
96 "https://gitlab.freedesktop.org/mesa/waffle and set "
97 "Waffle_INCLUDE_DIRS and Waffle_LDFLAGS variables accordingly."
102 add_definitions(-DPIGLIT_USE_WAFFLE)
103 add_definitions(-DWAFFLE_API_VERSION=0x0103)
105 find_package(GLUT REQUIRED)
107 # The 'REQUIRED' above correctly produces an error for
108 # OpenGL, but there's a bug involving FindGLUT.cmake
109 # that fails to produce the error as of CMake 2.8.5.
111 # Instead, CMake keeps going and eventually spams
112 # the console with a message for every target that used
113 # e.g. the ${GLUT_INCLUDE_DIR} variable. So it
114 # prints a line for basically every single test in piglit.
116 # Work around the bug and error out quickly here instead.
118 message(FATAL_ERROR "GLUT library not found")
120 endif(PIGLIT_USE_WAFFLE)
122 if(PIGLIT_BUILD_GLES1_TESTS AND NOT PIGLIT_USE_WAFFLE)
123 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES1_TESTS requires PIGLIT_USE_WAFFLE")
124 endif(PIGLIT_BUILD_GLES1_TESTS AND NOT PIGLIT_USE_WAFFLE)
126 if(PIGLIT_BUILD_GLES2_TESTS AND NOT PIGLIT_USE_WAFFLE)
127 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES2_TESTS requires PIGLIT_USE_WAFFLE")
128 endif(PIGLIT_BUILD_GLES2_TESTS AND NOT PIGLIT_USE_WAFFLE)
130 if(PIGLIT_BUILD_GLES3_TESTS AND NOT PIGLIT_USE_WAFFLE)
131 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES3_TESTS requires PIGLIT_USE_WAFFLE")
132 endif(PIGLIT_BUILD_GLES3_TESTS AND NOT PIGLIT_USE_WAFFLE)
134 if(PIGLIT_BUILD_CL_TESTS)
135 find_package(OpenCL 1.2 REQUIRED)
136 endif(PIGLIT_BUILD_CL_TESTS)
138 IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
139 if(X11_FOUND AND OPENGL_gl_LIBRARY AND PIGLIT_BUILD_GLX_TESTS)
140 set(PIGLIT_HAS_GLX True)
141 add_definitions(-DPIGLIT_HAS_GLX)
144 pkg_check_modules(GBM QUIET gbm>=17.1)
146 set(PIGLIT_HAS_GBM True)
147 add_definitions(-DPIGLIT_HAS_GBM)
148 set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${GBM_LIBRARIES})
149 CHECK_FUNCTION_EXISTS(gbm_bo_map PIGLIT_HAS_GBM_BO_MAP)
150 if (PIGLIT_HAS_GBM_BO_MAP)
151 add_definitions(-DPIGLIT_HAS_GBM_BO_MAP)
153 CHECK_FUNCTION_EXISTS(gbm_bo_get_fd_for_plane PIGLIT_HAS_GBM_BO_GET_FD_FOR_PLANE)
154 if (PIGLIT_HAS_GBM_BO_GET_FD_FOR_PLANE)
155 add_definitions(-DPIGLIT_HAS_GBM_BO_GET_FD_FOR_PLANE)
159 pkg_check_modules(WAYLAND QUIET wayland-client)
161 set(PIGLIT_HAS_WAYLAND True)
162 add_definitions(-DPIGLIT_HAS_WAYLAND)
164 FIND_LIBRARY(HAVE_XKBCOMMON NAMES xkbcommon)
165 if(NOT HAVE_XKBCOMMON)
166 message(FATAL_ERROR "Wayland support requires xkbcommon. "
167 "Failed to find xkbcommon library.")
169 pkg_check_modules(XKBCOMMON QUIET xkbcommon)
172 pkg_check_modules(LIBDRM QUIET libdrm)
173 pkg_check_modules(XCB QUIET xcb)
174 pkg_check_modules(XCB_DRI2 QUIET xcb-dri2)
175 pkg_check_modules(GLPROTO QUIET glproto)
176 pkg_check_modules(LIBVULKAN QUIET vulkan)
177 ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
178 if (PIGLIT_USE_WAFFLE)
179 set(PIGLIT_HAS_WGL True)
180 add_definitions(-DPIGLIT_HAS_WGL)
184 if(PIGLIT_BUILD_VK_TESTS)
186 if (NOT LIBVULKAN_FOUND)
187 message(FATAL_ERROR "libvulkan required by vulkan tests not found")
190 find_program(GLSLANG_VALIDATOR NAMES glslangValidator)
192 if (NOT GLSLANG_VALIDATOR)
193 message(FATAL_ERROR "glslangValidator required by vulkan tests not found")
196 endif(PIGLIT_BUILD_VK_TESTS)
199 option(PIGLIT_BUILD_GLX_TESTS "Build tests that require GLX" ON)
201 option(PIGLIT_BUILD_GLX_TESTS "Build tests that require GLX" OFF)
205 option(PIGLIT_BUILD_WGL_TESTS "Build tests that require WGL" ON)
207 option(PIGLIT_BUILD_WGL_TESTS "Build tests that require WGL" OFF)
211 # Choose to build tests that use dma_buf.
213 # Piglit's dma_buf utilities require xcb-dri2 to gain DRM authentication, and
214 # gbm_bo_map() to be available for generating dma_bufs, and libdrm for fourcc
217 if(LIBDRM_FOUND AND LIBDRM_VERSION VERSION_GREATER "2.4.97" AND XCB_DRI2_FOUND AND PIGLIT_HAS_GBM_BO_MAP)
218 set(PIGLIT_BUILD_DMA_BUF_TESTS_IS_VALID true)
220 set(PIGLIT_BUILD_DMA_BUF_TESTS_IS_VALID false)
223 if(PIGLIT_BUILD_DMA_BUF_TESTS_IS_VALID)
224 option(PIGLIT_BUILD_DMA_BUF_TESTS "Build tests that use dma_buf" ON)
226 option(PIGLIT_BUILD_DMA_BUF_TESTS "Build tests that use dma_buf" OFF)
229 # If the users has updated PIGLIT_BUILD_DMA_BUF_TESTS in the CMakeCache, then
230 # we need to validate it.
231 if(PIGLIT_BUILD_DMA_BUF_TESTS AND NOT PIGLIT_BUILD_DMA_BUF_TESTS_IS_VALID)
233 "PIGLIT_BUILD_DMA_BUF_TESTS require libdrm, "
234 "gbm_bo_map(), libdrm>=2.4.98 and xcb-dri2")
237 IF(PIGLIT_BUILD_GLX_TESTS)
238 pkg_check_modules(GLPROTO REQUIRED glproto)
241 if (NOT Python_ADDITIONAL_VERSIONS)
242 set(Python_ADDITIONAL_VERSIONS 3.11 3.10 3.9 3.8 3.7 3.6)
244 find_package(PythonInterp REQUIRED)
245 find_package(PythonNumpy 1.7.0 REQUIRED)
246 find_package(PythonMako 1.0.2 REQUIRED)
248 find_package(bash-completion NO_MODULE)
250 # Default to compiling with debug information (`gcc -g`):
251 if(NOT CMAKE_BUILD_TYPE)
252 SET(CMAKE_BUILD_TYPE Debug CACHE STRING
253 "May be one of: None Debug RelWithDebInfo Release MinSizeRel" FORCE)
254 endif(NOT CMAKE_BUILD_TYPE)
257 if (PIGLIT_SSE2 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)")
258 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2 -mfpmath=sse")
259 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2 -mfpmath=sse")
261 CHECK_C_COMPILER_FLAG("-Wall" C_COMPILER_FLAG_WALL)
262 IF (C_COMPILER_FLAG_WALL)
263 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
264 ENDIF (C_COMPILER_FLAG_WALL)
265 CHECK_CXX_COMPILER_FLAG("-Wall" CXX_COMPILER_FLAG_WALL)
266 IF (CXX_COMPILER_FLAG_WALL)
267 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
268 ENDIF (CXX_COMPILER_FLAG_WALL)
270 # Target C99. GCC's default is gnu11 for 5.0 and newer, gnu89 for
272 check_c_compiler_flag ("-std=gnu99" C_COMPILER_FLAG_STD_GNU99)
273 if (C_COMPILER_FLAG_STD_GNU99)
274 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
276 # MSVC does not support C99 variable length arrays
277 CHECK_C_COMPILER_FLAG("-Werror=vla" C_COMPILER_FLAG_WEVLA)
278 IF (C_COMPILER_FLAG_WEVLA)
279 SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=vla")
281 # GCC allows void pointer arithmetic, but it is not part of ISO C and
282 # in particular MSVC will throw `C2036: 'void *' : unknown size`
283 check_c_compiler_flag ("-Werror=pointer-arith" C_COMPILER_FLAG_WEPOINTER_ARITH)
284 if (C_COMPILER_FLAG_WEPOINTER_ARITH)
285 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=pointer-arith")
287 # MSVC only supports C99 variadic macros. It doesn't support the
288 # non-standard GNU named variadic macro syntax that's documented in
289 # https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
291 # XXX: on older GCC version this option has no effect unless -Wpedantic
292 # is set, but this should be fixed on future GCC versions, per
293 # https://gcc.gnu.org/ml/gcc-patches/2014-04/msg01459.html
294 check_c_compiler_flag ("-Werror=variadic-macros" C_COMPILER_FLAG_WVARIADIC_MACROS)
295 if (C_COMPILER_FLAG_WVARIADIC_MACROS)
296 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=variadic-macros")
299 CHECK_CXX_COMPILER_FLAG("-Wno-narrowing" CXX_COMPILER_FLAG_WNO_NARROWING)
300 IF (CXX_COMPILER_FLAG_WNO_NARROWING)
301 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing")
302 ENDIF (CXX_COMPILER_FLAG_WNO_NARROWING)
305 add_definitions (-W3)
306 add_definitions (-wd4018) # signed/unsigned mismatch
307 add_definitions (-wd4244) # conversion from 'type1' to 'type2', possible loss of data
308 add_definitions (-wd4305) # truncation from 'type1' to 'type2'
309 add_definitions (-wd4800) # forcing value to bool 'true' or 'false' (performance warning)
311 add_definitions (-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS)
312 add_definitions (-D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
316 # Match MSVC default stack size
317 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,1048576")
320 if (${CMAKE_C_COMPILER_ID} STREQUAL "SunPro")
321 # Use C++ to link C files.
322 # http://developers.sun.com/solaris/articles/mixing.html#linking
323 # Modified rule from Modules/CMakeCInformation.cmake.
324 set (CMAKE_C_LINK_EXECUTABLE
325 "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
328 # Always enable GNU C extensions. Non-GNU platforms will need to
329 # define wrappers for them.
330 add_definitions(-D_GNU_SOURCE)
333 # MSVC & MinGW only define & use APIENTRY
334 add_definitions (-DGLAPIENTRY=__stdcall)
336 # Avoid namespace pollution when including windows.h
337 # http://support.microsoft.com/kb/166474
338 add_definitions (-DWIN32_LEAN_AND_MEAN=1)
340 # Don't define min/max macros
341 add_definitions (-DNOMINMAX)
343 # Even more no min/max macros
344 add_definitions (-D_CRT_DECLARE_NONSTDC_NAMES=0)
346 # Define M_PI and others
347 add_definitions (-D_USE_MATH_DEFINES)
351 # Don't warn about using deprecated OpenGL/GLUT functions.
352 # TODO: It would be nice to silence just the deprecation macros from
353 # OpenGLAvailability.h as opposed to all deprecated functions.
354 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
355 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
360 find_path(GLEXT_INCLUDE_DIR
362 PATHS ${OPENGL_INCLUDE_DIR}
363 DOC "Include for OpenGL/glext.h on OSX"
366 find_path(GLEXT_INCLUDE_DIR
368 PATHS ${OPENGL_INCLUDE_DIR}
369 DOC "Include for GL/glext.h"
374 if(CMAKE_USE_PTHREADS_INIT)
375 set(PIGLIT_HAS_PTHREADS true)
376 add_definitions(-DPIGLIT_HAS_PTHREADS)
379 FIND_LIBRARY(HAVE_LIBRT NAMES rt)
381 set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} rt)
384 check_c_source_compiles(
386 #define _POSIX_C_SOURCE 199309L
388 int main() { return clock_gettime(CLOCK_MONOTONIC, NULL); }
390 PIGLIT_HAS_POSIX_CLOCK_MONOTONIC
393 if(PIGLIT_HAS_PTHREADS AND PIGLIT_HAS_POSIX_CLOCK_MONOTONIC)
394 check_c_source_compiles(
398 static void timeout(union sigval val) { }
400 struct sigevent sev = {
401 .sigev_notify = SIGEV_THREAD,
402 .sigev_notify_function = timeout,
405 return timer_create(CLOCK_MONOTONIC, &sev, &timerid);
408 PIGLIT_HAS_POSIX_TIMER_NOTIFY_THREAD
412 set(CMAKE_REQUIRED_LIBRARIES)
414 if(PIGLIT_HAS_POSIX_CLOCK_MONOTONIC)
415 add_definitions(-DPIGLIT_HAS_POSIX_CLOCK_MONOTONIC)
418 if(PIGLIT_HAS_POSIX_TIMER_NOTIFY_THREAD)
419 add_definitions(-DPIGLIT_HAS_POSIX_TIMER_NOTIFY_THREAD)
423 FIND_LIBRARY(HAVE_LIBCACA NAMES caca)
425 set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} caca)
426 add_definitions(-DPIGLIT_HAS_LIBCACA)
430 if(PIGLIT_USE_WAFFLE AND ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
431 pkg_check_modules(EGL egl)
435 set(PIGLIT_HAS_EGL True)
436 add_definitions(-DPIGLIT_HAS_EGL)
437 include_directories(${EGL_INCLUDE_DIRS})
438 add_definitions (${EGL_CFLAGS_OTHER})
441 if(PIGLIT_BUILD_GLES1_TESTS AND NOT EGL_FOUND)
442 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES1_TESTS requires EGL. "
443 "Failed to find EGL library.")
446 if(PIGLIT_BUILD_GLES2_TESTS AND NOT EGL_FOUND)
447 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES2_TESTS requires EGL. "
448 "Failed to find EGL library.")
451 if(PIGLIT_BUILD_GLES3_TESTS AND NOT EGL_FOUND)
452 message(FATAL_ERROR "Option PIGLIT_BUILD_GLES3_TESTS requires EGL. "
453 "Failed to find EGL library.")
456 # Put all executables into the bin subdirectory
457 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${piglit_BINARY_DIR}/bin)
458 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${piglit_BINARY_DIR}/lib)
460 # Do the same for MSVC, regardless of the build type. This only works correctly
461 # for CMake 2.8.1 and above.
462 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${piglit_BINARY_DIR}/bin)
463 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${piglit_BINARY_DIR}/bin)
464 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${piglit_BINARY_DIR}/bin)
465 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${piglit_BINARY_DIR}/bin)
467 check_function_exists(asprintf HAVE_ASPRINTF)
468 check_function_exists(ffs HAVE_FFS)
469 check_function_exists(strchrnul HAVE_STRCHRNUL)
470 check_function_exists(strndup HAVE_STRNDUP)
472 check_function_exists(fopen_s HAVE_FOPEN_S)
474 check_function_exists(setrlimit HAVE_SETRLIMIT)
476 check_symbol_exists(htobe32 "endian.h" HAVE_HTOBE32)
477 check_symbol_exists(htole16 "endian.h" HAVE_HTOLE16)
478 check_symbol_exists(htole32 "endian.h" HAVE_HTOLE32)
479 check_symbol_exists(htole64 "endian.h" HAVE_HTOLE64)
481 check_include_file(sys/time.h HAVE_SYS_TIME_H)
482 check_include_file(sys/types.h HAVE_SYS_TYPES_H)
483 check_include_file(sys/resource.h HAVE_SYS_RESOURCE_H)
484 check_include_file(sys/stat.h HAVE_SYS_STAT_H)
485 check_include_file(unistd.h HAVE_UNISTD_H)
486 check_include_file(fcntl.h HAVE_FCNTL_H)
487 check_include_file(linux/sync_file.h HAVE_LINUX_SYNC_FILE_H)
488 check_include_file(endian.h HAVE_ENDIAN_H)
490 if(DEFINED PIGLIT_INSTALL_VERSION)
491 set(PIGLIT_INSTALL_VERSION_SUFFIX
492 "-${PIGLIT_INSTALL_VERSION}")
494 set(PIGLIT_INSTALL_VERSION_SUFFIX "")
496 set(PIGLIT_INSTALL_LIBDIR
497 "${CMAKE_INSTALL_LIBDIR}/piglit${PIGLIT_INSTALL_VERSION_SUFFIX}")
498 if(NOT IS_ABSOLUTE ${PIGLIT_INSTALL_LIBDIR})
499 set(PIGLIT_INSTALL_FULL_LIBDIR "${CMAKE_INSTALL_PREFIX}/${PIGLIT_INSTALL_LIBDIR}")
501 set(PIGLIT_INSTALL_FULL_LIBDIR "${PIGLIT_INSTALL_LIBDIR}")
504 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
505 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--enable-new-dtags")
506 endif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
508 SET(CMAKE_INSTALL_RPATH "${PIGLIT_INSTALL_FULL_LIBDIR}/lib")
511 "${piglit_SOURCE_DIR}/tests/util/config.h.in"
512 "${piglit_BINARY_DIR}/tests/util/config.h"
515 include(cmake/piglit_util.cmake)
516 include(cmake/piglit_dispatch.cmake)
518 include_directories(src)
519 add_subdirectory(cmake/target_api)
520 add_subdirectory(generated_tests)
521 add_subdirectory(replayer)
524 ##############################################################################
532 DESTINATION share/doc/piglit${PIGLIT_INSTALL_VERSION_SUFFIX}
537 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
538 FILES_MATCHING PATTERN "*.py"
543 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
548 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
549 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)$"
550 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
554 DIRECTORY ${CMAKE_BINARY_DIR}/tests
555 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
556 FILES_MATCHING REGEX ".*\\.xml.gz"
560 DIRECTORY ${CMAKE_BINARY_DIR}/generated_tests
561 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
562 FILES_MATCHING REGEX ".*\\.(shader_test|program_test|frag|vert|geom|tesc|tese|comp|cl|txt|vk_shader_test)$"
563 REGEX "CMakeFiles|CMakeLists" EXCLUDE
567 DIRECTORY generated_tests
568 DESTINATION ${PIGLIT_INSTALL_LIBDIR}
569 FILES_MATCHING REGEX ".*\\.inc$"
570 REGEX "CMakeFiles|CMakeLists" EXCLUDE
573 if (BASH_COMPLETION_FOUND)
575 FILES completions/bash/piglit
576 DESTINATION ${CMAKE_INSTALL_PREFIX}/${BASH_COMPLETION_COMPLETIONSDIR}/
578 endif (BASH_COMPLETION_FOUND)
581 set (PYTHON_SUFFIX ".py")
583 set (PYTHON_SUFFIX "")
586 PROGRAMS piglit RENAME piglit${PIGLIT_INSTALL_VERSION_SUFFIX}${PYTHON_SUFFIX}
587 DESTINATION ${CMAKE_INSTALL_BINDIR}
590 # Install MinGW runtime DLLs
592 if (CMAKE_SIZEOF_VOID_P EQUAL 8)
593 set (LIBGCC_DLL_NAME libgcc_s_seh-1.dll)
595 set (LIBGCC_DLL_NAME libgcc_s_sjlj-1.dll)
598 COMMAND ${CMAKE_C_COMPILER} -print-file-name=${LIBGCC_DLL_NAME}
599 OUTPUT_STRIP_TRAILING_WHITESPACE
600 OUTPUT_VARIABLE LIBGCC_DLL
603 COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=libstdc++-6.dll
604 OUTPUT_STRIP_TRAILING_WHITESPACE
605 OUTPUT_VARIABLE LIBSTDCXX_DLL
607 if (EXISTS ${LIBGCC_DLL})
608 message (STATUS "Found libgcc DLL: ${LIBGCC_DLL}")
609 install (FILES ${LIBGCC_DLL} DESTINATION ${PIGLIT_INSTALL_LIBDIR}/bin)
611 if (EXISTS ${LIBSTDCXX_DLL})
612 message (STATUS "Found libstdc++ DLL: ${LIBSTDCXX_DLL}")
613 install (FILES ${LIBSTDCXX_DLL} DESTINATION ${PIGLIT_INSTALL_LIBDIR}/bin)
617 # Install Waffle DLL if specified
618 if (WIN32 AND Waffle_DLL)
619 install (FILES ${Waffle_DLL} DESTINATION ${PIGLIT_INSTALL_LIBDIR}/bin)
623 set (CPACK_PACKAGE_VERSION_MAJOR "1")
624 set (CPACK_PACKAGE_VERSION_MINOR "0")
626 # Use current date in YYYYMMDD format as patch number
628 COMMAND ${PYTHON_EXECUTABLE} -c "import time, sys; sys.stdout.write(time.strftime('%Y%m%d'))"
629 OUTPUT_VARIABLE CPACK_PACKAGE_VERSION_PATCH
632 # cpack mistakenly detects Mingw-w64 as win32
634 if (CMAKE_SIZEOF_VOID_P EQUAL 8)
635 set (CPACK_SYSTEM_NAME win64)
639 # See http://www.vtk.org/Wiki/CMake:CPackPackageGenerators
641 set (CPACK_GENERATOR "7Z")
642 set (CPACK_STRIP_FILES ON)
644 set (CPACK_GENERATOR "TBZ2")