diff options
| author | Joakim L. Gilje <jgilje@jgilje.net> | 2020-11-23 18:43:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-23 09:43:23 -0800 |
| commit | d9633d939c665e527f8bda22669f543f03540b17 (patch) | |
| tree | 0cfe4b406fa116b4d962952f93781a3d65840232 /toolsrc/src | |
| parent | 42456b785a4508386f080ae8fad2642e056b747d (diff) | |
| download | vcpkg-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.cpp | 6 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/build.cpp | 4 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/tools.cpp | 4 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/triplet.cpp | 2 |
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"); |
