[llvm] [flang-rt] Set _POSIX_C_SOURCE on Darwin (PR #160130)
Leandro Lupori via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 22 08:32:14 PDT 2025
https://github.com/luporl created https://github.com/llvm/llvm-project/pull/160130
Clang on Darwin enables non-POSIX extensions by default.
This causes some macros to leak, such as HUGE from <math.h>, which
causes some conflicts with Flang symbols (but not with Flang-RT, for
now).
It also causes some Flang-RT extensions to be disabled, such as FDATE,
that checks for _POSIX_C_SOURCE. Setting _POSIX_C_SOURCE avoids these
issues. This is already being done in Flang, but it was not ported to
Flang-RT.
This also fixes check-flang-rt on Darwin, as NoArgv.FdateNotSupported
is broken since the flang runtime was moved to flang-rt.
Fixes #82036
>From 2439243e477a826a1cd5d9112e4ae0cb37b1baca Mon Sep 17 00:00:00 2001
From: Leandro Lupori <leandro.lupori at linaro.org>
Date: Mon, 22 Sep 2025 11:26:20 -0300
Subject: [PATCH] [flang-rt] Set _POSIX_C_SOURCE on Darwin
Clang on Darwin enables non-POSIX extensions by default.
This causes some macros to leak, such as HUGE from <math.h>, which
causes some conflicts with Flang symbols (but not with Flang-RT, for
now).
It also causes some Flang-RT extensions to be disabled, such as FDATE,
that checks for _POSIX_C_SOURCE. Setting _POSIX_C_SOURCE avoids these
issues. This is already being done in Flang, but it was not ported to
Flang-RT.
This also fixes check-flang-rt on Darwin, as NoArgv.FdateNotSupported
is broken since the flang runtime was moved to flang-rt.
Fixes #82036
---
flang-rt/cmake/modules/AddFlangRT.cmake | 9 ++++++++-
flang-rt/unittests/CMakeLists.txt | 9 +++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/flang-rt/cmake/modules/AddFlangRT.cmake b/flang-rt/cmake/modules/AddFlangRT.cmake
index 43b1451d65e32..ab383bcbe2cdf 100644
--- a/flang-rt/cmake/modules/AddFlangRT.cmake
+++ b/flang-rt/cmake/modules/AddFlangRT.cmake
@@ -251,8 +251,15 @@ function (add_flangrt_library name)
$<$<COMPILE_LANGUAGE:CXX>:-nogpulib -flto -fvisibility=hidden -Wno-unknown-cuda-version --cuda-feature=+ptx63>
)
elseif (APPLE)
+ # Clang on Darwin enables non-POSIX extensions by default.
+ # This causes some macros to leak, such as HUGE from <math.h>, which
+ # causes some conflicts with Flang symbols (but not with Flang-RT, for
+ # now).
+ # It also causes some Flang-RT extensions to be disabled, such as fdate,
+ # that checks for _POSIX_C_SOURCE.
+ # Setting _POSIX_C_SOURCE avoids these issues.
target_compile_options(${tgtname} PRIVATE
- $<$<COMPILE_LANGUAGE:CXX>:${DARWIN_osx_BUILTIN_MIN_VER_FLAG}>
+ $<$<COMPILE_LANGUAGE:CXX>:${DARWIN_osx_BUILTIN_MIN_VER_FLAG} -D_POSIX_C_SOURCE=200809>
)
endif ()
diff --git a/flang-rt/unittests/CMakeLists.txt b/flang-rt/unittests/CMakeLists.txt
index fd63ad11dcf43..53cd54dfd215e 100644
--- a/flang-rt/unittests/CMakeLists.txt
+++ b/flang-rt/unittests/CMakeLists.txt
@@ -78,6 +78,15 @@ function(add_flangrt_dependent_libs target)
instead falls back to builtins from Compiler-RT. Linking with ${tgtname}
may result in a linker error.")
endif ()
+ elseif (APPLE)
+ # Clang on Darwin enables non-POSIX extensions by default.
+ # This causes some macros to leak, such as HUGE from <math.h>, which
+ # causes some conflicts with Flang symbols (but not with Flang-RT, for
+ # now).
+ # It also causes some Flang-RT extensions to be disabled, such as fdate,
+ # that checks for _POSIX_C_SOURCE.
+ # Setting _POSIX_C_SOURCE avoids these issues.
+ target_compile_options(${target} PRIVATE "-D_POSIX_C_SOURCE=200809")
endif ()
endfunction()
More information about the llvm-commits
mailing list