aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/base/system.process.cpp6
-rw-r--r--toolsrc/src/vcpkg/build.cpp4
-rw-r--r--toolsrc/src/vcpkg/tools.cpp4
-rw-r--r--toolsrc/src/vcpkg/triplet.cpp2
4 files changed, 15 insertions, 1 deletions
diff --git a/toolsrc/src/vcpkg/base/system.process.cpp b/toolsrc/src/vcpkg/base/system.process.cpp
index 16b37dff7..b330069e6 100644
--- a/toolsrc/src/vcpkg/base/system.process.cpp
+++ b/toolsrc/src/vcpkg/base/system.process.cpp
@@ -156,6 +156,12 @@ namespace vcpkg
Checks::check_exit(VCPKG_LINE_INFO, rcode == 0, "Could not determine current executable path.");
Checks::check_exit(VCPKG_LINE_INFO, len > 0, "Could not determine current executable path.");
return fs::path(exePath, exePath + len - 1);
+#elif defined(__OpenBSD__)
+ const char* progname = getprogname();
+ char resolved_path[PATH_MAX];
+ auto ret = realpath(progname, resolved_path);
+ Checks::check_exit(VCPKG_LINE_INFO, ret != nullptr, "Could not determine current executable path.");
+ return fs::u8path(resolved_path);
#else /* LINUX */
std::array<char, 1024 * 4> buf;
auto written = readlink("/proc/self/exe", buf.data(), buf.size());
diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp
index d418f71f5..495b517ea 100644
--- a/toolsrc/src/vcpkg/build.cpp
+++ b/toolsrc/src/vcpkg/build.cpp
@@ -694,6 +694,10 @@ namespace vcpkg::Build
{
return m_paths.scripts / fs::u8path("toolchains/freebsd.cmake");
}
+ else if (cmake_system_name == "OpenBSD")
+ {
+ return m_paths.scripts / fs::u8path("toolchains/openbsd.cmake");
+ }
else if (cmake_system_name == "Android")
{
return m_paths.scripts / fs::u8path("toolchains/android.cmake");
diff --git a/toolsrc/src/vcpkg/tools.cpp b/toolsrc/src/vcpkg/tools.cpp
index b7092a364..69ad05d38 100644
--- a/toolsrc/src/vcpkg/tools.cpp
+++ b/toolsrc/src/vcpkg/tools.cpp
@@ -53,11 +53,13 @@ namespace vcpkg
static constexpr StringLiteral OS_STRING = "linux";
#elif defined(__FreeBSD__)
static constexpr StringLiteral OS_STRING = "freebsd";
+#elif defined(__OpenBSD__)
+ static constexpr StringLiteral OS_STRING = "openbsd";
#else
return std::string("operating system is unknown");
#endif
-#if defined(_WIN32) || defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__)
+#if defined(_WIN32) || defined(__APPLE__) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
static const std::string XML_VERSION = "2";
static const fs::path XML_PATH = paths.scripts / "vcpkgTools.xml";
static const std::regex XML_VERSION_REGEX{R"###(<tools[\s]+version="([^"]+)">)###"};
diff --git a/toolsrc/src/vcpkg/triplet.cpp b/toolsrc/src/vcpkg/triplet.cpp
index 45dbf1f33..dbb82e3c8 100644
--- a/toolsrc/src/vcpkg/triplet.cpp
+++ b/toolsrc/src/vcpkg/triplet.cpp
@@ -90,6 +90,8 @@ namespace vcpkg
return Triplet::from_canonical_name("x64-osx");
#elif defined(__FreeBSD__)
return Triplet::from_canonical_name("x64-freebsd");
+#elif defined(__OpenBSD__)
+ return Triplet::from_canonical_name("x64-openbsd");
#elif defined(__GLIBC__)
#if defined(__aarch64__)
return Triplet::from_canonical_name("arm64-linux");