mirror of
https://github.com/google/leveldb.git
synced 2024-12-18 17:37:46 +08:00
b70493ca85
The CMake feature-detection code used check_symbol_exists(), which invokes the C compiler. However, some glibc versions don't expose the fdatasync() declaration when compiled with -std=c11, but do expose it when compiled with -std=c++11. This most likely comes down to how _POSIX_SOURCE is defined -- it needs to be >= 201112L for <unistd.h> to expose fdatasync(). This CL switches to check_cxx_symbol_exists(), which uses the C++ compiler. Asides from fixing the problem above, this is the right thing to do, because we use <unistd.h> in env_posix.cc, which is compiled with the C++ compiler. This CL also fixes a previously introduced inconsistency, where the macro indicating the fdatasync() feature detection result was referred to as HAVE_FDATASYNC and HAVE_FUNC_FDATASYNC. The former appears to be used in other libraries, so this CL switches all our references to HAVE_FDATASYNC. Fixes https://github.com/google/leveldb/issues/629 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=228392612
29 lines
1.0 KiB
C
29 lines
1.0 KiB
C
// Copyright 2017 The LevelDB Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
|
|
#ifndef STORAGE_LEVELDB_PORT_PORT_CONFIG_H_
|
|
#define STORAGE_LEVELDB_PORT_PORT_CONFIG_H_
|
|
|
|
// Define to 1 if you have a definition for fdatasync() in <unistd.h>.
|
|
#if !defined(HAVE_FDATASYNC)
|
|
#cmakedefine01 HAVE_FDATASYNC
|
|
#endif // !defined(HAVE_FDATASYNC)
|
|
|
|
// Define to 1 if you have Google CRC32C.
|
|
#if !defined(HAVE_CRC32C)
|
|
#cmakedefine01 HAVE_CRC32C
|
|
#endif // !defined(HAVE_CRC32C)
|
|
|
|
// Define to 1 if you have Google Snappy.
|
|
#if !defined(HAVE_SNAPPY)
|
|
#cmakedefine01 HAVE_SNAPPY
|
|
#endif // !defined(HAVE_SNAPPY)
|
|
|
|
// Define to 1 if your processor stores words with the most significant byte
|
|
// first (like Motorola and SPARC, unlike Intel and VAX).
|
|
#if !defined(LEVELDB_IS_BIG_ENDIAN)
|
|
#cmakedefine01 LEVELDB_IS_BIG_ENDIAN
|
|
#endif // !defined(LEVELDB_IS_BIG_ENDIAN)
|
|
|
|
#endif // STORAGE_LEVELDB_PORT_PORT_CONFIG_H_
|