diff --git a/packaging/cmake/SnakeDrvConfigVersion.cmake.in b/packaging/cmake/SnakeDrvConfigVersion.cmake.in new file mode 100644 index 0000000..4176014 --- /dev/null +++ b/packaging/cmake/SnakeDrvConfigVersion.cmake.in @@ -0,0 +1,46 @@ +# +# SnakeDrvConfigVersion.cmake — version compatibility check for find_package(). +# +# Compatibility policy: +# - Same major: COMPATIBLE (libsnakedrv keeps source compat across minors) +# - Different major: NOT COMPATIBLE (breaking change of the public C API) +# + +set(PACKAGE_VERSION "@SNAKEDRV_VERSION@") +set(PACKAGE_VERSION_MAJOR @SNAKEDRV_VERSION_MAJOR@) + +if(PACKAGE_FIND_VERSION_RANGE) + # CMake ≥ 3.19 explicit range query. + if(PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE") + set(_min_op VERSION_GREATER_EQUAL) + else() + set(_min_op VERSION_GREATER) + endif() + if(PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE") + set(_max_op VERSION_LESS_EQUAL) + else() + set(_max_op VERSION_LESS) + endif() + if(PACKAGE_VERSION ${_min_op} PACKAGE_FIND_VERSION_MIN + AND PACKAGE_VERSION ${_max_op} PACKAGE_FIND_VERSION_MAX) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() +else() + if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) + elseif(NOT PACKAGE_VERSION_MAJOR EQUAL PACKAGE_FIND_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + +# x86_64 only at the moment. +if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/packaging/dkms/dkms.conf.in b/packaging/dkms/dkms.conf.in new file mode 100644 index 0000000..abcf63c --- /dev/null +++ b/packaging/dkms/dkms.conf.in @@ -0,0 +1,22 @@ +# DKMS configuration for snakeengine-driver. +# Rendered from dkms.conf.in by the build (deploy.sh and the release +# workflow) so PACKAGE_VERSION always matches the directory name under +# /usr/src/. + +PACKAGE_NAME="snakedrv" +PACKAGE_VERSION="@SNAKEDRV_VERSION@" + +CLEAN="make -C kernel clean" +MAKE[0]="make -C kernel KDIR=/lib/modules/${kernelver}/build CC=${CC:-gcc}" + +BUILT_MODULE_NAME[0]="snakedrv" +BUILT_MODULE_LOCATION[0]="kernel" +DEST_MODULE_LOCATION[0]="/updates" + +AUTOINSTALL="yes" +REMAKE_INITRD="no" + +# Module parameters can be tuned via /etc/modprobe.d/snakedrv.conf. +# max_attached_processes Maximum attached processes (default: 16) +# event_queue_size Maximum pending debug events (default: 256) +# debug_level Logging verbosity 0-3 (default: 1) diff --git a/packaging/pkgconfig/snakedrv.pc.in b/packaging/pkgconfig/snakedrv.pc.in new file mode 100644 index 0000000..48f4063 --- /dev/null +++ b/packaging/pkgconfig/snakedrv.pc.in @@ -0,0 +1,12 @@ +prefix=@PREFIX@ +exec_prefix=${prefix} +libdir=@LIBDIR@ +includedir=@INCLUDEDIR@ + +Name: snakedrv +Description: SnakeEngine kernel driver — userland C/C++ library +URL: https://github.com/CyberSnakeH/snakeengine-driver +Version: @SNAKEDRV_VERSION@ + +Libs: -L${libdir} -lsnakedrv +Cflags: -I${includedir}