From 66adbf39abebeb890be8b5ea5a8685da20819696 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Tue, 2 Dec 2025 21:16:43 -0700 Subject: [PATCH] Fix endianness issue in dtoa.cpp Define IEEE_MC68k instead of IEEE_8087 on big endian architectures. --- src/CMakeLists.txt | 4 ++++ src/amplmp/src/dtoa.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c6ce72830c..a008ba4e0c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,6 +12,10 @@ set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED on) set(CMAKE_C_EXTENSIONS OFF) +if(CMAKE_CXX_BYTE_ORDER STREQUAL "BIG_ENDIAN") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSCIP_BIG_ENDIAN") +endif() + if(NOT WIN32) set(SCIP_COMP_OPTIONS ${SCIP_COMP_OPTIONS} "$<$:-D_XOPEN_SOURCE=600>") endif() diff --git a/src/amplmp/src/dtoa.cpp b/src/amplmp/src/dtoa.cpp index 3386cea500..6a08971b88 100644 --- a/src/amplmp/src/dtoa.cpp +++ b/src/amplmp/src/dtoa.cpp @@ -349,7 +349,11 @@ static double private_mem[PRIVATE_mem], *pmem_next = private_mem; extern "C" { #endif +#ifdef SCIP_BIG_ENDIAN +#define IEEE_MC68k +#else #define IEEE_8087 +#endif #define IEEE_Arith #if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1 Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined.