mirror of
https://github.com/orange-cpp/omath.git
synced 2026-02-13 07:03:25 +00:00
Add FreeBSD support
This commit is contained in:
40
.github/workflows/cmake-multi-platform.yml
vendored
40
.github/workflows/cmake-multi-platform.yml
vendored
@@ -12,7 +12,7 @@ concurrency:
|
|||||||
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# 1) ARCH LINUX – Clang / Ninja
|
# 1) Arch Linux – Clang / Ninja
|
||||||
##############################################################################
|
##############################################################################
|
||||||
jobs:
|
jobs:
|
||||||
arch-build-and-test:
|
arch-build-and-test:
|
||||||
@@ -120,3 +120,41 @@ jobs:
|
|||||||
- name: Run unit_tests
|
- name: Run unit_tests
|
||||||
shell: bash
|
shell: bash
|
||||||
run: ./out/Release/unit_tests
|
run: ./out/Release/unit_tests
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
# 4) FreeBSD – Clang / Ninja
|
||||||
|
##############################################################################
|
||||||
|
freebsd-build-and-test:
|
||||||
|
name: FreeBSD (Clang)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository (with sub-modules)
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Build and Test
|
||||||
|
uses: vmactions/freebsd-vm@v1
|
||||||
|
with:
|
||||||
|
usesh: true
|
||||||
|
sync: sshfs
|
||||||
|
mem: 12288
|
||||||
|
copyback: false
|
||||||
|
prepare: pkg install -y git curl zip unzip gmake llvm gsed bash perl5 openssl 7-zip coreutils cmake ninja pkgconf patchelf
|
||||||
|
run: |
|
||||||
|
git config --global --add safe.directory `pwd`
|
||||||
|
# Build vcpkg in /tmp to avoid sshfs timestamp sync issues
|
||||||
|
# This prevents PCH timestamp mismatches during parallel builds
|
||||||
|
export VCPKG_ROOT=/tmp/vcpkg
|
||||||
|
rm -rf "$VCPKG_ROOT"
|
||||||
|
git clone https://github.com/microsoft/vcpkg "$VCPKG_ROOT"
|
||||||
|
cd "$VCPKG_ROOT"
|
||||||
|
# Bootstrap vcpkg - it will build from source on FreeBSD
|
||||||
|
# Building in /tmp avoids sshfs timestamp issues that break PCH
|
||||||
|
./bootstrap-vcpkg.sh
|
||||||
|
cd -
|
||||||
|
export VCPKG_FORCE_SYSTEM_BINARIES=0
|
||||||
|
# VCPKG_ROOT is set to /tmp/vcpkg, which CMake will use via the preset
|
||||||
|
cmake --preset freebsd-release-vcpkg -DOMATH_BUILD_TESTS=ON -DOMATH_BUILD_BENCHMARK=OFF -DVCPKG_MANIFEST_FEATURES="imgui;avx2;tests" -DVCPKG_INSTALL_OPTIONS="--allow-unsupported"
|
||||||
|
cmake --build cmake-build/build/freebsd-release-vcpkg --target unit_tests omath
|
||||||
|
./out/Release/unit_tests
|
||||||
|
|||||||
@@ -178,6 +178,65 @@
|
|||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "Release"
|
"CMAKE_BUILD_TYPE": "Release"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freebsd-base",
|
||||||
|
"hidden": true,
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/cmake-build/build/${presetName}",
|
||||||
|
"installDir": "${sourceDir}/cmake-build/install/${presetName}",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_CXX_COMPILER": "clang++",
|
||||||
|
"CMAKE_MAKE_PROGRAM": "ninja"
|
||||||
|
},
|
||||||
|
"condition": {
|
||||||
|
"type": "equals",
|
||||||
|
"lhs": "${hostSystemName}",
|
||||||
|
"rhs": "FreeBSD"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freebsd-base-vcpkg",
|
||||||
|
"hidden": true,
|
||||||
|
"inherits": "freebsd-base",
|
||||||
|
"cacheVariables": {
|
||||||
|
"OMATH_BUILD_VIA_VCPKG": "ON",
|
||||||
|
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
|
||||||
|
"VCPKG_INSTALLED_DIR": "${sourceDir}/cmake-build/vcpkg_installed",
|
||||||
|
"VCPKG_MANIFEST_FEATURES": "tests;imgui;avx2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freebsd-debug",
|
||||||
|
"displayName": "FreeBSD Debug",
|
||||||
|
"inherits": "freebsd-base",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Debug"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freebsd-debug-vcpkg",
|
||||||
|
"displayName": "FreeBSD Debug Vcpkg",
|
||||||
|
"inherits": "freebsd-base-vcpkg",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Debug"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freebsd-release",
|
||||||
|
"displayName": "FreeBSD Release",
|
||||||
|
"inherits": "freebsd-base",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Release"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "freebsd-release-vcpkg",
|
||||||
|
"displayName": "FreeBSD Release Vcpkg",
|
||||||
|
"inherits": "freebsd-base-vcpkg",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "Release"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,13 @@
|
|||||||
|
|
||||||
#undef near
|
#undef near
|
||||||
#undef far
|
#undef far
|
||||||
|
// Undefine FreeBSD/BSD system macros that conflict with method names
|
||||||
|
#ifdef minor
|
||||||
|
#undef minor
|
||||||
|
#endif
|
||||||
|
#ifdef major
|
||||||
|
#undef major
|
||||||
|
#endif
|
||||||
namespace omath
|
namespace omath
|
||||||
{
|
{
|
||||||
struct MatSize
|
struct MatSize
|
||||||
|
|||||||
Reference in New Issue
Block a user