diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2019-02-03 16:39:37 +0100 |
---|---|---|
committer | Julian Andres Klode <julian.klode@canonical.com> | 2019-02-04 15:21:32 +0100 |
commit | 2cc1b3a3ee595c8be761fee309167b8a56393d3e (patch) | |
tree | b6d6639a2a8334db771d78025b3af7f9838dce4b /CMake/CheckCxxTarget.cmake | |
parent | cde5ee8fe527d3d672775909d27110d11c393774 (diff) |
Detect function multiversioning and sse4.2/crc32, enables i386
This fixes the build on kfreebsd-amd64, and due to the detection
of sse4.2, should also enable the sse4.2 on i386.
Diffstat (limited to 'CMake/CheckCxxTarget.cmake')
-rw-r--r-- | CMake/CheckCxxTarget.cmake | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/CMake/CheckCxxTarget.cmake b/CMake/CheckCxxTarget.cmake new file mode 100644 index 000000000..373c0be4c --- /dev/null +++ b/CMake/CheckCxxTarget.cmake @@ -0,0 +1,35 @@ +# CMake support for target-based function multiversioning +# +# Copyright (C) 2019 Canonical Ltd +# +# Author: Julian Andres Klode <jak@debian.org>. +# +# 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 the rights to use, copy, modify, merge, +# publish, distribute, sublicense, 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 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 +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +# 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. + + +function(check_cxx_target var target code) + check_cxx_source_compiles( + " + __attribute__((target(\"${target}\"))) static int foo() { ${code} return 1; } + __attribute__((target(\"default\"))) static int foo() { ${code} return 0; } + int main() { return foo(); } + " ${var}) +endfunction() |