build: various fixes for compiling on macOS

This commit is contained in:
Christian Hergert
2020-11-16 14:01:02 -08:00
parent c82b0a1677
commit f18fbe5ae8
7 changed files with 48 additions and 8 deletions

View File

@ -57,8 +57,6 @@
#include "config.h"
#include <assert.h>
#include <byteswap.h>
#include <endian.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>

View File

@ -57,7 +57,11 @@
#pragma once
#include <assert.h>
#include <endian.h>
#ifdef __APPLE__
# include <machine/endian.h>
#else
# include <endian.h>
#endif
#include <inttypes.h>
#include <stddef.h>
#include <stdint.h>

View File

@ -57,7 +57,11 @@
#include "config.h"
#include <assert.h>
#include <endian.h>
#ifdef __APPLE__
# include <machine/endian.h>
#else
# include <endian.h>
#endif
#include <errno.h>
#include <fcntl.h>
#include <limits.h>

View File

@ -68,9 +68,13 @@ void
sysprof_clock_init (void)
{
static const int clock_ids[] = {
#ifdef __APPLE__
_CLOCK_MONOTONIC,
#else
CLOCK_MONOTONIC,
CLOCK_MONOTONIC_RAW,
#endif
#ifdef __linux__
CLOCK_MONOTONIC_RAW,
CLOCK_MONOTONIC_COARSE,
CLOCK_REALTIME_COARSE,
#endif

View File

@ -80,7 +80,11 @@ sysprof_clock_get_current_time (void)
SysprofClock clock = sysprof_clock;
if SYSPROF_UNLIKELY (clock == -1)
#ifdef __APPLE__
clock = _CLOCK_MONOTONIC;
#else
clock = CLOCK_MONOTONIC;
#endif
clock_gettime (clock, &ts);
return (ts.tv_sec * SYSPROF_NSEC_PER_SEC) + ts.tv_nsec;

View File

@ -61,6 +61,14 @@
#include <string.h>
#ifdef __APPLE__
# include <libkern/OSByteOrder.h>
# include <architecture/byte_order.h>
#else
# include <byteswap.h>
# include <endian.h>
#endif
#define sysprof_assert_not_reached() assert (false)
#define SYSPROF_N_ELEMENTS(a) (sizeof (a) / sizeof (*a))
@ -77,3 +85,13 @@
} while (0)
#define sysprof_strdup(s) ((s) ? strdup(s) : NULL)
#ifdef __APPLE__
# define bswap_16 OSSwapInt16
# define bswap_32 OSSwapInt32
# define bswap_64 OSSwapInt64
# define htole32 OSSwapHostToLittleInt32
# define __BYTE_ORDER __DARWIN_BYTE_ORDER
# define __LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
# define __BIG_ENDIAN __DARWIN_BIG_ENDIAN
#endif

View File

@ -67,7 +67,15 @@ is_capturing (void)
return FALSE;
if G_UNLIKELY (tid == 0)
tid = syscall (__NR_gettid, 0);
{
#if defined(__linux__)
tid = syscall (__NR_gettid, 0);
#elif defined(__APPLE__)
uint64_t threadid;
pthread_threadid_np (NULL, &threadid);
tid = threadid;
#endif
}
if G_UNLIKELY (pid == 0)
pid = getpid ();
@ -102,7 +110,7 @@ open (const char *filename,
mode_t mode;
va_start (args, flags);
mode = va_arg (args, mode_t);
mode = va_arg (args, int);
va_end (args);
if (is_capturing ())
@ -139,7 +147,7 @@ hook_open (const char *filename, int flags, ...)
mode_t mode;
va_start (args, flags);
mode = va_arg (args, mode_t);
mode = va_arg (args, int);
va_end (args);
hook_func ((void **)&real_open, "open");