summaryrefslogtreecommitdiff
path: root/flang/CMakeLists.txt
diff options
context:
space:
mode:
authorMichael Kruse <llvm-project@meinersbur.de>2021-09-03 14:48:40 -0500
committerMichael Kruse <llvm-project@meinersbur.de>2021-09-03 15:44:51 -0500
commit84e1258febe1f179e5d4e1914be7b727d2296336 (patch)
tree1d1aa326dbdfc7027f72cec002af28221bf98033 /flang/CMakeLists.txt
parent37ce7349f7e95ef19cd6169e70414286b33114cb (diff)
downloadllvm-84e1258febe1f179e5d4e1914be7b727d2296336.tar.gz
[flang] Use CMake to determine endianness.
The preprocessor definitions __BYTE_ORDER__, __ORDER_BIG_ENDIAN__, and __ORDER_LITTLE_ENDIAN__ are gcc extensions (also supported by clang), but msvc (and others) do not define them. As a result __BYTE_ORDER__ and __ORDER_BIG_ENDIAN__ both evaluate to 0 by the prepreprocessor, and __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__, the first `#if` condition to 1, hence assuming the wrong byte order for x86(_64). This patch instead uses CMake's TestBigEndian module to determine target architecture's endianness at configure-time. Note this also uses the same mechanism for the runtime. If compiling flang as a cross-compiler, the runtime for the compile-target must be built separately (Flang does not support the LLVM_ENABLE_RUNTIMES mechanism yet). Fixes llvm.org/PR51597 Reviewed By: ijan1, Leporacanthicus Differential Revision: https://reviews.llvm.org/D109108
Diffstat (limited to 'flang/CMakeLists.txt')
-rw-r--r--flang/CMakeLists.txt8
1 files changed, 8 insertions, 0 deletions
diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt
index f5e602b6b844..13ecc372a2ac 100644
--- a/flang/CMakeLists.txt
+++ b/flang/CMakeLists.txt
@@ -295,6 +295,14 @@ if (FLANG_REPOSITORY_STRING)
add_definitions(-DFLANG_REPOSITORY_STRING="${FLANG_REPOSITORY_STRING}")
endif()
+include(TestBigEndian)
+test_big_endian(IS_BIGENDIAN)
+if (IS_BIGENDIAN)
+ add_compile_definitions(FLANG_BIG_ENDIAN=1)
+else ()
+ add_compile_definitions(FLANG_LITTLE_ENDIAN=1)
+endif ()
+
# Configure Flang's Version.inc file.
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/include/flang/Version.inc.in