aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorJoakim L. Gilje <jgilje@jgilje.net>2020-11-23 18:43:23 +0100
committerGitHub <noreply@github.com>2020-11-23 09:43:23 -0800
commitd9633d939c665e527f8bda22669f543f03540b17 (patch)
tree0cfe4b406fa116b4d962952f93781a3d65840232 /toolsrc/src
parent42456b785a4508386f080ae8fad2642e056b747d (diff)
downloadvcpkg-d9633d939c665e527f8bda22669f543f03540b17.tar.gz
vcpkg-d9633d939c665e527f8bda22669f543f03540b17.zip
[vcpkg] initial openbsd (community) support (#14549)
* initial openbsd support in vcpkg * after clang-format * hardcoded in the preferred compiler for openbsd in bootstrap scipt (thanks @tormfinn) * Fetch a patched pkg-config because openbsd pkg-config lacks {fcfiledir} * fixes from review feedback * corrected hash for pkg-config.openbsd * re-added missing endif() * regenerate docs * Update scripts/cmake/vcpkg_configure_meson.cmake Co-authored-by: Nicole Mazzuca <mazzucan@outlook.com>
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");