Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CMake: Enable OpenBSD #718

Merged
merged 3 commits into from
Feb 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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)
Expand Down
68 changes: 68 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -995,6 +995,74 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa
gmake help
```

</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
Expand Down
2 changes: 1 addition & 1 deletion cmake/Modules/Findkvm.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down