Skip to content

Commit 420c352

Browse files
committed
Add support for DragonFly
1 parent 4819c23 commit 420c352

File tree

10 files changed

+26
-9
lines changed

10 files changed

+26
-9
lines changed

docs/vcpkg-tools.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"os": {
2323
"type": "string",
2424
"description": "The platform where the record is valid.",
25-
"enum": [ "windows", "osx", "linux", "freebsd", "openbsd", "netbsd", "solaris" ]
25+
"enum": [ "windows", "osx", "linux", "freebsd", "openbsd", "netbsd", "dragonfly", "solaris" ]
2626
},
2727
"version": {
2828
"type": "string",

include/vcpkg/tools.test.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ namespace vcpkg
4848
FreeBsd,
4949
OpenBsd,
5050
NetBsd,
51+
DragonFly,
5152
Solaris,
5253
};
5354

src/vcpkg-test/tools.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ TEST_CASE ("parse_tool_data errors", "[tools]")
255255
REQUIRE(!invalid_os.has_value());
256256
CHECK(
257257
"invalid_os.json: error: $.tools[0].os (a tool data operating system): Invalid tool operating system: notanos. "
258-
"Expected one of: windows, osx, linux, freebsd, openbsd, netbsd, solaris" == invalid_os.error());
258+
"Expected one of: windows, osx, linux, freebsd, openbsd, netbsd, dragonfly, solaris" == invalid_os.error());
259259

260260
auto invalid_version = parse_tool_data(R"(
261261
{

src/vcpkg.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#pragma comment(lib, "shell32")
3232
#endif
3333

34-
#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
34+
#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
3535
#define TEST_LIBCURL_AVAILABLE
3636
#include <dlfcn.h>
3737
#endif

src/vcpkg/base/system.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,8 @@ namespace vcpkg
781781
return "openbsd";
782782
#elif defined(__NetBSD__)
783783
return "netbsd";
784+
#elif defined(__DragonFly__)
785+
return "dragonfly";
784786
#elif defined(__SVR4) && defined(__sun)
785787
return "solaris";
786788
#elif defined(__ANDROID__)

src/vcpkg/base/system.mac.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
#if !defined(_WIN32)
1111
#include <net/if.h>
12-
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
12+
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
1313
#include <ifaddrs.h>
1414

1515
#include <net/if_dl.h>
@@ -158,7 +158,8 @@ namespace vcpkg
158158
}
159159
}
160160
}
161-
#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
161+
#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
162+
defined(__NetBSD__) || defined(__DragonFly__)
162163
// The getifaddrs(ifaddrs** ifap) function creates a linked list of structures
163164
// describing the network interfaces of the local system, and stores
164165
// the address of the first item of the list in *ifap.
@@ -199,7 +200,8 @@ namespace vcpkg
199200
auto address = reinterpret_cast<sockaddr_ll*>(interface->ifa_addr);
200201
if (address->sll_halen != MAC_BYTES_LENGTH) continue;
201202
auto mac_bytes = Span<char>(reinterpret_cast<char*>(address->sll_addr), MAC_BYTES_LENGTH);
202-
#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
203+
#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
204+
defined(__DragonFly__)
203205
auto address = reinterpret_cast<sockaddr_dl*>(interface->ifa_addr);
204206
if (address->sdl_alen != MAC_BYTES_LENGTH) continue;
205207
// The macro LLADDR() returns the start of the link-layer network address.

src/vcpkg/base/system.process.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ extern char** environ;
1919
#include <mach-o/dyld.h>
2020
#endif
2121

22-
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
22+
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
2323
extern char** environ;
2424
#include <sys/sysctl.h>
2525
#include <sys/wait.h>
@@ -261,7 +261,7 @@ namespace vcpkg
261261
auto written = readlink(procpath, buf, sizeof(buf));
262262
Checks::check_exit(VCPKG_LINE_INFO, written != -1, "Could not determine current executable path.");
263263
return Path(buf, written);
264-
#elif defined(__linux__) || defined(__NetBSD__)
264+
#elif defined(__linux__) || defined(__NetBSD__) || defined(__DragonFly__)
265265
char buf[1024 * 4] = {};
266266
auto written = readlink("/proc/self/exe", buf, sizeof(buf));
267267
Checks::check_exit(VCPKG_LINE_INFO, written != -1, "Could not determine current executable path.");

src/vcpkg/commands.build.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,6 +1000,10 @@ namespace vcpkg
10001000
{
10011001
return m_paths.scripts / "toolchains/netbsd.cmake";
10021002
}
1003+
else if (cmake_system_name == "DragonFly")
1004+
{
1005+
return m_paths.scripts / "toolchains/dragonfly.cmake";
1006+
}
10031007
else if (cmake_system_name == "SunOS")
10041008
{
10051009
return m_paths.scripts / "toolchains/solaris.cmake";

src/vcpkg/platform-expression.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ namespace vcpkg::PlatformExpression
3030
freebsd,
3131
openbsd,
3232
netbsd,
33+
dragonfly,
3334
bsd,
3435
solaris,
3536
osx,
@@ -67,6 +68,7 @@ namespace vcpkg::PlatformExpression
6768
{"freebsd", Identifier::freebsd},
6869
{"openbsd", Identifier::openbsd},
6970
{"netbsd", Identifier::netbsd},
71+
{"dragonfly", Identifier::dragonfly},
7072
{"bsd", Identifier::bsd},
7173
{"solaris", Identifier::solaris},
7274
{"osx", Identifier::osx},
@@ -686,10 +688,13 @@ namespace vcpkg::PlatformExpression
686688
case Identifier::freebsd: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "FreeBSD");
687689
case Identifier::openbsd: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "OpenBSD");
688690
case Identifier::netbsd: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "NetBSD");
691+
case Identifier::dragonfly:
692+
return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "DragonFly");
689693
case Identifier::bsd:
690694
return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "FreeBSD") ||
691695
true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "OpenBSD") ||
692-
true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "NetBSD");
696+
true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "NetBSD") ||
697+
true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "DragonFly");
693698
case Identifier::solaris: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "SunOS");
694699
case Identifier::osx: return true_if_exists_and_equal("VCPKG_CMAKE_SYSTEM_NAME", "Darwin");
695700
case Identifier::uwp:

src/vcpkg/tools.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ namespace
3939
{"freebsd", ToolOs::FreeBsd},
4040
{"openbsd", ToolOs::OpenBsd},
4141
{"netbsd", ToolOs::NetBsd},
42+
{"dragonfly", ToolOs::DragonFly},
4243
{"solaris", ToolOs::Solaris},
4344
};
4445
}
@@ -180,6 +181,8 @@ namespace vcpkg
180181
auto data = get_raw_tool_data(tool_data_table, tool, hp, ToolOs::OpenBsd);
181182
#elif defined(__NetBSD__)
182183
auto data = get_raw_tool_data(tool_data_table, tool, hp, ToolOs::NetBsd);
184+
#elif defined(__DragonFly__)
185+
auto data = get_raw_tool_data(tool_data_table, tool, hp, ToolOs::DragonFly);
183186
#elif defined(__SVR4) && defined(__sun)
184187
auto data = get_raw_tool_data(tool_data_table, tool, hp, ToolOs::Solaris);
185188
#else

0 commit comments

Comments
 (0)