feat: initial commit with build system
This commit is contained in:
+125
@@ -0,0 +1,125 @@
|
||||
{ pkgs, libpcap-src, winpcap-installer, freebsd-libs-packed }:
|
||||
let
|
||||
freebsd-libs = pkgs.stdenv.mkDerivation {
|
||||
name = "freebsd-libs";
|
||||
|
||||
buildInputs = with pkgs; [ gnutar ];
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir -p $out
|
||||
tar xvJpf ${freebsd-libs-packed} -C $out ./usr/lib
|
||||
tar xvJpf ${freebsd-libs-packed} -C $out ./usr/include
|
||||
'';
|
||||
};
|
||||
|
||||
bsd-toolchain = with pkgs.pkgsCross.x86_64-freebsd.buildPackages;
|
||||
pkgs.writeText "bsd-toolchain.cmake" ''
|
||||
set(CMAKE_SYSTEM_NAME FreeBSD)
|
||||
|
||||
set(CMAKE_C_COMPILER ${clang}/bin/x86_64-unknown-freebsd-clang)
|
||||
set(CMAKE_CXX_COMPILER ${clang}/bin/x86_64-unknown-freebsd-clang++)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH ${freebsd-libs})
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
'';
|
||||
in {
|
||||
inherit freebsd-libs;
|
||||
|
||||
winpcap-drivers = pkgs.stdenv.mkDerivation {
|
||||
name = "winpcap-drivers";
|
||||
|
||||
buildInputs = with pkgs; [ p7zip ];
|
||||
|
||||
# extract only the 64 bit drivers
|
||||
unpackPhase = ''
|
||||
mkdir -p $out
|
||||
printf 'Y\nN\n' | 7z e "${winpcap-installer}" '$SYSDIR/drivers/npf.sys'
|
||||
mv npf.sys $out/npf.sys
|
||||
'';
|
||||
};
|
||||
|
||||
libnl = pkgs.stdenv.mkDerivation {
|
||||
name = "libnl-static";
|
||||
|
||||
buildInputs = with pkgs; [ autoconf automake libtool ];
|
||||
|
||||
};
|
||||
|
||||
libpcap-linux = pkgs.stdenv.mkDerivation {
|
||||
name = "libpcap-static-linux";
|
||||
|
||||
buildInputs = with pkgs; [ automake bison cmake flex ];
|
||||
|
||||
src = libpcap-src;
|
||||
|
||||
configurePhase = ''
|
||||
cmake \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DDISABLE_BLUETOOTH=ON \
|
||||
-DDISABLE_DAG=ON \
|
||||
-DDISABLE_DBUS=ON \
|
||||
-DDISABLE_DPDK=ON \
|
||||
-DDISABLE_NETMAP=ON \
|
||||
-DDISABLE_RDMA=ON \
|
||||
-DDISABLE_LINUX_USBMON=ON \
|
||||
-DDISABLE_SNF=ON \
|
||||
-DPCAP_TYPE=linux \
|
||||
.
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
cmake --build . --target pcap_static
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib
|
||||
|
||||
cp libpcap.a $out/lib
|
||||
'';
|
||||
};
|
||||
|
||||
libpcap-freebsd = pkgs.stdenv.mkDerivation {
|
||||
name = "libpcap-static-freebsd";
|
||||
|
||||
nativeBuildInputs = with pkgs.pkgsCross.x86_64-freebsd.buildPackages; [
|
||||
clang
|
||||
lld
|
||||
automake
|
||||
bison
|
||||
cmake
|
||||
flex
|
||||
];
|
||||
|
||||
src = libpcap-src;
|
||||
|
||||
configurePhase = ''
|
||||
cmake \
|
||||
-DCMAKE_TOOLCHAIN_FILE=${bsd-toolchain} \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DDISABLE_BLUETOOTH=ON \
|
||||
-DDISABLE_DAG=ON \
|
||||
-DDISABLE_DBUS=ON \
|
||||
-DDISABLE_DPDK=ON \
|
||||
-DDISABLE_NETMAP=ON \
|
||||
-DDISABLE_RDMA=ON \
|
||||
-DDISABLE_SNF=ON \
|
||||
-DPCAP_TYPE=bpf \
|
||||
.
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
cmake --build . --target pcap_static
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib
|
||||
|
||||
cp libpcap.a $out/lib
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user