attempt to fix murmur on big endian
authorMichael Wallner <mike@php.net>
Wed, 14 Oct 2020 09:06:59 +0000 (11:06 +0200)
committerMichael Wallner <mike@php.net>
Wed, 14 Oct 2020 09:06:59 +0000 (11:06 +0200)
.cirrus.yml [deleted file]
.github/workflows/cmake-build-ci.yml [deleted file]
CMake/CheckByteswap.cmake [new file with mode: 0644]
CMake/_Include.cmake

diff --git a/.cirrus.yml b/.cirrus.yml
deleted file mode 100644 (file)
index d4a7d4b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-env:
-  CMAKE_BUILD_TYPE:   Debug
-  BUILD_TESTING:      "ON"
-  ENABLE_SASL:        "ON"
-  ENABLE_HASH_HSIEH:  "ON"
-  ENABLE_DTRACE:      "ON"
-  VERBOSE:            "ON"
-  MEMCACHED_BINARY:   "/usr/local/bin/memcached"
-
-task:
-  name: Freebsd
-  env:
-    gitter: ENCRYPTED[92e34815ac1a27681bf868c8299bfa37f3cb98c7d88156884c85dfb33e786bd3124c5d624721fb13735d23f7c57ead4b]
-    ports: RELEASE_12_1_0
-  freebsd_instance:
-    image_family: freebsd-12-1
-  dependencies_script: |
-    pkg update
-    pkg upgrade -y
-    pkg install -y \
-      autotools \
-      bison \
-      cmake \
-      cyrus-sasl \
-      flex \
-      libevent \
-      pkgconf \
-      subversion \
-      sudo
-  memcached_script: |
-    svn co https://svn.freebsd.org/ports/tags/${ports}/databases/memcached memcached
-    svn co https://svn.freebsd.org/ports/tags/${ports}/Mk /usr/ports/Mk
-    svn co https://svn.freebsd.org/ports/tags/${ports}/Templates /usr/ports/Templates
-    cd memcached
-    echo bin/memcached > pkg-plist
-    make all install SASLPWDB_CONFIGURE_ENABLE=sasl-pwdb OPTIONS_SET="SASL SASLPWDB" OPTIONS_DEFINE="SASL SASLPWDB"
-    cd ..
-  prepare_script: |
-    mkdir build
-    chown nobody build
-    chsh -s /bin/sh nobody
-  configure_script: |
-    sudo -E -u nobody cmake -S . -B build
-  build_script: |
-    sudo -E -u nobody make -C build -j2 all
-  test_script: |
-    sudo -E -u nobody make -C build -j2 test/fast
-  install_script: |
-    sudo -E -u nobody make -C build install DESTDIR=/tmp
-  on_success:
-    gitter_success_script: |
-      curl -sS "${gitter}" \
-        --data-urlencode "level=info" \
-        --data-urlencode "message=Cirrus-CI build for ${CIRRUS_BRANCH} on ${OS} [succeeded](https://cirrus-ci.org/task/${CIRRUS_TASK_ID})"
-  on_failure:
-    gitter_failure_script: |
-      curl -sS "${gitter}" \
-        --data-urlencode "level=error" \
-        --data-urlencode "message=Cirrus-CI build for ${CIRRUS_BRANCH} on ${OS} [failed](https://cirrus-ci.org/task/${CIRRUS_TASK_ID})"
-    testlog_artifacts:
-      path: build/Testing/Temporary/LastTest.log
-      type: text/plain
diff --git a/.github/workflows/cmake-build-ci.yml b/.github/workflows/cmake-build-ci.yml
deleted file mode 100644 (file)
index b45102c..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-# Generated file; do not edit!
-name: cmake-build-ci
-on:
-  push:
-    paths-ignore:
-      - "docs/**"
-      - ".travis.yml"
-      - ".cirrus.yml"
-    branches-ignore:
-      - gh-pages
-  pull_request:
-    branches:
-      - master
-      - v1.x
-env:
-  # defaults
-  INSTALL_MEMCACHED:  memcached
-  CMAKE_BUILD_TYPE:   Debug
-  BUILD_TESTING:      "ON"
-  ENABLE_SASL:        "OFF"
-  ENABLE_HASH_HSIEH:  "ON"
-  ENABLE_DTRACE:      "OFF"
-  VERBOSE:            "ON"
-  OS_VND:   Linux #
-  OS_VER:   ubuntu-20.04 #
-  CC_VND:   gnu #
-  CC_VER:   cur #
-
-jobs:
-
-  # new memcached
-  dbg-new:
-    name: dbg-new (ubuntu-20.04, gnu, cur)
-    runs-on: ubuntu-20.04 #
-    env:
-      INSTALL_MEMCACHED:
-      MEMCACHED_PREFIX: /tmp
-      ENABLE_SASL:      "ON"
-    steps:
-      - uses: actions/checkout@v2
-      - uses: actions/checkout@v2
-        with:
-          repository: memcached/memcached
-          path: memcached
-          ref: 1.6.7
-      - name: Prepare environment (for cur gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
-        run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
-      - name: Install dependencies (Linux)
-        if: runner.os == 'Linux'
-        run: |
-          sudo apt-get install \
-            libevent-dev \
-            libsasl2-dev \
-            ${INSTALL_MEMCACHED} \
-            ${INSTALL_CC} ${INSTALL_CXX}
-          sudo systemctl stop memcached || true
-      - name: Install dependencies (Mac)
-        if: runner.os == 'macOS'
-        run: |
-          brew install bison flex ${INSTALL_MEMCACHED}
-          brew services stop memcached || true
-          echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
-      - name: Build memcached
-        run: |
-          if test -d memcached
-          then
-            cd memcached
-            ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
-              --prefix=${MEMCACHED_PREFIX} \
-              --enable-sasl \
-              --enable-sasl-pwdb \
-              --disable-coverage \
-              --disable-dependency-tracking \
-              --disable-docs \
-              --disable-extstore \
-              --disable-option-checking \
-              ;
-            make -j2
-            make install
-            cd ..
-            echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
-          fi
-      - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
-        run: cmake -S . -B build
-      - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
-        run: make -C build -j2 all
-      - name: Test
-        run: make -C build -j2 test
-      - name: Install
-        run: make -C build -j2 install DESTDIR=.
-      - name: Failed tests log
-        if: ${{ failure() }}
-        run: cat build/Testing/Temporary/LastTest.log || true
-
-  # sanitizer build
-  dbg-san:
-    name: dbg-san (ubuntu-20.04, gnu, cur)
-    runs-on: ubuntu-20.04 #
-    env:
-      ENABLE_SANITIZERS: "address;undefined"
-    steps:
-      - uses: actions/checkout@v2
-      - name: Prepare environment (for cur gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
-        run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
-      - name: Install dependencies (Linux)
-        if: runner.os == 'Linux'
-        run: |
-          sudo apt-get install \
-            libevent-dev \
-            libsasl2-dev \
-            ${INSTALL_MEMCACHED} \
-            ${INSTALL_CC} ${INSTALL_CXX}
-          sudo systemctl stop memcached || true
-      - name: Install dependencies (Mac)
-        if: runner.os == 'macOS'
-        run: |
-          brew install bison flex ${INSTALL_MEMCACHED}
-          brew services stop memcached || true
-          echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
-      - name: Build memcached
-        run: |
-          if test -d memcached
-          then
-            cd memcached
-            ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
-              --prefix=${MEMCACHED_PREFIX} \
-              --enable-sasl \
-              --enable-sasl-pwdb \
-              --disable-coverage \
-              --disable-dependency-tracking \
-              --disable-docs \
-              --disable-extstore \
-              --disable-option-checking \
-              ;
-            make -j2
-            make install
-            cd ..
-            echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
-          fi
-      - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
-        run: cmake -S . -B build
-      - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
-        run: make -C build -j2 all
-      - name: Test
-        run: make -C build -j2 test
-      - name: Install
-        run: make -C build -j2 install DESTDIR=.
-      - name: Failed tests log
-        if: ${{ failure() }}
-        run: cat build/Testing/Temporary/LastTest.log || true
-
-  # coverage build
-  dbg-cov:
-    name: dbg-cov (ubuntu-20.04, gnu, cur)
-    runs-on: ubuntu-20.04 #
-    env:
-      CFLAGS: -O0 --coverage
-      CXXFLAGS: -O0 --coverage
-    steps:
-      - uses: actions/checkout@v2
-      - name: Prepare environment (for cur gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
-        run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
-      - name: Install dependencies (Linux)
-        if: runner.os == 'Linux'
-        run: |
-          sudo apt-get install \
-            libevent-dev \
-            libsasl2-dev \
-            ${INSTALL_MEMCACHED} \
-            ${INSTALL_CC} ${INSTALL_CXX}
-          sudo systemctl stop memcached || true
-      - name: Install dependencies (Mac)
-        if: runner.os == 'macOS'
-        run: |
-          brew install bison flex ${INSTALL_MEMCACHED}
-          brew services stop memcached || true
-          echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
-      - name: Build memcached
-        run: |
-          if test -d memcached
-          then
-            cd memcached
-            ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
-              --prefix=${MEMCACHED_PREFIX} \
-              --enable-sasl \
-              --enable-sasl-pwdb \
-              --disable-coverage \
-              --disable-dependency-tracking \
-              --disable-docs \
-              --disable-extstore \
-              --disable-option-checking \
-              ;
-            make -j2
-            make install
-            cd ..
-            echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
-          fi
-      - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
-        run: cmake -S . -B build
-      - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
-        run: make -C build -j2 all
-      - name: Test
-        run: make -C build -j2 test
-      - name: Install
-        run: make -C build -j2 install DESTDIR=.
-      - name: Failed tests log
-        if: ${{ failure() }}
-        run: cat build/Testing/Temporary/LastTest.log || true
-      - uses: codecov/codecov-action@v1.0.13
-
-  # mac build
-  dbg-mac:
-    name: dbg-mac (macos-10.15, clang, apple)
-    runs-on: macos-10.15 #
-    continue-on-error: true
-    steps:
-      - uses: actions/checkout@v2
-      - name: Install dependencies (Linux)
-        if: runner.os == 'Linux'
-        run: |
-          sudo apt-get install \
-            libevent-dev \
-            libsasl2-dev \
-            ${INSTALL_MEMCACHED} \
-            ${INSTALL_CC} ${INSTALL_CXX}
-          sudo systemctl stop memcached || true
-      - name: Install dependencies (Mac)
-        if: runner.os == 'macOS'
-        run: |
-          brew install bison flex ${INSTALL_MEMCACHED}
-          brew services stop memcached || true
-          echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
-      - name: Build memcached
-        run: |
-          if test -d memcached
-          then
-            cd memcached
-            ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
-              --prefix=${MEMCACHED_PREFIX} \
-              --enable-sasl \
-              --enable-sasl-pwdb \
-              --disable-coverage \
-              --disable-dependency-tracking \
-              --disable-docs \
-              --disable-extstore \
-              --disable-option-checking \
-              ;
-            make -j2
-            make install
-            cd ..
-            echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
-          fi
-      - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
-        run: cmake -S . -B build
-      - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
-        run: make -C build -j2 all
-      - name: Test
-        run: make -C build -j2 test
-      - name: Install
-        run: make -C build -j2 install DESTDIR=.
-      - name: Failed tests log
-        if: ${{ failure() }}
-        run: cat build/Testing/Temporary/LastTest.log || true
-
-  # release builds
-  release:
-    strategy:
-      fail-fast: false
-      matrix:
-        os_ver: [ubuntu-20.04, ubuntu-18.04]
-        cc_vnd: [gnu, clang]
-        cc_ver: [new, cur, old]
-    runs-on: ${{ matrix.os_ver }}
-    continue-on-error: ${{ matrix.cc_vnd == 'clang' }}
-    env:
-      CMAKE_BUILD_TYPE: Release
-      OS_VND: Linux
-      OS_VER: ${{ matrix.os_ver }}
-      CC_VND: ${{ matrix.cc_vnd }}
-      CC_VER: ${{ matrix.cc_ver }}
-    steps:
-      - uses: actions/checkout@v2
-      - name: Prepare environment (for new gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
-        run: |
-          echo CC="gcc-10" >> ${GITHUB_ENV}
-          echo CXX="g++-10" >> ${GITHUB_ENV}
-          echo INSTALL_CC="gcc-10" >> ${GITHUB_ENV}
-          echo INSTALL_CXX="g++-10" >> ${GITHUB_ENV}
-      - name: Prepare environment (for cur gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
-        run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
-      - name: Prepare environment (for old gnu on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
-        run: |
-          echo CC="gcc-8" >> ${GITHUB_ENV}
-          echo CXX="g++-8" >> ${GITHUB_ENV}
-      - name: Prepare environment (for new clang on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
-        run: |
-          echo CC="clang-10" >> ${GITHUB_ENV}
-          echo CXX="clang++-10" >> ${GITHUB_ENV}
-      - name: Prepare environment (for cur clang on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
-        run: |
-          echo CC="clang-9" >> ${GITHUB_ENV}
-          echo CXX="clang++-9" >> ${GITHUB_ENV}
-      - name: Prepare environment (for old clang on ubuntu-20.04)
-        if: (env.OS_VER=='ubuntu-20.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
-        run: |
-          echo CC="clang-8" >> ${GITHUB_ENV}
-          echo CXX="clang++-8" >> ${GITHUB_ENV}
-      - name: Prepare environment (for new gnu on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='new')
-        run: |
-          echo CC="gcc-9" >> ${GITHUB_ENV}
-          echo CXX="g++-9" >> ${GITHUB_ENV}
-      - name: Prepare environment (for cur gnu on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='cur')
-        run: |
-          echo CC="gcc-8" >> ${GITHUB_ENV}
-          echo CXX="g++-8" >> ${GITHUB_ENV}
-      - name: Prepare environment (for old gnu on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='gnu') && (env.CC_VER=='old')
-        run: |
-          echo CC="gcc-7" >> ${GITHUB_ENV}
-          echo CXX="g++-7" >> ${GITHUB_ENV}
-      - name: Prepare environment (for new clang on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='new')
-        run: |
-          echo CC="clang-9" >> ${GITHUB_ENV}
-          echo CXX="clang++-9" >> ${GITHUB_ENV}
-      - name: Prepare environment (for cur clang on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='cur')
-        run: |
-          echo CC="clang-8" >> ${GITHUB_ENV}
-          echo CXX="clang++-8" >> ${GITHUB_ENV}
-      - name: Prepare environment (for old clang on ubuntu-18.04)
-        if: (env.OS_VER=='ubuntu-18.04') && (env.CC_VND=='clang') && (env.CC_VER=='old')
-        run: |
-          echo CC="clang-6.0" >> ${GITHUB_ENV}
-          echo CXX="clang++-6.0" >> ${GITHUB_ENV}
-          echo CXXFLAGS="-stdlib=libc++" >> ${GITHUB_ENV}
-      - name: Install dependencies (Linux)
-        if: runner.os == 'Linux'
-        run: |
-          sudo apt-get install \
-            libevent-dev \
-            libsasl2-dev \
-            ${INSTALL_MEMCACHED} \
-            ${INSTALL_CC} ${INSTALL_CXX}
-          sudo systemctl stop memcached || true
-      - name: Install dependencies (Mac)
-        if: runner.os == 'macOS'
-        run: |
-          brew install bison flex ${INSTALL_MEMCACHED}
-          brew services stop memcached || true
-          echo MEMCACHED_BINARY="/usr/local/bin/memcached" >> ${GITHUB_ENV}
-      - name: Build memcached
-        run: |
-          if test -d memcached
-          then
-            cd memcached
-            ./autogen.sh
-            ./configure CFLAGS="-O2 -pipe" \
-              --prefix=${MEMCACHED_PREFIX} \
-              --enable-sasl \
-              --enable-sasl-pwdb \
-              --disable-coverage \
-              --disable-dependency-tracking \
-              --disable-docs \
-              --disable-extstore \
-              --disable-option-checking \
-              ;
-            make -j2
-            make install
-            cd ..
-            echo MEMCACHED_BINARY="${MEMCACHED_PREFIX}/bin/memcached" >> ${GITHUB_ENV}
-          fi
-      - name: Generate build tree (${{ env.CMAKE_BUILD_TYPE }})
-        run: cmake -S . -B build
-      - name: Build all with ${{ env.CXX }} ${{ env.CXXFLAGS }}
-        run: make -C build -j2 all
-      - name: Test
-        run: make -C build -j2 test
-      - name: Install
-        run: make -C build -j2 install DESTDIR=.
-      - name: Failed tests log
-        if: ${{ failure() }}
-        run: cat build/Testing/Temporary/LastTest.log || true
diff --git a/CMake/CheckByteswap.cmake b/CMake/CheckByteswap.cmake
new file mode 100644 (file)
index 0000000..b238a80
--- /dev/null
@@ -0,0 +1,58 @@
+include(CheckHeader)
+include(CheckDecl)
+include(CheckCompiles)
+
+# defines HAVE_BYTESWAP
+# optionally defines BYTESWAP_HEADER
+# optionally defines BYTESWAP_32
+#
+# checks whether the following compiles:
+# __builtin_bswap32(): defines HAVE_BUILTIN_BSWAP32
+#
+# else checks:
+# byteswap.h: defines HAVE_BYTESWAP_H
+# bswap_32() in byteswap.h: defines HAVE_BSWAP_32
+#
+# else checks:
+# sys/endian.h: defines HAVE_SYS_ENDIAN_H
+# bswap32() in sys/endian.h: defines HAVE_BSWAP32
+#
+function(check_byteswap)
+
+    check_compiles(HAVE_BUILTIN_BSWAP32 "uint32_t a, b = __builtin_bswap32(a);" stdint.h)
+
+    if(HAVE_BUILTIN_BSWAP32)
+        unset(BYTESWAP_HEADER PARENT_SCOPE)
+        set(BYTESWAP_32 __builtin_bswap32 PARENT_SCOPE)
+        set(HAVE_BYTESWAP 1 PARENT_SCOPE)
+        return()
+    endif()
+
+    check_header(byteswap.h)
+    check_decl(bswap_32 byteswap.h)
+
+    if(HAVE_BSWAP_32)
+        if(HAVE_BYTESWAP_H)
+            set(BYTESWAP_HEADER byteswap.h PARENT_SCOPE)
+        endif()
+        set(BYTESWAP_32 bswap_32 PARENT_SCOPE)
+        set(HAVE_BYTESWAP 1 PARENT_SCOPE)
+        return()
+    endif()
+
+    check_header(sys/endian.h)
+    check_decl(bswap32 sys/endian.h)
+
+    if(HAVE_BSWAP32)
+        if(HAVE_SYS_ENDIAN_H)
+            set(BYTESWAP_HEADER sys/endian.h PARENT_SCOPE)
+        endif()
+        set(BYTESWAP_32 bswap32 PARENT_SCOPE)
+        set(HAVE_BYTESWAP 1 PARENT_SCOPT)
+        return()
+    endif()
+
+    unset(BYTESWAP_HEADER PARENT_SCOPE)
+    unset(BYTESWAP_32 PARENT_SCOPE)
+    set(HAVE_BYTESWAP 0 PARENT_SCOPE)
+endfunction()
index 7067ef46fc4cea2ab5a5b6ed57c0316aba713fd3..41077574258e89dff776e61a9b6441561348cee6 100644 (file)
@@ -26,6 +26,8 @@ include(CheckHeader)
 include(CheckCompiles)
 include(CheckType)
 include(CheckStdatomic)
+include(TestBigEndian)
+include(CheckByteswap)
 
 # configuration
 
@@ -76,8 +78,8 @@ endif()
 
 # system checks
 
-include(TestBigEndian)
 test_big_endian(WORDS_BIGENDIAN)
+check_byteswap()
 
 check_header(alloca.h)
 check_header(arpa/inet.h)
@@ -112,6 +114,7 @@ check_decl(sndtimeo sys/socket.h)
 check_decl(setenv stdlib.h)
 check_decl(strerror string.h)
 check_decl(strerror_r string.h)
+
 check_compiles(HAVE_STRERROR_R_CHAR_P "char x, y = *strerror_r(0,&x,1);" string.h)
 
 check_decl(abi::__cxa_demangle cxxabi.h)