This appears to have broken the Chromium build: https://build.chromium.org/p/chromium.fyi/builders/ClangToTMac/builds/12620/steps/gclient%20runhooks/logs/stdio FAILED: projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o /Applications/Xcode8.0.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -D_DEBUG -D_LIBCPP_BUILDING_LIBRARY -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iprojects/libcxx/lib -I/b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/lib -Iinclude -I/b/c/b/ClangToTMac/src/third_party/llvm/include -I/b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/include -DLLVM_FORCE_HEAD_REVISION -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -Werror=date-time -std=c++11 -fcolor-diagnostics -O3 -isysroot /Applications/Xcode8.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.11 -UNDEBUG -std=c++11 -nostdinc++ -fvisibility-inlines-hidden -Wall -Wextra -W -Wwrite-strings -Wno-unused-parameter -Wno-long-long -Werror=return-type -Wno-user-defined-literals -Wno-covered-switch-default -Wno-error -fPIC -MMD -MT projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o -MF projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o.d -o projects/libcxx/lib/CMakeFiles/cxx_objects.dir/__/src/chrono.cpp.o -c /b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/src/chrono.cpp /b/c/b/ClangToTMac/src/third_party/llvm/projects/libcxx/src/chrono.cpp:102:5: error: use of undeclared identifier 'gettimeofday' gettimeofday(&tv, 0); ^
The interesting flag in there is probably -mmacosx-version-min=10.11. Any thoughts on what's going wrong? On Mon, Jan 9, 2017 at 11:21 AM, Bruno Cardoso Lopes via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: bruno > Date: Mon Jan 9 13:21:48 2017 > New Revision: 291466 > > URL: http://llvm.org/viewvc/llvm-project?rev=291466&view=rev > Log: > [Chrono][Darwin] Make steady_clock use CLOCK_UPTIME_RAW > > Use CLOCK_UPTIME_RAW in case clock_gettime is available on Darwin. > > On Apple platforms only CLOCK_UPTIME_RAW or mach_absolute_time are able > to time functions in the nanosecond range. Thus, they are the only > acceptable implementations of steady_clock. > > Differential Revision: https://reviews.llvm.org/D27429 > > rdar://problem/29449467 > > Modified: > libcxx/trunk/src/chrono.cpp > > Modified: libcxx/trunk/src/chrono.cpp > URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/ > chrono.cpp?rev=291466&r1=291465&r2=291466&view=diff > ============================================================ > ================== > --- libcxx/trunk/src/chrono.cpp (original) > +++ libcxx/trunk/src/chrono.cpp Mon Jan 9 13:21:48 2017 > @@ -12,6 +12,28 @@ > #include "system_error" // __throw_system_error > #include <time.h> // clock_gettime, CLOCK_MONOTONIC and > CLOCK_REALTIME > > +#if (__APPLE__) > +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) > +#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200 > +#define _LIBCXX_USE_CLOCK_GETTIME > +#endif > +#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) > +#if __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 100000 > +#define _LIBCXX_USE_CLOCK_GETTIME > +#endif > +#elif defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) > +#if __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ >= 100000 > +#define _LIBCXX_USE_CLOCK_GETTIME > +#endif > +#elif defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) > +#if __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ >= 30000 > +#define _LIBCXX_USE_CLOCK_GETTIME > +#endif > +#endif // __ENVIRONMENT_.*_VERSION_MIN_REQUIRED__ > +#else > +#define _LIBCXX_USE_CLOCK_GETTIME > +#endif // __APPLE__ > + > #if defined(_LIBCPP_WIN32API) > #define WIN32_LEAN_AND_MEAN > #define VC_EXTRA_LEAN > @@ -70,16 +92,16 @@ system_clock::now() _NOEXCEPT > static_cast<__int64>(ft.dwLowDateTime)}; > return time_point(duration_cast<duration>(d - nt_to_unix_epoch)); > #else > -#ifdef CLOCK_REALTIME > +#if defined(_LIBCXX_USE_CLOCK_GETTIME) && defined(CLOCK_REALTIME) > struct timespec tp; > if (0 != clock_gettime(CLOCK_REALTIME, &tp)) > __throw_system_error(errno, "clock_gettime(CLOCK_REALTIME) > failed"); > return time_point(seconds(tp.tv_sec) + microseconds(tp.tv_nsec / > 1000)); > -#else // !CLOCK_REALTIME > +#else > timeval tv; > gettimeofday(&tv, 0); > return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec)); > -#endif // CLOCK_REALTIME > +#endif // _LIBCXX_USE_CLOCK_GETTIME && CLOCK_REALTIME > #endif > } > > @@ -106,6 +128,18 @@ const bool steady_clock::is_steady; > > #if defined(__APPLE__) > > +// Darwin libc versions >= 1133 provide ns precision via CLOCK_UPTIME_RAW > +#if defined(_LIBCXX_USE_CLOCK_GETTIME) && defined(CLOCK_UPTIME_RAW) > +steady_clock::time_point > +steady_clock::now() _NOEXCEPT > +{ > + struct timespec tp; > + if (0 != clock_gettime(CLOCK_UPTIME_RAW, &tp)) > + __throw_system_error(errno, "clock_gettime(CLOCK_UPTIME_RAW) > failed"); > + return time_point(seconds(tp.tv_sec) + nanoseconds(tp.tv_nsec)); > +} > + > +#else > // mach_absolute_time() * MachInfo.numer / MachInfo.denom is the number > of > // nanoseconds since the computer booted up. MachInfo.numer and > MachInfo.denom > // are run time constants supplied by the OS. This clock has no > relationship > @@ -157,6 +191,7 @@ steady_clock::now() _NOEXCEPT > static FP fp = init_steady_clock(); > return time_point(duration(fp())); > } > +#endif // defined(_LIBCXX_USE_CLOCK_GETTIME) && defined(CLOCK_UPTIME_RAW) > > #elif defined(_LIBCPP_WIN32API) > > @@ -175,6 +210,13 @@ steady_clock::now() _NOEXCEPT > > #elif defined(CLOCK_MONOTONIC) > > +// On Apple platforms only CLOCK_UPTIME_RAW or mach_absolute_time are > able to > +// time functions in the nanosecond range. Thus, they are the only > acceptable > +// implementations of steady_clock. > +#ifdef __APPLE__ > +#error "Never use CLOCK_MONOTONIC for steady_clock::now on Apple > platforms" > +#endif > + > steady_clock::time_point > steady_clock::now() _NOEXCEPT > { > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits