opt
/
kaspersky
/
kav4fs
/
src
/
kernel
➕ New
📤 Upload
✎ Editing:
configure.in
← Back
dnl Process this file with autoconf to produce a configure script. AC_INIT(kernel.h) AC_CONFIG_AUX_DIR(config) AC_DEFUN([LINUX_CHECK_EXPORT], [ AC_MSG_CHECKING([for $1]) $2="0"; if test "${$2}" -eq "0" -a -f "$MOD_SYMS"; then $2=`cat "$MOD_SYMS" | grep " $1\$" | wc | awk {'print $[1]'}` fi # if test "${$2}" -eq "0" -a -f "$KALLSYMS"; then # $2=`grep $1 $KALLSYMS | grep 'T' | wc | awk {'print $[1]'}` # fi # if test "${$2}" -eq "0" -a -f "${SYSTEM_MAP}"; then # $2=`grep $1 ${SYSTEM_MAP} | grep 'T' | wc | awk {'print $[1]'}` # fi if test ${$2} -eq "0"; then AC_MSG_RESULT(["not exported"]) else AC_MSG_RESULT(["exported"]) fi ]) AC_DEFUN([LINUX_FIND_SYMBOL], [ AC_MSG_CHECKING([for $1]) $2_tmp="" if test -f "$KALLSYMS" ; then $2_tmp=`grep -w "$1\$" "$KALLSYMS" | head -n 1 | grep -o "^[[[:xdigit:]]]*" | grep -v "^[[0]]*$"` fi if test -z "${$2_tmp}" -a -f "$SYSTEM_MAP" ; then $2_tmp=`grep -w "$1\$" "$SYSTEM_MAP" | head -n 1 | grep -o "^[[[:xdigit:]]]*" | grep -v "^[[0]]*$"` fi test -n "${$2_tmp}" && $2="0x${$2_tmp}" if test -n "${$2}" ; then AC_MSG_RESULT([found, address ${$2}]) else AC_MSG_ERROR(["Cannot resolve symbol $1"]) fi ]) AC_DEFUN([KAV_LINUX_CONFTEST_H], [ cat - << _END_OF_INPUT_ > conftest.h $1 _END_OF_INPUT_ ]) AC_DEFUN([KAV_LINUX_CONFTEST_C], [ cat confdefs.h - << _END_OF_INPUT_ > conftest.c $1 _END_OF_INPUT_ ]) m4_define([KAV_CONFTEST_TEMPLATE], [ $1 int main (void) { $2 ; return 0; } ]) dnl # dnl # similar to AC_COMPILE_IFELSE dnl # AC_DEFUN([KAV_LINUX_COMPILE_IFELSE], [ m4_ifvaln([$1], [KAV_LINUX_CONFTEST_C([$1])]) m4_ifvaln([$6], [KAV_LINUX_CONFTEST_H([$6])], [KAV_LINUX_CONFTEST_H([])]) rm -Rf build && mkdir -p build && touch build/conftest.mod.c echo "obj-m := conftest.o" > build/Makefile modpost_flag='' AS_IF( [AC_TRY_COMMAND(cp conftest.c conftest.h build && make [$2] -C $KERNEL_PREFIX EXTRA_CFLAGS="-Werror $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag) > /dev/null && AC_TRY_COMMAND([$3])], [$4], [_AC_MSG_LOG_CONFTEST m4_ifvaln([$5],[$5])] ) rm -Rf build ]) dnl # dnl # dnl # AC_DEFUN([KAV_LINUX_TRY_COMPILE], [KAV_LINUX_COMPILE_IFELSE( [AC_LANG_SOURCE([KAV_CONFTEST_TEMPLATE([[$1]],[[$2]])])], [modules], [test -s build/conftest.o], [$3], [$4]) ]) AC_DEFUN([KAV_CHECK_DENTRY_D_CHILD], [ AC_MSG_CHECKING([whether dentry.d_child is available]) KAV_LINUX_TRY_COMPILE([ #include <linux/dcache.h> ], [ struct dentry _dentry; printk("%p\n", &_dentry.d_child); ], [ AC_MSG_RESULT([yes]) DENTRY_HAS_D_CHILD="#define DENTRY_HAS_D_CHILD 1" ], [ AC_MSG_RESULT([no]) DENTRY_HAS_D_CHILD="#undef DENTRY_HAS_D_CHILD" ]) ]) AC_DEFUN([KAV_CHECK_IOP_HAS_RENAME2], [ AC_MSG_CHECKING([whether struct inode_operations have rename2]) KAV_LINUX_TRY_COMPILE([ #include <linux/fs.h> ], [ #if defined(S_IOPS_WRAPPER) struct inode_operations_wrapper i_op; printk("%p\n", &i_op.rename2); #else struct inode_operations i_op; printk("%p\n", &i_op.rename2); #endif ], [ AC_MSG_RESULT([yes]) IOP_HAS_RENAME2="#define IOP_HAS_RENAME2 1" ], [ AC_MSG_RESULT([no]) IOP_HAS_RENAME2="#undef IOP_HAS_RENAME2" ]) ]) AC_DEFUN([KAV_CHECK_IOP_HAS_DOPEN], [ AC_MSG_CHECKING([whether struct inode_operations have dentry_open]) KAV_LINUX_TRY_COMPILE([ #include <linux/fs.h> ], [ #if defined(S_IOPS_WRAPPER) struct inode_operations_wrapper i_op_w; printk("%p\n", &i_op_w.dentry_open); #else struct inode_operations i_op; printk("%p\n", &i_op.dentry_open); #endif ], [ AC_MSG_RESULT([yes]) IOP_HAS_DOPEN="#define IOP_HAS_DOPEN 1" ], [ AC_MSG_RESULT([no]) IOP_HAS_DOPEN="#undef IOP_HAS_DOPEN" ]) ]) dnl Checks for programs. AC_PROG_CC AC_CANONICAL_SYSTEM AC_ARG_PROGRAM MAKE_FILES="Makefile kavmon.h osdef.h" AC_ARG_WITH(kernelsrc, [ --with-kernelsrc set linux kernel sources [default=auto]], kernelsrc="$withval", kernelsrc="") AC_ARG_ENABLE(enable_debug, [ --enable-debug set sebug mode (no)]) if test "$enable_debug" = "yes"; then DEBUG="#define DEBUG" else DEBUG="#undef DEBUG" fi KERNEL_PREFIX="$kernelsrc" case "$host" in *x86_64*) MODULE_ARCH=64 ;; *amd64*) MODULE_ARCH=64 ;; *) MODULE_ARCH=32 ;; esac case "$host" in *linux*) MODULE_SUBDIR="module.linux" MAKE_FILES="$MAKE_FILES module.linux/Makefile" BUILD_TYPE="linux" ;; *freebsd*) MODULE_SUBDIR="module.freebsd" MAKE_FILES="$MAKE_FILES module.freebsd/Makefile" BUILD_TYPE="freebsd" KERNEL_MODNAME="kav4fs_oas.ko" ;; *) echo "$host is not supported" exit 1; ;; esac CFLAGS="" FREEBSD_KERNEL_SRC="" if test "$BUILD_TYPE" = "freebsd"; then FBSDMAJ=`echo $host | grep -o "freebsd[[[:digit:]]]*\." | grep -o "[[[:digit:]]]\+"` if [ "$FBSDMAJ" -le "3" ]; then cp /sys/compile/GENERIC/vnode_if.h module.freebsd/ else FREEBSD_KERNEL_SRC="vnode_if.h" fi fi if test "$BUILD_TYPE" = "linux" ; then KERNEL_HEADERS="$KERNEL_PREFIX/include" if test -f /etc/redhat-release ; then real_os=`head -1 /etc/redhat-release` elif test -f /etc/SuSE-release ; then real_os=`head -1 /etc/SuSE-release` elif test -f /etc/debian_version ; then real_os="Debian `head -1 /etc/debian_version`" else real_os="unknown" fi echo $real_os case "$real_os" in Red*) SMP=`cat /proc/ksyms | grep smp | wc | awk '{print $1}'` if test "$SMP" -eq 0; then CFLAGS=-DUNDEF_SMP; fi ;; esac AC_MSG_CHECKING([for linux kernel sources]) if test -z "$KERNEL_PREFIX"; then AC_MSG_RESULT([no]) echo "Kernel sources path was not set, use --with-kernelsrc option" exit 1; fi if test -d $KERNEL_PREFIX; then AC_MSG_RESULT([$KERNEL_PREFIX]) else AC_MSG_RESULT([no]) echo "Linux kernel sources at $KERNEL_PREFIX not found, please install it" exit 1; fi AC_MSG_CHECKING([for linux kernel version file]) if test -f $KERNEL_PREFIX/include/generated/uapi/utsrelease.h; then VERSION_FILE="$KERNEL_PREFIX/include/generated/uapi/utsrelease.h" elif test -f $KERNEL_PREFIX/include/generated/utsrelease.h; then VERSION_FILE="$KERNEL_PREFIX/include/generated/utsrelease.h" elif test -f $KERNEL_PREFIX/include/linux/utsrelease.h; then VERSION_FILE="$KERNEL_PREFIX/include/linux/utsrelease.h" elif test -f $KERNEL_PREFIX/include/linux/version.h; then VERSION_FILE="$KERNEL_PREFIX/include/linux/version.h" fi AC_MSG_RESULT([${VERSION_FILE}]) AC_MSG_CHECKING([for linux kernel version]) KERNEL_VERSION=`cat ${VERSION_FILE} | grep "UTS_RELEASE" | head -n 1 | cut -d ' ' -f3 | tr -d '"' | cut -d '.' -f1` KERNEL_PATCHLEVEL=`cat ${VERSION_FILE} | grep "UTS_RELEASE" | head -n 1 | cut -d ' ' -f3 | tr -d '"' | cut -d '.' -f2 | cut -d '-' -f1` AC_MSG_RESULT([${KERNEL_VERSION}.${KERNEL_PATCHLEVEL}]) KERNEL_RELEASE=`cat ${VERSION_FILE} | grep "UTS_RELEASE" | head -n 1 | grep -o "\".*\"" | tr -d \"` ver=`echo ${KERNEL_VERSION}${KERNEL_PATCHLEVEL}` SYSTEM_MAP="/boot/System.map-${KERNEL_RELEASE}" test "`uname -r`" = "${KERNEL_RELEASE}" && KALLSYMS="/proc/kallsyms" if test "$ver" -ge 26; then CFLAGS="$CFLAGS -DLINUX_KERNEL26 -DHIDDEN_SCT" MOD_SYMS="$KERNEL_PREFIX/Module.symvers" ptrace_command_addr=0 LINUX_FIND_SYMBOL([arch_ptrace],[ptrace_command_addr]) access_vm_addr=0 LINUX_FIND_SYMBOL([access_process_vm],[access_vm_addr]) ptrace_dolink_addr=0 LINUX_FIND_SYMBOL([__ptrace_link],[ptrace_dolink_addr]) ptrace_unlink_addr=0 LINUX_FIND_SYMBOL([__ptrace_unlink],[ptrace_unlink_addr]) get_empty_filp_addr=0 LINUX_FIND_SYMBOL([get_empty_filp],[get_empty_filp_addr]) release_open_intent_addr=0 LINUX_FIND_SYMBOL([release_open_intent],[release_open_intent_addr]) sys_call_table_addr=0 LINUX_FIND_SYMBOL([sys_call_table],[sys_call_table_addr]) kstrdup_addr=0 LINUX_FIND_SYMBOL([kstrdup],[kstrdup_addr]) KERNEL_MODNAME="kav4fs_oas.ko" KERNEL_TARGET="linux26" LINUX_KERNEL_VERSION="#define LINUX_KERNEL26" if [[[ "$ptrace_command_addr" -ne 0 ]]]; then CFLAGS="$CFLAGS -DUSE_REDIRFS" MODULE_SUBDIR="redirfs $MODULE_SUBDIR" MAKE_FILES="redirfs/Makefile $MAKE_FILES" interceptor="interceptor_rfs" else interceptor="interceptor" fi rm -f "module.linux/Makefile.in" ln -s "Makefile-2.6.in" "module.linux/Makefile.in" else CFLAGS="$CFLAGS -DLINUX_KERNEL24 -D__KERNEL__ -DMODULE -Wall -O2 -fno-strict-aliasing -pipe -Wstrict-prototypes -Wno-trigraphs -fno-common -mpreferred-stack-boundary=2 -march=i586 -pipe -nostdinc" MOD_SYMS="/proc/kallsyms"; INCLUDES="-I. -I.. -iwithprefix include -I\$(KERNEL_HEADERS)" KERNEL_MODNAME="kav4fs_oas.o" KERNEL_TARGET="linux24" LINUX_KERNEL_VERSION="#define LINUX_KERNEL24" rm -f "module.linux/Makefile.in" ln -s "Makefile-2.4.in" "module.linux/Makefile.in" fi LDFLAGS="-m elf_i386 -r" LD="ld" KAV_CHECK_DENTRY_D_CHILD() KAV_CHECK_IOP_HAS_RENAME2() KAV_CHECK_IOP_HAS_DOPEN() AC_SUBST(INCLUDES) AC_SUBST(KERNEL_TARGET) AC_SUBST(KERNEL_PREFIX) AC_SUBST(KERNEL_HEADERS) AC_SUBST(LD) fi MOD_DEST_DIR="../bin/" if test -d "../../oas/include"; then EXTRA_INCLUDES="-I`pwd`/../../oas/include" else EXTRA_INCLUDES="-I`pwd`" fi AC_SUBST(kstrdup_addr) AC_SUBST(ARCH_FILES) AC_SUBST(EXTRA_INCLUDES) AC_SUBST(DEBUG) AC_SUBST(MODPOST) AC_SUBST(MOD_DEST_DIR) AC_SUBST(LINUX_KERNEL_VERSION) AC_SUBST(FREEBSD_KERNEL_SRC) AC_SUBST(KERNEL_MODNAME) AC_SUBST(MODULE) AC_SUBST(MODULE_SUBDIR) AC_SUBST(VMLINUX) AC_SUBST(VMLINUX_SRC) AC_SUBST(MODULE_ARCH) AC_SUBST(ptrace_command_addr) AC_SUBST(access_vm_addr) AC_SUBST(ptrace_dolink_addr) AC_SUBST(ptrace_unlink_addr) AC_SUBST(get_empty_filp_addr) AC_SUBST(release_open_intent_addr) AC_SUBST(sys_call_table_addr) AC_SUBST(interceptor) AC_SUBST(DENTRY_HAS_D_CHILD) AC_SUBST(IOP_HAS_RENAME2) AC_SUBST(IOP_HAS_DOPEN) AC_OUTPUT($MAKE_FILES)
💾 Save Changes
Cancel
📤 Upload File
×
Select File
Upload
Cancel
➕ Create New
×
Type
📄 File
📁 Folder
Name
Create
Cancel
✎ Rename Item
×
Current Name
New Name
Rename
Cancel
🔐 Change Permissions
×
Target File
Permission (e.g., 0755, 0644)
0755
0644
0777
Apply
Cancel