• T
    db: avoid `#include`ing malloc and jemalloc simultaneously · 0dc3040d
    Tamir Duberstein 提交于
    Summary:
    This fixes a compilation failure on Linux when the system libc is not
    glibc. jemalloc's configure script incorrectly assumes that glibc is
    always used on Linux systems, producing glibc-style signatures; when
    the system libc is e.g. musl, the following error is observed:
    
    ```
      [  0%] Building CXX object CMakeFiles/rocksdb.dir/db/db_impl.cc.o
      In file included from /go/src/github.com/cockroachdb/cockroach/c-deps/rocksdb.src/table/block.h:19:0,
                       from /go/src/github.com/cockroachdb/cockroach/c-deps/rocksdb.src/db/db_impl.cc:77:
      /x-tools/x86_64-unknown-linux-musl/x86_64-unknown-linux-musl/sysroot/usr/include/malloc.h:19:8: error: declaration of 'size_t malloc_usable_size(void*)' has a different exception specifier
       size_t malloc_usable_size(void *);
              ^~~~~~~~~~~~~~~~~~
      In file included from /go/src/github.com/cockroachdb/cockroach/c-deps/rocksdb.src/db/db_impl.cc:20:0:
      /go/native/x86_64-unknown-linux-musl/jemalloc/include/jemalloc/jemalloc.h:78:33: note: from previous declaration 'size_t malloc_usable_size(void*) throw ()'
       #  define je_malloc_usable_size malloc_usable_size
                                       ^
      /go/native/x86_64-unknown-linux-musl/jemalloc/include/jemalloc/jemalloc.h:239:41: note: in expansion of macro 'je_malloc_usable_size'
       JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW je_malloc_usable_size(
                                               ^~~~~~~~~~~~~~~~~~~~~
      CMakeFiles/rocksdb.dir/build.make:350: recipe for target 'CMakeFiles/rocksdb.dir/db/db_impl.cc.o' failed
    ```
    
    This works around the issue by rearranging the sources such that
    jemalloc's headers are never in the same scope as the system's malloc
    header. The jemalloc issue has been reported as well, see:
    https://github.com/jemalloc/jemalloc/issues/778.
    
    cc tschottdorf
    Closes https://github.com/facebook/rocksdb/pull/2188
    
    Differential Revision: D5163048
    
    Pulled By: siying
    
    fbshipit-source-id: c553125458892def175c1be5682b0330d80b2a0d
    0dc3040d
CMakeLists.txt 28.0 KB