Skip to content

Commit adb53a8

Browse files
committed
CI MacOS
1 parent a3ce9b7 commit adb53a8

11 files changed

Lines changed: 64 additions & 78 deletions

File tree

.github/workflows/ci-cpp-linux.yml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,16 @@ jobs:
4949
if: ${{ matrix.compiler.name == 'Latest Clang' }}
5050
uses: MorganCaron/latest-clang-action@master
5151

52-
- name: Compile
52+
- name: Update xmake repository
53+
run: xmake repo --update
54+
55+
- name: Configure & Install dependencies
56+
run: |
57+
xmake f ${{ matrix.compiler.xmake-toolchain }} --runtimes="c++_shared" --enable_tests=y -v --yes
58+
59+
- name: Build
5360
run: |
54-
xmake f ${{ matrix.compiler.xmake-toolchain }} --runtimes="c++_shared" --enable_tests=y --yes
55-
xmake build -vD
61+
xmake build -v
5662
5763
- name: Run tests
5864
run: |

.github/workflows/ci-cpp-macos.yml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,25 @@ jobs:
1717
}
1818
steps:
1919
- uses: actions/checkout@v4
20+
21+
- uses: tecolicom/actions-use-homebrew-tools@v1
22+
with:
23+
tools: llvm ninja cmake
24+
2025
- uses: xmake-io/github-action-setup-xmake@v1
2126
with:
2227
xmake-version: branch@master
2328

24-
- name: Install LLVM
25-
if: ${{ matrix.compiler.name == 'Clang' }}
29+
- name: Update xmake repository
30+
run: xmake repo --update
31+
32+
- name: Configure & Install dependencies
2633
run: |
27-
brew install llvm
34+
xmake f --toolchain=llvm --sdk="$(brew --prefix)/opt/llvm/" --runtimes="c++_shared" --enable_tests=y -v --yes
2835
29-
- name: Compile
30-
env:
31-
CC: ${{ matrix.compiler.cc }}
32-
CXX: ${{ matrix.compiler.cxx }}
36+
- name: Build
3337
run: |
34-
xmake f --enable_tests=y --yes
35-
xmake build -vD
38+
xmake build -v
3639
3740
- name: Run tests
3841
run: |

modules/FileSystem/Watcher.mpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module;
1010
# include <sys/inotify.h>
1111
#elif defined(OS_MACOS)
1212
# include <sys/event.h>
13+
# include <CoreServices/CoreServices.h>
1314
#endif
1415

1516
export module CppUtils.FileSystem.Watcher;
@@ -259,7 +260,7 @@ export namespace CppUtils::FileSystem
259260
Container::BidirectionalMap<std::filesystem::path, WatchDescriptor> m_watchDescriptors;
260261
std::vector<std::pair<Event, SubscribeFunction>> m_subscribedFunctions;
261262
#elif defined(OS_MACOS)
262-
FSEventStreamRef m_filesystemEventStream;
263+
[[maybe_unused]] FSEventStreamRef m_filesystemEventStream;
263264
#endif
264265
};
265266
}

modules/Network/Client.mpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module;
44

55
#if defined(OS_WINDOWS)
66
# include <winsock2.h>
7-
#elif defined(OS_LINUX)
7+
#elif defined(OS_LINUX) or defined(OS_MACOS)
88
# include <sys/socket.h>
99
#endif
1010

modules/Network/Server.mpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module;
55
#if defined(OS_WINDOWS)
66
# include <winsock2.h>
77
# pragma comment(lib, "ws2_32.lib")
8-
#elif defined(OS_LINUX)
8+
#elif defined(OS_LINUX) or defined(OS_MACOS)
99
# include <sys/socket.h>
1010
# include <cerrno>
1111
#endif

modules/Network/Socket.mpp

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module;
55
#if defined(OS_WINDOWS)
66
# include <winsock2.h>
77
# include <ws2tcpip.h> // for socklen_t
8-
#elif defined(OS_LINUX)
8+
#elif defined(OS_LINUX) or defined(OS_MACOS)
99
# include <sys/socket.h>
1010
# include <netinet/in.h>
1111
# include <arpa/inet.h>
@@ -63,7 +63,7 @@ export namespace CppUtils::Network
6363

6464
#if defined(OS_WINDOWS)
6565
inline constexpr auto throwErrno = std::addressof(WindowsSocketApi::throwErrno);
66-
#elif defined(OS_LINUX)
66+
#elif defined(OS_LINUX) or defined(OS_MACOS)
6767
inline constexpr auto throwErrno = std::addressof(System::throwErrno);
6868
#endif
6969

@@ -72,15 +72,15 @@ export namespace CppUtils::Network
7272
public:
7373
#if defined(OS_WINDOWS)
7474
using NativeSocket = SOCKET;
75-
#elif defined(OS_LINUX)
75+
#elif defined(OS_LINUX) or defined(OS_MACOS)
7676
using NativeSocket = int;
7777
#endif
7878

7979
enum class Domain : int
8080
{
8181
IPV4 = AF_INET,
8282
IPV6 = AF_INET6,
83-
#if defined(OS_LINUX)
83+
#if defined(OS_LINUX) or defined(OS_MACOS)
8484
Local = AF_UNIX
8585
#endif
8686
};
@@ -101,7 +101,7 @@ export namespace CppUtils::Network
101101
m_socket = ::socket(static_cast<int>(domain), static_cast<int>(type), 0);
102102
if (m_socket == INVALID_SOCKET)
103103
throw std::runtime_error{"Socket creation failed"};
104-
#elif defined(OS_LINUX)
104+
#elif defined(OS_LINUX) or defined(OS_MACOS)
105105
m_socket = ::socket(static_cast<int>(domain), static_cast<int>(type), 0);
106106
if (m_socket < 0)
107107
throw std::runtime_error{"Socket creation failed"};
@@ -112,7 +112,7 @@ export namespace CppUtils::Network
112112
explicit inline Socket(SOCKET socket) noexcept:
113113
m_socket{socket}
114114
{}
115-
#elif defined(OS_LINUX)
115+
#elif defined(OS_LINUX) or defined(OS_MACOS)
116116
explicit inline Socket(int socket) noexcept:
117117
m_socket{socket}
118118
{}
@@ -127,7 +127,7 @@ export namespace CppUtils::Network
127127
{
128128
#if defined(OS_WINDOWS)
129129
other.m_socket = INVALID_SOCKET;
130-
#else
130+
#elif defined(OS_LINUX) or defined(OS_MACOS)
131131
other.m_socket = -1;
132132
#endif
133133
}
@@ -141,7 +141,7 @@ export namespace CppUtils::Network
141141
#if defined(OS_WINDOWS)
142142
if (m_socket != INVALID_SOCKET)
143143
::closesocket(m_socket);
144-
#else
144+
#elif defined(OS_LINUX) or defined(OS_MACOS)
145145
if (m_socket != -1)
146146
::close(m_socket);
147147
#endif
@@ -150,7 +150,7 @@ export namespace CppUtils::Network
150150
m_socket = other.m_socket;
151151
#if defined(OS_WINDOWS)
152152
other.m_socket = INVALID_SOCKET;
153-
#else
153+
#elif defined(OS_LINUX) or defined(OS_MACOS)
154154
other.m_socket = -1;
155155
#endif
156156
}
@@ -162,7 +162,7 @@ export namespace CppUtils::Network
162162
#if defined(OS_WINDOWS)
163163
if (m_socket != INVALID_SOCKET)
164164
::closesocket(m_socket);
165-
#elif defined(OS_LINUX)
165+
#elif defined(OS_LINUX) or defined(OS_MACOS)
166166
if (m_socket != -1)
167167
::close(m_socket);
168168
#endif
@@ -195,7 +195,7 @@ export namespace CppUtils::Network
195195
auto mode = enable ? u_long{0} : u_long{1};
196196
if (::ioctlsocket(m_socket, static_cast<long>(FIONBIO), std::addressof(mode)) != 0)
197197
throw std::runtime_error{"CppUtils::Network::Socket::setBlocking: Failed to set blocking mode"};
198-
#elif defined(OS_LINUX)
198+
#elif defined(OS_LINUX) or defined(OS_MACOS)
199199
auto flags = ::fcntl(m_socket, F_GETFL);
200200
if (flags == -1)
201201
throw std::runtime_error{"CppUtils::Network::Socket::setBlocking: Failed to get socket flags"};
@@ -214,7 +214,7 @@ export namespace CppUtils::Network
214214
auto mode = u_long{};
215215
::ioctlsocket(m_socket, static_cast<long>(FIONBIO), std::addressof(mode));
216216
return mode == 0;
217-
#elif defined(OS_LINUX)
217+
#elif defined(OS_LINUX) or defined(OS_MACOS)
218218
int flags = ::fcntl(m_socket, F_GETFL, 0);
219219
if (flags == -1)
220220
throw std::runtime_error{"CppUtils::Network::Socket::isBlocking: Failed to get socket flags"};
@@ -237,7 +237,7 @@ export namespace CppUtils::Network
237237
// TODO make implementation for windows
238238
// @see https://stackoverflow.com/questions/72759272/how-to-deal-with-socket-in-select-method
239239
auto result = -1;
240-
#else
240+
#elif defined(OS_LINUX) or defined(OS_MACOS)
241241
auto result = select(m_socket + 1, std::addressof(readSet), nullptr, nullptr, std::addressof(timeValue));
242242
#endif
243243
if (result < 0)
@@ -250,7 +250,7 @@ export namespace CppUtils::Network
250250
{
251251
#if defined(OS_WINDOWS)
252252
return not ::setsockopt(socket, level, option, reinterpret_cast<const char*>(value), static_cast<int>(valueSize));
253-
#else
253+
#elif defined(OS_LINUX) or defined(OS_MACOS)
254254
return not ::setsockopt(socket, level, option, value, static_cast<socklen_t>(valueSize));
255255
#endif
256256
}
@@ -306,7 +306,7 @@ export namespace CppUtils::Network
306306
{
307307
#ifdef OS_WINDOWS
308308
if (::send(m_socket, std::bit_cast<const char*>(std::addressof(data)), sizeof(decltype(data)), 0) < 0)
309-
#else
309+
#elif defined(OS_LINUX) or defined(OS_MACOS)
310310
if (::send(m_socket, std::bit_cast<const void*>(std::addressof(data)), sizeof(decltype(data)), 0) < 0)
311311
#endif
312312
throw std::runtime_error{"CppUtils::Network::Socket::send: Send failed"};
@@ -317,14 +317,14 @@ export namespace CppUtils::Network
317317
for (auto totalSent = 0uz; totalSent < std::size(data);)
318318
#ifdef OS_WINDOWS
319319
if (auto bytesSent = ::send(m_socket, std::bit_cast<const char*>(std::data(data)) + totalSent, static_cast<int>(std::size(data) - totalSent), 0);
320-
#else
320+
#elif defined(OS_LINUX) or defined(OS_MACOS)
321321
if (auto bytesSent = ::send(m_socket, std::data(data) + totalSent, std::size(data) - totalSent, 0);
322322
#endif
323323
bytesSent < 0)
324324
{
325325
#if defined(OS_WINDOWS)
326326
if (::WSAGetLastError() == WSAEWOULDBLOCK)
327-
#else
327+
#elif defined(OS_LINUX) or defined(OS_MACOS)
328328
if (errno == EAGAIN or errno == EWOULDBLOCK)
329329
#endif
330330
continue;
@@ -338,7 +338,7 @@ export namespace CppUtils::Network
338338
{
339339
#if defined(OS_WINDOWS)
340340
if (::send(m_socket, std::data(string), static_cast<int>(std::size(string)), 0) < 0)
341-
#else
341+
#elif defined(OS_LINUX) or defined(OS_MACOS)
342342
if (::send(m_socket, std::data(string), std::size(string), 0) < 0)
343343
#endif
344344

@@ -350,7 +350,7 @@ export namespace CppUtils::Network
350350
{
351351
#if defined(OS_WINDOWS)
352352
if (::WSAGetLastError() == WSAEWOULDBLOCK)
353-
#else
353+
#elif defined(OS_LINUX) or defined(OS_MACOS)
354354
if (errno == EWOULDBLOCK)
355355
#endif
356356
return std::runtime_error{"Socket is non-blocking and no data is available"};
@@ -367,15 +367,15 @@ export namespace CppUtils::Network
367367
{
368368
#if defined(OS_WINDOWS)
369369
const auto size = static_cast<int>(sizeof(T) - totalBytesReceived);
370-
#else
370+
#elif defined(OS_LINUX) or defined(OS_MACOS)
371371
const auto size = sizeof(T) - totalBytesReceived;
372372
#endif
373373
auto bytesReceived = ::recv(m_socket, reinterpret_cast<char*>(std::addressof(data)) + totalBytesReceived, size, 0);
374374
if (bytesReceived < 0)
375375
{
376376
#if defined(OS_WINDOWS)
377377
if (WSAGetLastError() == WSAEWOULDBLOCK)
378-
#else
378+
#elif defined(OS_LINUX) or defined(OS_MACOS)
379379
if (errno == EAGAIN)
380380
continue;
381381
if (errno == EWOULDBLOCK)
@@ -399,14 +399,14 @@ export namespace CppUtils::Network
399399
{
400400
#if defined(OS_WINDOWS)
401401
auto bytesReceived = ::recv(m_socket, std::bit_cast<char*>(std::data(buffer)) + totalBytesReceived, static_cast<int>(bufferSize - totalBytesReceived), 0);
402-
#else
402+
#elif defined(OS_LINUX) or defined(OS_MACOS)
403403
auto bytesReceived = ::recv(m_socket, std::data(buffer) + totalBytesReceived, bufferSize - totalBytesReceived, 0);
404404
#endif
405405
if (bytesReceived < 0)
406406
{
407407
#if defined(OS_WINDOWS)
408408
if (WSAGetLastError() == WSAEWOULDBLOCK)
409-
#else
409+
#elif defined(OS_LINUX) or defined(OS_MACOS)
410410
if (errno == EAGAIN or errno == EWOULDBLOCK)
411411
#endif
412412
continue;

modules/Terminal/Cursor.mpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export namespace CppUtils::Terminal
2121
consoleScreenBufferInfo.srWindow.Left,
2222
consoleScreenBufferInfo.srWindow.Top};
2323
}
24-
#elif defined(OS_MAC) or defined(OS_LINUX)
24+
#elif defined(OS_LINUX) or defined(OS_MACOS)
2525
[[nodiscard]] inline auto getCursorPosition() -> std::expected<Container::Size2, std::string_view>
2626
{
2727
using namespace std::literals;
@@ -43,7 +43,7 @@ export namespace CppUtils::Terminal
4343
{
4444
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), COORD{static_cast<SHORT>(position.x()), static_cast<SHORT>(position.y())});
4545
}
46-
#elif defined(OS_MAC) or defined(OS_LINUX)
46+
#elif defined(OS_LINUX) or defined(OS_MACOS)
4747
inline auto setCursorPosition([[maybe_unused]] Container::Size2 position) -> void
4848
{
4949
std::print("\x1b[{};{}H", position.y() + 1, position.x() + 1);

modules/Terminal/RawTerminal.mpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module;
22

33
#include <CppUtils/System/Windows.hpp>
44

5-
#if defined(OS_MAC) or defined(OS_LINUX)
5+
#if defined(OS_LINUX) or defined(OS_MACOS)
66
# include <unistd.h>
77
# include <termios.h>
88
#endif
@@ -13,7 +13,7 @@ import std;
1313

1414
export namespace CppUtils::Terminal
1515
{
16-
#if defined(OS_MAC) or defined(OS_LINUX)
16+
#if defined(OS_LINUX) or defined(OS_MACOS)
1717
class RawTerminal final
1818
{
1919
public:

modules/Terminal/Size.mpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module;
22

33
#include <CppUtils/System/Windows.hpp>
44

5-
#if defined(OS_MAC) or defined(OS_LINUX)
5+
#if defined(OS_LINUX) or defined(OS_MACOS)
66
# include <sys/ioctl.h>
77
# include <unistd.h>
88
#endif
@@ -18,19 +18,19 @@ export namespace CppUtils::Terminal
1818
[[nodiscard]] inline auto getTerminalSize() -> Container::Size2
1919
{
2020
auto consoleScreenBufferInfo = CONSOLE_SCREEN_BUFFER_INFO{};
21-
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &consoleScreenBufferInfo);
21+
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), std::addressof(consoleScreenBufferInfo));
2222
return Container::Size2{
2323
static_cast<std::size_t>(consoleScreenBufferInfo.srWindow.Right - consoleScreenBufferInfo.srWindow.Left + 1),
2424
static_cast<std::size_t>(consoleScreenBufferInfo.srWindow.Bottom - consoleScreenBufferInfo.srWindow.Top + 1)};
2525
}
26-
#elif defined(OS_MAC) or defined(OS_LINUX)
26+
#elif defined(OS_LINUX) or defined(OS_MACOS)
2727
[[nodiscard]] inline auto getTerminalSize() -> Container::Size2
2828
{
2929
auto windowsSize = winsize{};
30-
ioctl(STDOUT_FILENO, TIOCGWINSZ, &windowsSize);
30+
ioctl(STDOUT_FILENO, TIOCGWINSZ, std::addressof(windowsSize));
3131
return Container::Size2{
32-
windowsSize.ws_col,
33-
windowsSize.ws_row};
32+
static_cast<std::size_t>(windowsSize.ws_col),
33+
static_cast<std::size_t>(windowsSize.ws_row)};
3434
}
3535
#endif
3636
}

modules/Terminal/Title.mpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export namespace CppUtils::Terminal
2121
title.resize(size);
2222
::GetConsoleTitleW(std::data(title), size);
2323
return title;
24-
#elif defined(OS_MAC) or defined(OS_LINUX)
24+
#elif defined(OS_LINUX) or defined(OS_MACOS)
2525
/*
2626
using namespace std::literals;
2727

@@ -41,7 +41,7 @@ export namespace CppUtils::Terminal
4141
{
4242
#if defined(OS_WINDOWS)
4343
::SetConsoleTitleW(std::data(title));
44-
#elif defined(OS_MAC) or defined(OS_LINUX)
44+
#elif defined(OS_LINUX) or defined(OS_MACOS)
4545
std::print("\x1B]0;{}\a", title);
4646
std::fflush(stdout);
4747
#endif

0 commit comments

Comments
 (0)