summaryrefslogtreecommitdiffstats
path: root/configure.ac
Commit message (Collapse)AuthorAgeFilesLines
* amd: flatten amd/common makefile structureMauro Rossi2016-11-151-1/+0
| | | | | | | | | | | This pulls amd/common build rules into upper level makefile, along with amd/addlib which is already there. v2: [Emil Velikov] - Move NEED_RADEON_LLVM conditional, drop amd/common from SUBDIRS - Drop AM_ from common_libamd_common_la* Signed-off-by: Emil Velikov <[email protected]>
* util: import cache.c/h from glslMarek Olšák2016-11-151-1/+0
| | | | | | | | | | It's not dependent on GLSL and it can be useful for shader caches that don't deal with GLSL. v2: address review comments v3: keep the other 3 lines in configure.ac Reviewed-by: Emil Velikov <[email protected]>
* egl: Use pkg-config for Android NDK buildGurchetan Singh2016-11-151-0/+1
| | | | | | | | | | | | | | | | | It's possible to build Mesa for Android using the traditional autotools workflow [1]. ChromiumOS fetches Android prebuilts and puts them in a sysroot. We now want to use pkg-config to specify the location of system headers and libraries [2]. To enable this, let's add the required pkg-config checks and link against them. [1] https://developer.android.com/ndk/guides/standalone_toolchain.html [2] https://chromium-review.googlesource.com/#/c/403237/ v2: Bundle pkg-config checks together (Emil) v3: Provide further context on standalone NDK Mesa build (Emil) Reviewed-by: Emil Velikov <[email protected]>
* configure.ac: Don't look for pthreads in Android platformGurchetan Singh2016-11-151-2/+5
| | | | | | | | | | | | In Android, the pthreads libs are in bionic. When building Mesa for Android with the autotools workflow, we shouldn't set -lpthread or -pthread. [Emil Velikov] Other platforms could use a similar fix, although that is left as separate exercise. Reviewed-by: Emil Velikov <[email protected]>
* Revert "configure.ac: honour LLVM_LIBDIR when linking against LLVM"Emil Velikov2016-11-101-2/+2
| | | | | | | | | | | | This reverts commit a39ad185932eab4f25a0cb2b112c10d8700ef242. The commit aims to address "missing" -L/foo/bar during linking stage. At the same time it doesn't add the -L and yet the LLVM_LDFLAGS [which provide -L/foo/bar] are already used throughout. Seems like something pretty unique (broken?) on my end. Since the commit introduces issues (due to the missing -L) revert until we get to the root of it (PEBKAC or a genuine issue).
* configure.ac: honour LLVM_LIBDIR when linking against LLVMEmil Velikov2016-11-091-2/+2
| | | | | | | | | | | | | | | | Currently if one uses a non-default prefix, the path won't get propagated and we'll fail at link-time. A very quick and easy example is to install to /usr/local. At this point, llvm-config will be picked even without the --with-llvm-prefix, but regardless of the latter linking will fail. Currently people can workaround that via LD_LIBRARY_PATH. Cc: "12.0 13.0" <[email protected]> Cc: Tom Stellard <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* configure.ac: simplify EGL requirements for drivers dependent on EGLMarek Olšák2016-10-261-14/+13
| | | | Reviewed-by: Emil Velikov <[email protected]>
* configure: Get rid of the --disable-vulkan-icd-full-driver-path flagJason Ekstrand2016-10-211-7/+0
| | | | | | Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Cc: "13.0" <[email protected]>
* configure.ac: enable EGL platform DRM if GBM is enabledMarek Olšák2016-10-191-2/+6
| | | | | | | | | since GBM is enabled by default, this is also enabled by default the whitespace changes remove tabs Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* configure.ac: enable GBM by defaultMarek Olšák2016-10-191-10/+9
| | | | | Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* configure.ac: print whether GBM is enabledMarek Olšák2016-10-191-0/+5
| | | | | Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* anv: move to using shared wsi codeDave Airlie2016-10-191-1/+4
| | | | | | | | This moves the shared code to a common subdirectory and makes anv linked to that code instead of the copy it was using. Reviewed-by: Jason Ekstrand <[email protected]>
* configure.ac: use a single require_libdrm helperEmil Velikov2016-10-181-25/+24
| | | | | | | | | Rather than having 4-5 places which do the explicit check/message just polish the gallium helper and use it everywhere. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Axel Davy <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* configure.ac: remove no longer needed *_pci_id logicEmil Velikov2016-10-181-41/+0
| | | | | | | | | | | | | | | | | | Previously it was used to differentiate between the different codepaths in the loader. Although strictly speaking the (core) of the loader is only used when a hardware device is available. The latter of which in itself requires libdrm (one of the codepaths available). That said, all the configure toggles which relate to enabling/using hw device should attribute and require libdrm, so there's no need to keep this code around. With this gallium_require_drm_loader becomes an empty stub, so nuke that one as well. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Axel Davy <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* loader: remove final sysfs codepath in loader_get_device_name_for_fd()Emil Velikov2016-10-181-16/+4
| | | | | | | | | | | | | | Effectively everyone with actual hardware and/or requesting the "device_name" requires a working libdrm. Thus they could/should already be using the (now only) codepath. Apart from the code simplification, we can slim down our configure.ac even further. But that will be done in separate patch(es). Cc: Gary Wong <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Axel Davy <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* automake: remove all the libudev referencesEmil Velikov2016-10-181-18/+6
| | | | | | | | As of last commit nothing in mesa depends on libudev. Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Axel Davy <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* configure.ac: mark libdrm as have_pci_id providerEmil Velikov2016-10-181-4/+8
| | | | | | | | | | With follow on work, we'll untangle and simplify all the different codepaths in loader. Then again, we forget to set have_pci_id when libdrm is present (one of the codepaths available). Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Axel Davy <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* radv: don't build without SHA1.Dave Airlie2016-10-101-0/+3
| | | | | | | Just copy the section from anv above this. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98167 Signed-off-by: Dave Airlie <[email protected]>
* intel: aubinator: generate a standalone binaryLionel Landwerlin2016-10-081-0/+1
| | | | | | | | | | | | | | | | | | | | | Embed the xml files into the binary, so aubinator can be used from any location. v2: Split generation packing into another patch (Jason) Check for xxd (Jason) v3: Fix out of tree builds (Jason) Generate custom variable name rather than names generated by xxd (Lionel) v4: Move generated _xml.h files to genxml/ (Sirisha) v5: Remove newline from makefile (Jason) v6: Add comment on gen*_xml.h creation (Jason) Signed-off-by: Lionel Landwerlin <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* radv: fix configure.ac checkDave Airlie2016-10-071-1/+1
| | | | | | This should be positive test. Signed-off-by: Dave Airlie <[email protected]>
* radv: add initial non-conformant radv vulkan driverDave Airlie2016-10-071-7/+26
| | | | | | | | | | | | | | | | | | | | | | | This squashes all the radv development up until now into one for merging. History can be found: https://github.com/airlied/mesa/tree/semi-interesting This requires llvm 3.9 and is in no way considered a conformant vulkan implementation. It can run a number of vulkan applications, and supports all GPUs using the amdgpu kernel driver. Thanks to Intel for providing anv and spirv->nir, and Emil Velikov for reviewing build integration. Parts of this are: Reviewed-by: Nicolai Hähnle <[email protected]> Acked-by: Edward O'Callaghan <[email protected]> Authors: Bas Nieuwenhuizen and Dave Airlie Signed-off-by: Dave Airlie <[email protected]>
* autoconf: Make header install distinct for various APIs (v2)Chuck Atkins2016-10-061-0/+2
| | | | | | | | | | | | This fixes a problem where GL headers would only get installed if glx was enabled. So if osmesa was enabled but not glx, then the GL headers required by osmesa would be missing from the install. v2: Dropped unneeded mesa_glinterop.h redundant osmesa.h install Cc: [email protected] Signed-off-by: Chuck Atkins <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* util: use GCC atomic intrinsics with explicit memory modelNicolai Hähnle2016-10-051-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | This is motivated by the fact that p_atomic_read and p_atomic_set may somewhat surprisingly not do the right thing in the old version: while stores and loads are de facto atomic at least on x86, the compiler may apply re-ordering and speculation quite liberally. Basically, the old version uses the "relaxed" memory ordering. The new ordering always uses acquire/release ordering. This is the strongest possible memory ordering that doesn't require additional fence instructions on x86. (And the only stronger ordering is "sequentially consistent", which is usually more than you need anyway.) I would feel more comfortable if p_atomic_set/read in the old implementation were at least using volatile loads and stores, but I don't see a way to get there without typeof (which we cannot use here since the code is compiled with -std=c99). Eventually, we should really just move to something that is based on the atomics in C11 / C++11. Acked-by: Marek Olšák <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* gallium/hud: Add support for block I/O, network I/O and lmsensor statsSteven Toth2016-09-281-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | V8: Feedback based on peer review convert if block into a switch Constify some func args V7: Increase precision when measuring lmsensors volts Flatten patch series. V6: Feedback based on peer review Simplify sensor initialization (arg passing). Constify some func args V5: Feedback based on peer review Convert sprintf to snprintf Convert char * to const char * int arg converted to bool Func changes to take a filename vs a larger struct. Omit the space between '*' and the param name. V4: Merged with master as of 2016/9/27 6pm V3: Flatten the entire patchset ready for the ML V2: Additional seperate patches based on feedback a) configure.ac: Add a comment related to libsensors b) HUD: Disable Block/NIC I/O stats by default. Implement configuration option --enable-gallium-extra-hud=yes and enable both statistics when this option is enabled. c) Configure.ac: Minor cleanup to user visible configuration settings d) Configure.ac: HUD stats - build system improvements Move the -lsensors out of a deeper Makefile, bring it into the configure.ac. Also, rename a compiler directive to more closely follow the standard. V1: Initial release to the ML Three new features: 1. Disk/block I/O device read/write stats MB/ps. 2. Network Interface RX/TX transfer statistics as a percentage of the overall NIC speed. 3. lmsensor power, voltage and temperature sensors. The lmsensor changes makes a dependency on libsensors so support for the change is opt out by default. Signed-off-by: Steven Toth <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* glsl: Add initial functions to implement an on-disk cacheTimothy Arceri2016-09-281-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This code provides for an on-disk cache of objects. Objects are stored and retrieved via names that are arbitrary 20-byte sequences, (intended to be SHA-1 hashes of something identifying for the content). The directory used for the cache can be specified by means of environment variables in the following priority order: $MESA_GLSL_CACHE_DIR $XDG_CACHE_HOME/mesa <user-home-directory>/.cache/mesa By default the cache will be limited to a maximum size of 1GB. The environment variable: $MESA_GLSL_CACHE_MAX_SIZE can be set (at the time of GL context creation) to choose some other size. This variable is a number that can optionally be followed by 'K', 'M', or 'G' to select a size in kilobytes, megabytes, or gigabytes. By default, an unadorned value will be interpreted as gigabytes. The cache will be entirely disabled at runtime if the variable MESA_GLSL_CACHE_DISABLE is set at the time of GL context creation. Many thanks to Kristian Høgsberg <[email protected]> for the initial implementation of code that led to this patch. In particular, the idea of using an mmapped file, (indexed by a portion of the SHA-1), for the efficent implementation of cache_has_key was entirely his idea. Kristian also provided some very helpful advice in discussions regarding various race conditions to be avoided in this code. Signed-off-by: Timothy Arceri <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* configure.ac: add llvm inteljitevents component if enabledTim Rowley2016-09-271-0/+4
| | | | | | | | | | | Needed to successfully link llvmpipe or swr when using shared llvm libs built with inteljitevents enabled. v2: Make adding inteljitevents component global rather than just llvmpipe/swr, since libgallium will have a symbol dependency. Cc: <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* direct-to-native-GL for GLX clients on Cygwin ("Windows-DRI")Jon Turney2016-09-151-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Structurally, this is very similar to the existing Apple-DRI code, except I have chosen to implement this using the __GLXDRIdisplay, etc. vtables (as suggested originally in [1]), rather than a maze of ifdefs. This also means that LIBGL_ALWAYS_SOFTWARE and LIBGL_ALWAYS_INDIRECT work as expected. [1] https://lists.freedesktop.org/archives/mesa-dev/2010-May/000756.html This adds: * the Windows-DRI extension protocol headers and the windowsdriproto.pc file, for use in building the Windows-DRI extension for the X server * a Windows-DRI extension helper client library * a Windows-specific DRI implementation for GLX clients The server is queried for Windows-DRI extension support on the screen before using it (to detect the case where WGL is disabled or can't be activated). The server is queried for fbconfigID to pixelformatindex mapping, which is used to augment glx_config. The server is queried for a native handle for the drawable (which is of a different type for windows, pixmaps and pbuffers), which is used to augment __GLXDRIdrawable. Various GLX extensions are enabled depending on if the equivalent WGL extension is available.
* configure.ac: fix the name of the Wayland Scanner pc fileBrendan King2016-09-141-2/+2
| | | | | | | | | | | | | The Wayland Scanner pkg-config file is called wayland-scanner.pc. Fixes: 153539bd9d4445b50411 ("configure: rework wayland_scanner handling (fix make distcheck)") Cc: [email protected] Reviewed-by: Eric Engestrom <[email protected]> Tested-by: Eric Engestrom <[email protected]> Signed-off-by: Brendan King <[email protected]> Reviewed-by: Emil Velikov <[email protected]>
* radeonsi: move sid.h/r600d_common.h to a common place.Dave Airlie2016-09-061-0/+1
| | | | | | | | | | Step one to merging radv would be to move some files around. This only adds the include path to r600/radeonsi, because later we want to avoid having to add it to the generic target paths. Acked-by: Marek Olšák <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
* intel: Flatten the makefile structureJason Ekstrand2016-08-251-2/+0
| | | | | | | | | | This pulls isl and genxml into a single make file so that they can properly build in parallel. This isn't terribly important now as genxml just generates sources which happens serially first anyway but it will be more important as we add more stuff to src/intel. Signed-off-by: Jason Ekstrand <[email protected]> Reviewed-by: Matt Turner <[email protected]>
* mesa: Drop sed of now dead Plo files.Matt Turner2016-08-251-3/+0
| | | | | gen6/7/8_blorp.c were removed in commits c8bc1ae96a, e198983c61, and 16a9fcbbb6 respectively.
* configure.ac: raise Mako required version to 0.8.0Eric Engestrom2016-08-251-1/+1
| | | | | | | | | | | | | | | | It seems [0] old versions of Mako are no longer supported. Emil mentioned it might need v0.8.0 [1] for isl_format_layout [2], although I didn't get a confirmation that it's really the minimum. Let's raise it to that to avoid getting other bugs. We might lower it a bit again later if it turns out we can. [0] https://lists.freedesktop.org/archives/mesa-dev/2016-July/122772.html [1] https://lists.freedesktop.org/archives/mesa-dev/2016-July/122775.html [2] https://lists.freedesktop.org/archives/mesa-dev/2016-July/123278.html Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Acked-by: Dave Airlie <[email protected]>
* anv: Add a --disable-vulkan-icd-full-driver-path optionJason Ekstrand2016-08-251-0/+7
| | | | | | | | This option makes installed Vulkan ICD files contain only a driver library name and not a path. This is intended for distros to help them work around multi-arch issues. Reviewed-by: Dave Airlie <[email protected]>
* aubinator: Add a new tool called Aubinator to the src/intel/tools folder.Kristian Høgsberg Kristensen2016-08-231-0/+1
| | | | | | | | | | | | | | | | | The Aubinator tool is designed to help the driver developers in debugging the driver functionality by decoding the data in the .aub files. Primary Authors of this tool are Damien Lespiau <damien.lespiau at intel.com> and Kristian Høgsberg Kristensen <krh at bitplanet.net>. v2: Review comments are incorporated by Sirisha Gandikota as below: 1) Make Makefile.am more crisp, reuse intel_aub.h from libdrm (per Emil) 2) Aubinator will use platform name instead of GEN number (per Matt) 3) Disassmebler gets created based on pciid rather then GEN number (per Matt) 4) Other formatting comments (per Ken, Matt and Emil) Signed-off-by: Sirisha Gandikota <[email protected]> Acked-by: Kenneth Graunke <[email protected]> Acked-by: Ben Widawsky <[email protected]>
* mesa: Drop -fno-strict-aliasing.Matt Turner2016-08-011-6/+0
| | | | | | | | | | | | Improves performance of OglBatch7 by 4.06851% +/- 1.17925% (n=169) on Haswell, and cuts ~18k of .text: text data bss dec hex filename 5824627 287816 29384 6141827 5db783 before/i965_dri.so 5806354 287816 29384 6123554 5d7022 after/i965_dri.so Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* configure: add support for LLVM 4.0.0svn static libsJan Ziak2016-07-291-1/+1
| | | | | | Signed-off-by: Jan Ziak (http://atom-symbol.net) <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-and-Tested-by: Michel Dänzer <[email protected]>
* mesa: Use AC_HEADER_MAJOR to include correct header for major().Matt Turner2016-07-261-0/+1
| | | | | | Gentoo has been smoke testing an upcoming change to glibc. Bugzilla: https://bugs.gentoo.org/show_bug.cgi?id=580392
* freedreno: hw timestamp supportRob Clark2016-07-231-1/+1
| | | | | | If the kernel supports it, use hw counter for timestamps. Signed-off-by: Rob Clark <[email protected]>
* mesa: Add -fno-math-errno -fno-trapping-math to CXXFLAGS.Matt Turner2016-07-211-0/+3
| | | | | | | | | | | | Not sure why I forgot to add them to CXXFLAGS in commit f55c408067 or commit 875458b778. Cuts about 1k of .text. text data bss dec hex filename 5806354 287816 29384 6123554 5d7022 i965_dri.so before 5805497 287744 29384 6122625 5d6c81 i965_dri.so after Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
* mesa: Drop -fno-builtin-memcmp.Matt Turner2016-07-211-8/+0
| | | | | | | | | | | | According to the referenced bug report, gcc-4.5 and newer do not inline memcmp(). I see no difference in performance of ipers with llvmpipe on a Sandybridge (which does not have "Enhanced REP MOVSB/STOSB") by removing this flag. I attempted to confirm the problem with gcc-4.4, but it fails to compile for quite a few different reasons. Reviewed-by: Ian Romanick <[email protected]>
* mapi: Massage code to allow clang to compile.Matt Turner2016-07-211-0/+1
| | | | | | | | | | According to https://llvm.org/bugs/show_bug.cgi?id=19778#c3 this code was violating the spec, resulting in it failing to compile. Cc: [email protected] Co-authored-by: Tomasz Paweł Gajc <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89599 Reviewed-by: Emil Velikov <[email protected]>
* vc4: Switch to using the libdrm-provided vc4_drm.h.Eric Anholt2016-07-201-0/+2
| | | | | The required version is set to .69 for the getparam ioctl that will be used in the next commit.
* configure.ac: Use ${datarootdir} for --with-vulkan-icddir help string tooAndreas Boll2016-07-191-1/+1
| | | | | | | | | | | | The help string wasn't updated in cbc37f7. Fixes: cbc37f7 ("anv: install the intel_icd.json to ${datarootdir} by default") Signed-off-by: Andreas Boll <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Emil Velikov <[email protected]> Cc: [email protected]
* configure: Don't require pthread-stubs on CygwinJon Turney2016-07-151-3/+15
| | | | | | | | | | Commit 1f4869a2 unconditionally requires pthread-stubs. Unfortunately, the cleverness that pthread-stubs is doesn't work with PE/COFF, and historically Cygwin doesn't have a pthread-stubs.pc. Don't require pthread-stubs on Cygwin. Signed-off-by: Jon Turney <[email protected]>
* configure: Define _GNU_SOURCE for Cygwin as wellYaakov Selkowitz2016-07-151-4/+1
| | | | | | | | | | | Cygwin headers are now a bit more correct in handling feature test macros, so use _GNU_SOURCE when building for Cygwin, as well. (Notwithstanding f381c27c, we should probably have always been using _GNU_SOURCE, since asprintf() is used by mesa in places) Signed-off-by: Yaakov Selkowitz <[email protected]> Reviewed-by: Jon Turney <[email protected]>
* clover: Bump required LLVM version to 3.6.Serge Martin2016-07-111-1/+1
| | | | | Reviewed-by: Francisco Jerez <[email protected]> Tested-by: Jan Vesely <[email protected]>
* mesa: don't install GLX files if GLX is not builtAkihiko Odaki2016-07-071-0/+1
| | | | | | | Cc: "11.2 12.0" <[email protected]> Signed-off-by: Akihiko Odaki <[email protected]> [Emil Velikov: Drop guards around dri_interface.h, add stable tag] Signed-off-by: Emil Velikov <[email protected]>
* anv: install the intel_icd.json to ${datarootdir} by defaultEmil Velikov2016-07-051-1/+1
| | | | | | | | | | As mentioned by the spec (and used by Archlinux and Debian) default to ${datarootdir} as opposed to ${sysconfdir} for the default location. Cc: Jason Ekstrand <[email protected]> Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* anv: use cache uuid based on the build timestamp.Emil Velikov2016-07-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not rely on the git sha1: - its current truncated form makes it less unique - it does not attribute for local (Vulkand or otherwise) changes Use a timestamp produced at the time of build. It's perfectly unique, unless someone explicitly thinkers with their system clock. Even then chances of producing the exact same one are very small, if not zero. v2: Remove .tmp rule. Its not needed since we want for the header to be regenerated on each time we call make (Eric). v3: - Honour SOURCE_DATE_EPOCH, to make the build reproducible (Michel) - Replace the generated header with a define, to prevent needless builds on consecutive `make' and/or `make install' calls. (Dave) v4: - Keep the timestamp generation at make time. (Jason) v5: - Ensure that file is regenerated on incremental builds. Cc: Michel Dänzer <[email protected]> Cc: Dave Airlie <[email protected]> Cc: [email protected] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
* swr: Refactor checks for compiler feature flagsChuck Atkins2016-06-301-23/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | Encapsulate the test for which flags are needed to get a compiler to support certain features. Along with this, give various options to try for AVX and AVX2 support. Ideally we want to use specific instruction set feature flags, like -mavx2 for instance instead of -march=haswell, but the flags required for certain compilers are different. This allows, for AVX2 for instance, GCC to use -mavx2 -mfma -mbmi2 -mf16c while the Intel compiler which doesn't support those flags can fall back to using -march=core-avx2. This addresses a bug where the Intel compiler will silently ignore the AVX2 instruction feature flags and then potentially fail to build. v2: Pass preprocessor-check argument as true-state instead of false-state for clarity. v3: Reduce AVX2 define test to just __AVX2__. Additional defines suchas __FMA__, __BMI2__, and __F16C__ appear to be inconsistently defined w.r.t thier availability. v4: Fix C++11 flags being added globally and add more logic to swr_require_cxx_feature_flags Cc: <[email protected]> Reviewed-by: Tim Rowley <[email protected]> Tested-by: Tim Rowley <[email protected]> Signed-off-by: Chuck Atkins <[email protected]>