diff options
author | Markus Mützel <markus.muetzel@gmx.de> | 2023-04-25 10:09:20 -0700 |
---|---|---|
committer | Slava Zakharin <szakharin@nvidia.com> | 2023-04-25 10:12:41 -0700 |
commit | 329964769972ef3c8a68f2dfea30e66beb4ae3e2 (patch) | |
tree | 70cdcaa5e357ce4da06d334081129fa53c17fd7c /flang/runtime | |
parent | 71f862b7bb2c2413d9e47d281ed6f901f8bcd6e3 (diff) | |
download | llvm-329964769972ef3c8a68f2dfea30e66beb4ae3e2.tar.gz |
[flang] Avoid dependency of runtime library on pthread for MinGW
When building the Fortran runtime on MinGW, `clock_gettime` is currently used. That function is provided by the `pthread` library on that platform. That means that all programs that link `libFortranRuntime` also require to be linked with `pthread` on that platform.
There is already a code path (for MSVC) that doesn't use `clock_gettime` in the implementation of the Fortran library.
Use the same code path also on MinGW by undefining `CLOCKID`.
Reviewed By: vzakhari
Differential Revision: https://reviews.llvm.org/D149051
Diffstat (limited to 'flang/runtime')
-rw-r--r-- | flang/runtime/time-intrinsic.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/flang/runtime/time-intrinsic.cpp b/flang/runtime/time-intrinsic.cpp index 5f7b50964fe2..68d63253139f 100644 --- a/flang/runtime/time-intrinsic.cpp +++ b/flang/runtime/time-intrinsic.cpp @@ -56,7 +56,12 @@ template <typename Unused = void> double GetCpuTime(fallback_implementation) { return -1.0; } -#if defined CLOCK_PROCESS_CPUTIME_ID +#if defined __MINGW32__ +// clock_gettime is implemented in the pthread library for MinGW. +// Using it here would mean that all programs that link libFortranRuntime are +// required to also link to pthread. Instead, don't use the function. +#undef CLOCKID +#elif defined CLOCK_PROCESS_CPUTIME_ID #define CLOCKID CLOCK_PROCESS_CPUTIME_ID #elif defined CLOCK_THREAD_CPUTIME_ID #define CLOCKID CLOCK_THREAD_CPUTIME_ID |