Summary: This PR adds support for building on s390x including updating travis CI. It uses the previous work in https://github.com/facebook/rocksdb/pull/6168 and adds some more changes to get all current tests (make check and jni tests) to pass. The tests were run with snappy, lz4, bzip2 and zstd all compiled in. There are a few pieces still needed to get the travis build working that I don't think I can do. adamretter is this something you could help with? 1. A prebuilt https://rocksdb-deps.s3-us-west-2.amazonaws.com/cmake/cmake-3.14.5-Linux-s390x.deb package 2. A https://hub.docker.com/r/evolvedbinary/rocksjava s390x image Not sure if there is more required for travis. Happy to help in any way I can. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8962 Reviewed By: mrambacher Differential Revision: D31802198 Pulled By: pdillinger fbshipit-source-id: 683511466fa6b505f85ba5a9964a268c6151f0c2
100 lines
2.0 KiB
C++
100 lines
2.0 KiB
C++
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under both the GPLv2 (found in the
|
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
// (found in the LICENSE.Apache file in the root directory).
|
|
|
|
#pragma once
|
|
|
|
#include <folly/CPortability.h>
|
|
|
|
#if defined(__arm__)
|
|
#define FOLLY_ARM 1
|
|
#else
|
|
#define FOLLY_ARM 0
|
|
#endif
|
|
|
|
#if defined(__x86_64__) || defined(_M_X64)
|
|
#define FOLLY_X64 1
|
|
#else
|
|
#define FOLLY_X64 0
|
|
#endif
|
|
|
|
#if defined(__aarch64__)
|
|
#define FOLLY_AARCH64 1
|
|
#else
|
|
#define FOLLY_AARCH64 0
|
|
#endif
|
|
|
|
#if defined(__powerpc64__)
|
|
#define FOLLY_PPC64 1
|
|
#else
|
|
#define FOLLY_PPC64 0
|
|
#endif
|
|
|
|
#if defined(__s390x__)
|
|
#define FOLLY_S390X 1
|
|
#else
|
|
#define FOLLY_S390X 0
|
|
#endif
|
|
|
|
#if defined(__has_builtin)
|
|
#define FOLLY_HAS_BUILTIN(...) __has_builtin(__VA_ARGS__)
|
|
#else
|
|
#define FOLLY_HAS_BUILTIN(...) 0
|
|
#endif
|
|
|
|
#if defined(__has_cpp_attribute)
|
|
#if __has_cpp_attribute(nodiscard)
|
|
#define FOLLY_NODISCARD [[nodiscard]]
|
|
#endif
|
|
#endif
|
|
#if !defined FOLLY_NODISCARD
|
|
#if defined(_MSC_VER) && (_MSC_VER >= 1700)
|
|
#define FOLLY_NODISCARD _Check_return_
|
|
#elif defined(__GNUC__)
|
|
#define FOLLY_NODISCARD __attribute__((__warn_unused_result__))
|
|
#else
|
|
#define FOLLY_NODISCARD
|
|
#endif
|
|
#endif
|
|
|
|
namespace folly {
|
|
constexpr bool kIsArchArm = FOLLY_ARM == 1;
|
|
constexpr bool kIsArchAmd64 = FOLLY_X64 == 1;
|
|
constexpr bool kIsArchAArch64 = FOLLY_AARCH64 == 1;
|
|
constexpr bool kIsArchPPC64 = FOLLY_PPC64 == 1;
|
|
constexpr bool kIsArchS390X = FOLLY_S390X == 1;
|
|
} // namespace folly
|
|
|
|
namespace folly {
|
|
#ifdef NDEBUG
|
|
constexpr auto kIsDebug = false;
|
|
#else
|
|
constexpr auto kIsDebug = true;
|
|
#endif
|
|
} // namespace folly
|
|
|
|
namespace folly {
|
|
#if defined(_MSC_VER)
|
|
constexpr bool kIsMsvc = true;
|
|
#else
|
|
constexpr bool kIsMsvc = false;
|
|
#endif
|
|
} // namespace folly
|
|
|
|
namespace folly {
|
|
#if FOLLY_SANITIZE_THREAD
|
|
constexpr bool kIsSanitizeThread = true;
|
|
#else
|
|
constexpr bool kIsSanitizeThread = false;
|
|
#endif
|
|
} // namespace folly
|
|
|
|
namespace folly {
|
|
#if defined(__linux__) && !FOLLY_MOBILE
|
|
constexpr auto kIsLinux = true;
|
|
#else
|
|
constexpr auto kIsLinux = false;
|
|
#endif
|
|
} // namespace folly
|