Skip to content
Snippets Groups Projects
Commit 5c1cea6f authored by Serge Pavlov's avatar Serge Pavlov
Browse files

[Support] Fix build for Haiku

This change fixes two issues with building LLVM on Haiku. The first issue is
that LLVM requires wait4(), which on Haiku is hidden behind the _BSD_SOURCE
feature flag when using the --std=c++14 flag. Additionally, the wait4()
function is only available in libbsd.so, so this is now a dependency.

The other fix is that Haiku does not have the (non-standard) rusage.maxrss
member, so by default the used memory info will be set to 0 on this platform.

Reviewed By: sepavloff

Differential Revision: https://reviews.llvm.org/D87920

Patch by Niels Sascha Reedijk.
parent 2b9ed4fc
No related branches found
No related tags found
No related merge requests found
......@@ -36,6 +36,10 @@ elseif( CMAKE_HOST_UNIX )
if( FUCHSIA )
set(system_libs ${system_libs} zircon)
endif()
if ( HAIKU )
add_definitions(-D_BSD_SOURCE)
set(system_libs ${system_libs} bsd)
endif()
endif( MSVC OR MINGW )
# Delay load shell32.dll if possible to speed up process startup.
......
......@@ -452,8 +452,12 @@ ProcessInfo llvm::sys::Wait(const ProcessInfo &PI, unsigned SecondsToWait,
if (ProcStat) {
std::chrono::microseconds UserT = toDuration(Info.ru_utime);
std::chrono::microseconds KernelT = toDuration(Info.ru_stime);
#ifndef __HAIKU__
uint64_t PeakMemory = static_cast<uint64_t>(Info.ru_maxrss);
*ProcStat = ProcessStatistics{UserT + KernelT, UserT, PeakMemory};
#else
*ProcStat = ProcessStatistics{UserT + KernelT, UserT, 0};
#endif
}
// Return the proper exit status. Detect error conditions
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment