]> sigrok.org Git - pulseview.git/blobdiff - CMake/memaccess.cmake
Check if unportable sample pack/unpack works and in that case use it.
[pulseview.git] / CMake / memaccess.cmake
diff --git a/CMake/memaccess.cmake b/CMake/memaccess.cmake
new file mode 100644 (file)
index 0000000..86ceb0e
--- /dev/null
@@ -0,0 +1,36 @@
+##
+## This file is part of the PulseView project.
+##
+## Copyright (C) 2014 Marcus Comstedt <marcus@mc.pp.se>
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+##
+
+include(CheckCSourceRuns)
+
+function (memaccess_check_unaligned_le _var)
+CHECK_C_SOURCE_RUNS("
+#include <stdint.h>
+int main() {
+    int i;
+    union { uint64_t u64; uint8_t u8[16]; } d;
+    uint64_t v;
+    for (i=0; i<16; i++)
+       d.u8[i] = i;
+    v = *(uint64_t *)(d.u8+1);
+    if (v != 0x0807060504030201ULL)
+       return 1;
+    return 0;
+}" ${_var})
+endfunction()