aboutsummaryrefslogtreecommitdiffstats
path: root/build/export_generators/hardcoded-cmake/cmake/global_flags.compiler.gnu.cmake
diff options
context:
space:
mode:
authoralexv-smirnov <alex@ydb.tech>2023-07-28 17:10:28 +0300
committeralexv-smirnov <alex@ydb.tech>2023-07-28 17:10:28 +0300
commitc8ce88b2d80cb6860aa97818c49d65b90c7bd31b (patch)
treebe14b6f8d5b8fd6e264a047a22dc78d760981159 /build/export_generators/hardcoded-cmake/cmake/global_flags.compiler.gnu.cmake
parent128317b5f4cb38480a6c3407e25a144ce3026a1c (diff)
downloadydb-c8ce88b2d80cb6860aa97818c49d65b90c7bd31b.tar.gz
Add yexport export generators
Diffstat (limited to 'build/export_generators/hardcoded-cmake/cmake/global_flags.compiler.gnu.cmake')
-rw-r--r--build/export_generators/hardcoded-cmake/cmake/global_flags.compiler.gnu.cmake96
1 files changed, 96 insertions, 0 deletions
diff --git a/build/export_generators/hardcoded-cmake/cmake/global_flags.compiler.gnu.cmake b/build/export_generators/hardcoded-cmake/cmake/global_flags.compiler.gnu.cmake
new file mode 100644
index 0000000000..3dcde4027f
--- /dev/null
+++ b/build/export_generators/hardcoded-cmake/cmake/global_flags.compiler.gnu.cmake
@@ -0,0 +1,96 @@
+set(_GNU_COMMON_C_CXX_FLAGS "\
+ -fexceptions \
+ -fno-common \
+ -fcolor-diagnostics \
+ -faligned-allocation \
+ -fdebug-default-version=4 \
+ -ffunction-sections \
+ -fdata-sections \
+ -Wall \
+ -Wextra \
+ -Wno-parentheses \
+ -Wno-implicit-const-int-float-conversion \
+ -Wno-unknown-warning-option \
+ -pipe \
+ -D_THREAD_SAFE \
+ -D_PTHREADS \
+ -D_REENTRANT \
+ -D_LARGEFILE_SOURCE \
+ -D__STDC_CONSTANT_MACROS \
+ -D__STDC_FORMAT_MACROS \
+ -D__LONG_LONG_SUPPORTED \
+")
+
+if (CMAKE_SYSTEM_NAME MATCHES "^(Android|Linux)$")
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -D_GNU_SOURCE")
+endif()
+
+if (CMAKE_SYSTEM_NAME MATCHES "^(Darwin|Linux)$")
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -DLIBCXX_BUILDING_LIBCXXRT")
+endif()
+
+if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ # Use .init_array instead of .ctors (default for old clang versions)
+ # See: https://maskray.me/blog/2021-11-07-init-ctors-init-array
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -fuse-init-array")
+endif()
+
+if (ANDROID)
+ include_directories(SYSTEM ${CMAKE_ANDROID_NDK}/sources/cxx-stl/llvm-libc++abi/include)
+
+ # There is no usable _FILE_OFFSET_BITS=64 support in Androids until API 21. And it's incomplete until at least API 24.
+ # https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
+else()
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -D_FILE_OFFSET_BITS=64")
+endif()
+
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|aarch64|ppc64le)")
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -fsigned-char")
+endif()
+
+if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64|AMD64)$")
+ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "i686")
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -m32")
+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$")
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -m64")
+ endif()
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS "\
+ -msse2 \
+ -msse3 \
+ -mssse3 \
+ ")
+
+ if ((CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$") OR (NOT ANDROID))
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS "\
+ -msse4.1 \
+ -msse4.2 \
+ -mpopcnt \
+ ")
+ if (NOT ANDROID)
+ # older clang versions did not support this feature on Android:
+ # https://reviews.llvm.org/rGc32d307a49f5255602e7543e64e6c38a7f536abc
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -mcx16")
+ endif()
+ endif()
+
+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -D_YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE")
+ endif()
+elseif (ANDROID AND (CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a"))
+ string(APPEND _GNU_COMMON_C_CXX_FLAGS " -mfloat-abi=softfp")
+endif()
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_GNU_COMMON_C_CXX_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_GNU_COMMON_C_CXX_FLAGS} \
+ -Woverloaded-virtual \
+ -Wimport-preprocessor-directive-pedantic \
+ -Wno-undefined-var-template \
+ -Wno-return-std-move \
+ -Wno-defaulted-function-deleted \
+ -Wno-pessimizing-move \
+ -Wno-deprecated-anon-enum-enum-conversion \
+ -Wno-deprecated-enum-enum-conversion \
+ -Wno-deprecated-enum-float-conversion \
+ -Wno-ambiguous-reversed-operator \
+ -Wno-deprecated-volatile \
+")