1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:17:45 +00:00

Build: Make Lagom build under macOS (#2341)

Lagom now builds under macOS. Only two minor adjustments were required:

* LibCore TCP/UDP code can't use `SOCK_{NONBLOCK,CLOEXEC}` on macOS,
use ioctl() and fcntl() instead

* LibJS `Heap` code pthread usage ported to MacOS
This commit is contained in:
Marcin Gasperowicz 2020-05-23 15:31:30 +02:00 committed by GitHub
parent dd924b730a
commit c21dc21f36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 51 additions and 1 deletions

View file

@ -32,12 +32,22 @@
#include <stdio.h>
#include <sys/socket.h>
#ifndef SOCK_NONBLOCK
# include <sys/ioctl.h>
#endif
namespace Core {
TCPServer::TCPServer(Object* parent)
: Object(parent)
{
#ifdef SOCK_NONBLOCK
m_fd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0);
#else
m_fd = socket(AF_INET, SOCK_STREAM, 0);
int option = 1;
ioctl(m_fd, FIONBIO, &option);
fcntl(m_fd, F_SETFD, FD_CLOEXEC);
#endif
ASSERT(m_fd >= 0);
}

View file

@ -28,6 +28,10 @@
#include <errno.h>
#include <sys/socket.h>
#ifndef SOCK_NONBLOCK
# include <sys/ioctl.h>
#endif
namespace Core {
TCPSocket::TCPSocket(int fd, Object* parent)
@ -43,7 +47,13 @@ TCPSocket::TCPSocket(int fd, Object* parent)
TCPSocket::TCPSocket(Object* parent)
: Socket(Socket::Type::TCP, parent)
{
#ifdef SOCK_NONBLOCK
int fd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);
#else
int fd = socket(AF_INET, SOCK_STREAM, 0);
int option = 1;
ioctl(fd, FIONBIO, &option);
#endif
if (fd < 0) {
set_error(errno);
} else {

View file

@ -31,12 +31,23 @@
#include <LibCore/UDPSocket.h>
#include <stdio.h>
#ifndef SOCK_NONBLOCK
# include <sys/ioctl.h>
#endif
namespace Core {
UDPServer::UDPServer(Object* parent)
: Object(parent)
{
#ifdef SOCK_NONBLOCK
m_fd = socket(AF_INET, SOCK_DGRAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0);
#else
m_fd = socket(AF_INET, SOCK_DGRAM, 0);
int option = 1;
ioctl(m_fd, FIONBIO, &option);
fcntl(m_fd, F_SETFD, FD_CLOEXEC);
#endif
ASSERT(m_fd >= 0);
}

View file

@ -28,6 +28,10 @@
#include <errno.h>
#include <sys/socket.h>
#ifndef SOCK_NONBLOCK
# include <sys/ioctl.h>
#endif
namespace Core {
UDPSocket::UDPSocket(int fd, Object* parent)
@ -43,7 +47,14 @@ UDPSocket::UDPSocket(int fd, Object* parent)
UDPSocket::UDPSocket(Object* parent)
: Socket(Socket::Type::UDP, parent)
{
#ifdef SOCK_NONBLOCK
int fd = socket(AF_INET, SOCK_DGRAM | SOCK_NONBLOCK, 0);
#else
int fd = socket(AF_INET, SOCK_DGRAM, 0);
int option = 1;
ioctl(fd, FIONBIO, &option);
#endif
if (fd < 0) {
set_error(errno);
} else {