X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=CMake%2Fmemaccess.cmake;fp=CMake%2Fmemaccess.cmake;h=86ceb0e281f640479eaf2b5e60020d0dfbc9fcdb;hp=0000000000000000000000000000000000000000;hb=9df8453f6809f2ce038717111979474a60d5746a;hpb=8cb717055ce13a6d6568ff384b3cd3932c41d1b0 diff --git a/CMake/memaccess.cmake b/CMake/memaccess.cmake new file mode 100644 index 00000000..86ceb0e2 --- /dev/null +++ b/CMake/memaccess.cmake @@ -0,0 +1,36 @@ +## +## This file is part of the PulseView project. +## +## Copyright (C) 2014 Marcus Comstedt +## +## 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 . +## + +include(CheckCSourceRuns) + +function (memaccess_check_unaligned_le _var) +CHECK_C_SOURCE_RUNS(" +#include +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()