support building on NetBSD

This commit is contained in:
G.E. 2024-03-06 10:48:56 +01:00
parent 71f3e7d994
commit 12f61d15ed
5 changed files with 34 additions and 1 deletions

View File

@ -113,6 +113,17 @@ Assuming an existing HomeBrew installation:
% brew install boost cmake gcc libpcap pkg-config ragel sqlite
```
### NetBSD
In NetBSD you will almost certainly need to have a newer compiler installed.
Using the example of gcc12 from pkgsrc, one will need to set three
environment variables before starting:
export CC="/usr/pkg/gcc12/bin/cc"
export CXX="/usr/pkg/gcc12/bin/g++"
export CXXFLAGS="-gdwarf-4"
Then continue with the build as below.
## Configure & build
In order to configure with `cmake` first create and cd into a build directory:

View File

@ -6,7 +6,11 @@ if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set(FREEBSD true)
endif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
if (ARCH_IA32 OR ARCH_X86_64)
if(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
set(NETBSD true)
endif(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
if (LINUX AND (ARCH_IA32 OR ARCH_X86_64))
option(FAT_RUNTIME "Build a library that supports multiple microarchitectures" ON)
else()
option(FAT_RUNTIME "Build a library that supports multiple microarchitectures" OFF)

View File

@ -134,7 +134,12 @@
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <netinet/ip_icmp.h>
#ifdef __NetBSD__
#include <net/ethertypes.h>
#include <net/if_ether.h>
#else
#include <net/ethernet.h>
#endif /* __NetBSD__ */
#include <arpa/inet.h>
#include <pcap.h>

View File

@ -68,7 +68,12 @@
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <netinet/ip_icmp.h>
#ifdef __NetBSD__
#include <net/ethertypes.h>
#include <net/if_ether.h>
#else
#include <net/ethernet.h>
#endif /* __NetBSD__ */
#include <arpa/inet.h>
#include <pcap.h>

View File

@ -36,7 +36,12 @@
#include "ue2common.h"
#include "util/arch.h"
#ifdef __NetBSD__
#include <strings.h>
#endif
#ifndef __NetBSD__
static really_inline
u32 popcount32(u32 x) {
return __builtin_popcount(x);
@ -51,6 +56,7 @@ u32 popcount32(u32 x) {
// return (((x + (x >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;
// #endif
}
#endif /* __NetBSD__ */
static really_inline
u32 popcount32x4(u32 const *x) {
@ -61,6 +67,7 @@ u32 popcount32x4(u32 const *x) {
return sum;
}
#ifndef __NetBSD__
static really_inline
u32 popcount64(u64a x) {
return __builtin_popcountll(x);
@ -81,6 +88,7 @@ u32 popcount64(u64a x) {
// return popcount32(x >> 32) + popcount32(x);
// #endif
}
#endif /* __NetBSD__ */
static really_inline
u32 popcount64x4(u64a const *x) {