summaryrefslogtreecommitdiff
path: root/flang-rt
diff options
context:
space:
mode:
authorLeandro Lupori <leandro.lupori@linaro.org>2025-09-26 09:37:06 -0300
committerGitHub <noreply@github.com>2025-09-26 09:37:06 -0300
commitbb38b48910967041045997a0c1293ee2ba834196 (patch)
tree438521b3e3507044014b6ca352c0d226ab2099a9 /flang-rt
parenteaf36c668c956a90bfb00c47415c4c8550f159c8 (diff)
[flang-rt] Set _POSIX_C_SOURCE on Darwin (#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
Diffstat (limited to 'flang-rt')
-rw-r--r--flang-rt/cmake/modules/AddFlangRT.cmake9
-rw-r--r--flang-rt/unittests/CMakeLists.txt9
2 files changed, 17 insertions, 1 deletions
diff --git a/flang-rt/cmake/modules/AddFlangRT.cmake b/flang-rt/cmake/modules/AddFlangRT.cmake
index 43b1451d65e3..ab383bcbe2cd 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 fd63ad11dcf4..53cd54dfd215 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()