summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakob P. Liljenberg <admin@qvantnet.com>2024-02-11 15:58:08 +0100
committerGitHub <noreply@github.com>2024-02-11 15:58:08 +0100
commit91e137a411dfbba2a76796649f4fb7ed415dbf6e (patch)
treea137047efd77dec1f71a419dec1d1613fd7c074f
parent70dec20b23f251e9ca97b819a8a5011829522309 (diff)
parentbb8c7bc35c057c0aa26feefee330940d832d645c (diff)
Merge pull request #718 from imwints/cmake-openbsd
-rw-r--r--CMakeLists.txt8
-rw-r--r--README.md68
-rw-r--r--cmake/Modules/Findkvm.cmake2
3 files changed, 77 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cd39946..aec6782 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -65,6 +65,8 @@ if(APPLE)
target_sources(btop PRIVATE src/osx/btop_collect.cpp src/osx/sensors.cpp src/osx/smc.cpp)
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
target_sources(btop PRIVATE src/freebsd/btop_collect.cpp)
+elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
+ target_sources(btop PRIVATE src/openbsd/btop_collect.cpp src/openbsd/sysctlbyname.cpp)
elseif(LINUX)
target_sources(btop PRIVATE src/linux/btop_collect.cpp)
else()
@@ -185,6 +187,12 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
find_package(kvm REQUIRED)
target_link_libraries(btop elf::elf kvm::kvm)
endif()
+elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ target_compile_options(btop PRIVATE -static-libstdc++)
+ endif()
+ find_package(kvm REQUIRED)
+ target_link_libraries(btop kvm::kvm)
endif()
install(TARGETS btop RUNTIME)
diff --git a/README.md b/README.md
index 13e57ae..042b49b 100644
--- a/README.md
+++ b/README.md
@@ -996,6 +996,74 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa
```
</details>
+<details>
+<summary>
+
+### With CMake (Community maintained)
+</summary>
+
+1. **Install build dependencies**
+
+ Requires GCC, CMake, Ninja and Git
+
+ _**Note:** LLVM's libc++ shipped with OpenBSD 7.4 is too old and cannot compile btop._
+
+ ```bash
+ pkg_add cmake g++%11 git ninja
+ ```
+
+2. **Clone the repository**
+
+ ```bash
+ git clone https://github.com/aristocratos/btop.git && cd btop
+ ```
+
+3. **Compile**
+
+ ```bash
+ # Configure
+ CXX=eg++ cmake -B build -G Ninja
+ # Build
+ cmake --build build
+ ```
+
+ This will automatically build a release version of btop.
+
+ Some useful options to pass to the configure step:
+
+ | Configure flag | Description |
+ |---------------------------------|-------------------------------------------------------------------------|
+ | `-DBTOP_LTO=<ON\|OFF>` | Enables link time optimization (ON by default) |
+ | `-DBTOP_USE_MOLD=<ON\|OFF>` | Use mold to link btop (OFF by default) |
+ | `-DBTOP_PEDANTIC=<ON\|OFF>` | Compile with additional warnings (OFF by default) |
+ | `-DBTOP_WERROR=<ON\|OFF>` | Compile with warnings as errors (OFF by default) |
+ | `-DBTOP_FORTIFY=<ON\|OFF>` | Detect buffer overflows with `_FORTIFY_SOURCE=3` (ON by default) |
+ | `-DCMAKE_INSTALL_PREFIX=<path>` | The installation prefix ('/usr/local' by default) |
+
+ To force any other compiler, run `CXX=<compiler> cmake -B build -G Ninja`
+
+4. **Install**
+
+ ```bash
+ cmake --install build
+ ```
+
+ May require root privileges
+
+5. **Uninstall**
+
+ CMake doesn't generate an uninstall target by default. To remove installed files, run
+ ```
+ cat build/install_manifest.txt | xargs rm -irv
+ ```
+
+6. **Cleanup build directory**
+
+ ```bash
+ cmake --build build -t clean
+ ```
+
+</details>
## Installing the snap
[![btop](https://snapcraft.io/btop/badge.svg)](https://snapcraft.io/btop)
diff --git a/cmake/Modules/Findkvm.cmake b/cmake/Modules/Findkvm.cmake
index a0847de..9e4d82b 100644
--- a/cmake/Modules/Findkvm.cmake
+++ b/cmake/Modules/Findkvm.cmake
@@ -3,7 +3,7 @@
# Find libkvm, the Kernel Data Access Library
#
-if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+if(BSD)
find_path(kvm_INCLUDE_DIR NAMES kvm.h)
find_library(kvm_LIBRARY NAMES kvm)