# Copyright 2005 Adam Jackson. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # on the rights to use, copy, modify, merge, publish, distribute, sub # license, and/or sell copies of the Software, and to permit persons to whom # the Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice (including the next # paragraph) shall be included in all copies or substantial portions of the # Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL # ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Process this file with autoconf to produce a configure script AC_PREREQ([2.60]) AC_INIT([igt-gpu-tools], [1.23], [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI&component=IGT], [igt-gpu-tools]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) AC_USE_SYSTEM_EXTENSIONS AC_SYS_LARGEFILE AC_GNU_SOURCE AC_CANONICAL_HOST AC_CANONICAL_TARGET AM_INIT_AUTOMAKE([1.12 foreign subdir-objects dist-bzip2]) AM_PATH_PYTHON([3],, [:]) AC_PROG_CC AC_PROG_LEX AC_PROG_YACC # Checks for functions, headers, structures, etc. AC_HEADER_STDC AC_CHECK_HEADERS([termios.h linux/kd.h sys/kd.h libgen.h sys/io.h]) AC_CHECK_MEMBERS([struct sysinfo.totalram],[],[],[AC_INCLUDES_DEFAULT #include ]) AC_CHECK_TYPES([sighandler_t],[],[],[AC_INCLUDES_DEFAULT #include ]) AC_CHECK_FUNCS([swapctl]) AC_CHECK_FUNCS([asprintf]) AX_GCC_FUNC_ATTRIBUTE([constructor]) dnl Check for POSIX timers AC_CHECK_FUNCS(timer_create, [], [ AC_CHECK_LIB(rt, timer_create, [ AC_DEFINE(HAVE_TIMER_CREATE, 1) TIMER_LIBS="-lrt" ], [ AC_CHECK_LIB(pthread, timer_create, [ AC_DEFINE(HAVE_TIMER_CREATE, 1) TIMER_LIBS="-lpthread" ]) ]) ]) AC_SUBST(TIMER_LIBS) dnl Check for memfd_create AC_CHECK_FUNCS(memfd_create) dnl Check for CPUID cpuid="yes" AC_TRY_LINK([ #include #include ], [ int eax, ebx, ecx, edx; if (__get_cpuid_max(0, NULL) < 4) return 0; __cpuid_count(4, 0, eax, ebx, ecx, edx); ], [cpuid="yes"], [cpuid="no"] ) if test "x$cpuid" = "xyes"; then AC_DEFINE(HAVE_CPUID_H, 1, [Found a useable cpuid.h]) fi # Initialize libtool AC_DISABLE_STATIC AC_PROG_LIBTOOL # Require X.Org macros 1.16 or later for XORG_TESTSET_CFLAG m4_ifndef([XORG_MACROS_VERSION], [m4_fatal([must install xorg-macros 1.16 or later before running autoconf/autogen])]) XORG_MACROS_VERSION(1.16) XORG_DEFAULT_OPTIONS # warning flags for the assembler. We can't quite use CWARNFLAGS for it yet as # it generates waaaay too many warnings. ASSEMBLER_WARN_CFLAGS="" if test "x$GCC" = "xyes"; then ASSEMBLER_WARN_CFLAGS="-Wall -Wstrict-prototypes \ -Wmissing-prototypes -Wmissing-declarations \ -Wnested-externs -fno-strict-aliasing" fi AC_SUBST(ASSEMBLER_WARN_CFLAGS) PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.82]) PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10]) PKG_CHECK_MODULES(KMOD, [libkmod]) PKG_CHECK_MODULES(PROCPS, [libprocps]) PKG_CHECK_MODULES(LIBUNWIND, [libunwind]) PKG_CHECK_MODULES(LIBDW, [libdw]) PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no]) if test x$have_valgrind = xyes; then AC_DEFINE(HAVE_VALGRIND, 1, [Enable valgrind annotation support.]) fi case "$target_cpu" in x86*|i?86) build_x86="yes" ;; *) build_x86="no" ;; esac if test x"$build_x86" = xyes; then PKG_CHECK_MODULES(OVERLAY_XVLIB, [xv x11 xext dri2proto >= 2.6], enable_overlay_xvlib=yes, enable_overlay_xvlib=no) PKG_CHECK_MODULES(OVERLAY_XLIB, [cairo-xlib dri2proto >= 2.6], enable_overlay_xlib=yes, enable_overlay_xlib=no) AS_IF([test x"$LEX" != "x:" -a x"$YACC" != xyacc], [enable_assembler=yes], [enable_assembler=no]) AC_CHECK_TOOL([LEG], [leg]) if test x"$LEG" != xleg; then enable_overlay_xvlib="no" enable_overlay_xlib="no" AC_MSG_NOTICE([Failed to find leg, required for overlay, try : apt-get install peg]) fi else enable_overlay_xvlib="no" enable_overlay_xlib="no" enable_assembler="no" BUILD_SHADER_DEBUGGER="no" fi AM_CONDITIONAL(BUILD_X86, [test "x$build_x86" = xyes]) AM_CONDITIONAL(BUILD_ASSEMBLER, [test "x$enable_assembler" = xyes]) AM_CONDITIONAL(BUILD_OVERLAY_XVLIB, [test "x$enable_overlay_xvlib" = xyes]) AM_CONDITIONAL(BUILD_OVERLAY_XLIB, [test "x$enable_overlay_xlib" = xyes]) AM_CONDITIONAL(BUILD_OVERLAY, [test "x$enable_overlay_xlib" = xyes -o "x$enable_overlay_xvlib" = "xyes"]) if test x$enable_overlay_xvlib = xyes; then AC_DEFINE(HAVE_OVERLAY_XVLIB, 1, [Enable XV backend]) fi if test x$enable_overlay_xlib = xyes; then AC_DEFINE(HAVE_OVERLAY_XLIB, 1, [Enable X backend]) fi PKG_CHECK_MODULES(XRANDR, xrandr >= 1.3, AC_DEFINE(HAVE_XRANDR, 1, [Have libXrandr]), [have_xrandr=no]) # for testdisplay PKG_CHECK_MODULES(CAIRO, [cairo >= 1.12.0]) PKG_CHECK_MODULES(LIBUDEV, [libudev]) PKG_CHECK_MODULES(GLIB, [glib-2.0]) PKG_CHECK_MODULES(PIXMAN, [pixman-1]) PKG_CHECK_MODULES(GSL, [gsl], [gsl=yes], [gsl=no]) AM_CONDITIONAL(HAVE_GSL, [test "x$gsl" = xyes]) # for chamelium AC_ARG_ENABLE(chamelium, AS_HELP_STRING([--enable-chamelium], [Enable building of chamelium libraries and tests (default: no)]), [if test x$enableval = xyes; then enable_chamelium=yes; fi], [enable_chamelium=no]) AM_CONDITIONAL(HAVE_CHAMELIUM, [test "x$enable_chamelium" = xyes]) if test "x$enable_chamelium" = xyes; then PKG_CHECK_MODULES(XMLRPC, xmlrpc xmlrpc_util xmlrpc_client, [xmlrpc=yes], [xmlrpc=no]) if test x"$xmlrpc" != xyes; then AC_CHECK_PROG([XMLRPC_C_CONFIG], [xmlrpc-c-config], [yes], [no]) if test x"$XMLRPC_C_CONFIG" = xyes; then XMLRPC_CFLAGS=$(xmlrpc-c-config client --cflags) XMLRPC_LIBS=$(xmlrpc-c-config client --libs) AC_SUBST(XMLRPC_CFLAGS) AC_SUBST(XMLRPC_LIBS) else AC_MSG_ERROR([Failed to find xmlrpc, required by chamelium.]) fi fi if test x"$gsl" != xyes; then AC_MSG_ERROR([Failed to find gsl, required by chamelium.]) fi AC_DEFINE(HAVE_CHAMELIUM, 1, [Enable Chamelium support]) fi PKG_CHECK_MODULES(ALSA, [alsa], [alsa=yes], [alsa=no]) AM_CONDITIONAL(HAVE_ALSA, [test "x$alsa" = xyes]) # for audio AC_ARG_ENABLE(audio, AS_HELP_STRING([--enable-audio], [Enable building of audio tests (default: no)]), [if test x$enableval = xyes; then enable_audio=yes; fi], [enable_audio=no]) AM_CONDITIONAL(HAVE_AUDIO, [test "x$enable_audio" = xyes]) if test "x$enable_audio" = xyes; then if test x"$alsa" != xyes; then AC_MSG_ERROR([Failed to find ALSA, required by audio.]) fi if test x"$gsl" != xyes; then AC_MSG_ERROR([Failed to find gsl, required by audio.]) fi AC_DEFINE(HAVE_AUDIO, 1, [Enable Audio support]) fi # ----------------------------------------------------------------------------- # Configuration options # ----------------------------------------------------------------------------- AC_ARG_ENABLE(intel, AS_HELP_STRING([--disable-intel], [Enable building of intel specific parts (default: auto)]), [INTEL=$enableval], [INTEL=auto]) if test "x$INTEL" = xauto; then PKG_CHECK_EXISTS([libdrm_intel >= 2.4.75], [INTEL=yes], [INTEL=no]) fi if test "x$INTEL" = xyes; then PKG_CHECK_MODULES(DRM_INTEL, [libdrm_intel >= 2.4.75]) AC_DEFINE(HAVE_LIBDRM_INTEL, 1, [Have intel support]) else DRM_INTEL_CFLAGS=-I$\(top_srcdir\)/lib/stubs/drm/ DRM_INTEL_LIBS= fi DRM_CFLAGS="$DRM_CFLAGS $DRM_INTEL_CFLAGS" DRM_LIBS="$DRM_LIBS $DRM_INTEL_LIBS" AC_SUBST([DRM_CFLAGS]) AC_SUBST([DRM_LIBS]) AM_CONDITIONAL(HAVE_LIBDRM_INTEL, [test "x$INTEL" = xyes]) AC_ARG_ENABLE(amdgpu, AS_HELP_STRING([--disable-amdgpu], [Enable building of amdgpu tests (default: auto)]), [AMDGPU=$enableval], [AMDGPU=auto]) if test "x$AMDGPU" = xauto; then PKG_CHECK_EXISTS([libdrm_amdgpu >= 2.4.81], [AMDGPU=yes], [AMDGPU=no]) fi if test "x$AMDGPU" = xyes; then PKG_CHECK_MODULES(DRM_AMDGPU, [libdrm_amdgpu >= 2.4.81]) AC_DEFINE(HAVE_LIBDRM_AMDGPU, 1, [Have amdgpu support]) fi AM_CONDITIONAL(HAVE_LIBDRM_AMDGPU, [test "x$AMDGPU" = xyes]) # for dma-buf tests AC_ARG_ENABLE(nouveau, AS_HELP_STRING([--disable-nouveau], [Enable use of nouveau API for prime tests (default: auto)]), [NOUVEAU=$enableval], [NOUVEAU=auto]) if test "x$NOUVEAU" = xauto; then PKG_CHECK_EXISTS([libdrm_nouveau >= 2.4.33], [NOUVEAU=yes], [NOUVEAU=no]) fi if test "x$NOUVEAU" = xyes; then PKG_CHECK_MODULES(DRM_NOUVEAU, [libdrm_nouveau >= 2.4.33]) AC_DEFINE(HAVE_LIBDRM_NOUVEAU, 1, [Have nouveau support]) fi AM_CONDITIONAL(HAVE_LIBDRM_NOUVEAU, [test "x$NOUVEAU" = xyes]) AC_ARG_ENABLE(vc4, AS_HELP_STRING([--disable-vc4], [Enable building of vc4 tests (default: yes)]), [VC4=$enableval], [VC4=yes]) if test "x$VC4" = xyes; then AC_DEFINE(BUILD_VC4, 1, [Have vc4 support]) fi AM_CONDITIONAL(BUILD_VC4, [test "x$VC4" = xyes]) # Define a configure option for the shader debugger AC_ARG_ENABLE(shader-debugger, AS_HELP_STRING([--enable-shader-debugger], [Enable shader debugging support [autodetected]]), [BUILD_SHADER_DEBUGGER="$enableval"], [BUILD_SHADER_DEBUGGER=no]) # Shader debugger depends on python3, intel-genasm and objcopy if test "x$BUILD_SHADER_DEBUGGER" != xno; then # Check that the assembler is built if test "x$enable_assembler" = xno; then BUILD_SHADER_DEBUGGER=no if test "x$BUILD_SHADER_DEBUGGER" = xyes; then AC_MSG_ERROR([Shader debugger requested, but assembler not enabled.]) fi fi # Check Python 3 is installed if test "$PYTHON" = ":" ; then if test "x$BUILD_SHADER_DEBUGGER" = xyes; then AC_MSG_ERROR([Shader debugger requested, python version 3 not found.]) else BUILD_SHADER_DEBUGGER=no fi fi # Check for the objcopy GNU binary utiliy command AC_PATH_PROGS([OBJCOPY], objcopy) if test -z "$OBJCOPY" ; then if test "x$BUILD_SHADER_DEBUGGER" = xyes; then AC_MSG_ERROR([Shader debugger requested, but objcopy command not found.]) else BUILD_SHADER_DEBUGGER=no fi fi fi AM_CONDITIONAL(BUILD_SHADER_DEBUGGER, [test "x$BUILD_SHADER_DEBUGGER" != xno]) AS_IF([test "x$BUILD_SHADER_DEBUGGER" != xno], [enable_debugger=yes], [enable_debugger=no]) # enable debug symbols AC_ARG_ENABLE(debug, AS_HELP_STRING([--disable-debug], [Build tests without debug symbols]), [], [enable_debug=yes]) AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror], [Fail on warnings]), [], [enable_werror=no]) if test "x$enable_debug" = xyes; then AS_COMPILER_FLAG([-g3], [DEBUG_CFLAGS="-g3"], [DEBUG_CFLAGS="-g"]) AS_COMPILER_FLAG([-Og], [DEBUG_CFLAGS+=" -Og -Wno-maybe-uninitialized"], # disable maybe-uninitialized due to false positives [DEBUG_CFLAGS+=" -O0"]) AC_SUBST([DEBUG_CFLAGS]) fi if test "x$enable_werror" = xyes; then AS_COMPILER_FLAG([-Werror], [WERROR_CFLAGS="-Werror"]) fi # prevent relinking the world on every commit for developers AC_ARG_ENABLE(git-hash, AS_HELP_STRING([--disable-git-hash], [Do not use git hash in version]), [git_hash=$enableval], [git_hash=yes]) AC_SUBST(GIT_HASH, [$git_hash]) # ----------------------------------------------------------------------------- # To build multithread code, gcc uses -pthread, Solaris Studio cc uses -mt XORG_TESTSET_CFLAG([THREAD_CFLAGS], [-pthread], [-mt]) AC_SUBST([THREAD_CFLAGS]) AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests], [Disable tests build (default: enabled)]), [BUILD_TESTS=$enableval], [BUILD_TESTS="yes"]) if test "x$BUILD_TESTS" = xyes; then AC_DEFINE(BUILD_TESTS, 1, [Build tests]) fi AM_CONDITIONAL(BUILD_TESTS, [test "x$BUILD_TESTS" = xyes]) AC_DEFINE_UNQUOTED(TARGET_CPU_PLATFORM, ["$host_cpu"], [Target platform]) AC_ARG_ENABLE(runner, AS_HELP_STRING([--disable-runner], [Enable building test runner (default: auto)]), [BUILD_RUNNER=$enableval], [BUILD_RUNNER="auto"]) if test "x$BUILD_RUNNER" = xauto; then PKG_CHECK_EXISTS([json-c], [BUILD_RUNNER=yes], [BUILD_RUNNER=no]) fi if test "x$BUILD_RUNNER" = xyes; then PKG_CHECK_MODULES(JSONC, [json-c]) fi AM_CONDITIONAL(BUILD_RUNNER, [test "x$BUILD_RUNNER" = xyes]) files="broadwell cherryview haswell ivybridge sandybridge valleyview skylake" for file in $files; do REGISTER_FILES="$REGISTER_FILES $file `cat $srcdir/tools/registers/$file`" done REGISTER_FILES=`echo $REGISTER_FILES | tr ' ' '\n' | sort -u | tr '\n' ' '` AC_SUBST(REGISTER_FILES) AC_CONFIG_FILES([ Makefile benchmarks/Makefile benchmarks/ezbench.d/Makefile benchmarks/wsim/Makefile lib/Makefile lib/tests/Makefile scripts/Makefile tests/Makefile tests/intel-ci/Makefile tools/Makefile tools/null_state_gen/Makefile tools/registers/Makefile include/Makefile include/drm-uapi/Makefile debugger/Makefile debugger/system_routine/Makefile assembler/Makefile assembler/doc/Makefile assembler/test/Makefile assembler/intel-gen4asm.pc overlay/Makefile runner/Makefile runner/testdata/Makefile ]) AC_CONFIG_FILES([tools/intel_aubdump], [chmod +x tools/intel_aubdump]) AC_OUTPUT # Print a summary of the compilation echo "" echo "Intel GPU tools" echo "" echo " • Tests:" echo " Build tests : ${BUILD_TESTS}" echo " Chamelium tests : ${enable_chamelium}" echo " Audio tests : ${enable_audio}" echo " Compile prime tests: ${NOUVEAU}" echo " Debug flags : ${DEBUG_CFLAGS}" echo "" echo " • Tools:" echo " Assembler : ${enable_assembler}" echo " Debugger : ${enable_debugger}" echo " Overlay : X: ${enable_overlay_xlib}, Xv: ${enable_overlay_xvlib}" echo " x86-specific tools : ${build_x86}" echo " Test runner : ${BUILD_RUNNER}" echo "" echo " • Fail on warnings : ${enable_werror}" echo "" # vim: set ft=config ts=8 sw=8 tw=0 noet :