Last active
December 12, 2015 02:49
-
-
Save julienba/4702352 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# make sure we are in the directory containing this script | |
SCRIPTDIR=`dirname $0` | |
cd $SCRIPTDIR | |
PATH="${PATH}:/bin:/sbin" | |
# | |
# HOSTCC vs. CC - if a conftest needs to build and execute a test | |
# binary, like get_uname, then $HOSTCC needs to be used for this | |
# conftest in order for the host/build system to be able to execute | |
# it in X-compile environments. | |
# In all other cases, $CC should be used to minimize the risk of | |
# false failures due to conflicts with architecture specific header | |
# files. | |
# | |
CC="$1" | |
HOSTCC="$2" | |
ARCH=$3 | |
ISYSTEM=`$CC -print-file-name=include 2> /dev/null` | |
SOURCES=$4 | |
HEADERS=$SOURCES/include | |
OUTPUT=$5 | |
XEN_PRESENT=1 | |
test_xen() { | |
# | |
# Determine if the target kernel is a Xen kernel. It used to be | |
# sufficient to check for CONFIG_XEN, but the introduction of | |
# modular para-virtualization (CONFIG_PARAVIRT, etc.) and | |
# Xen guest support, it is no longer possible to determine the | |
# target environment at build time. Therefore, if both | |
# CONFIG_XEN and CONFIG_PARAVIRT are present, text_xen() treats | |
# the kernel as a stand-alone kernel. | |
# | |
OLD_FILE="linux/autoconf.h" | |
NEW_FILE="generated/autoconf.h" | |
if [ -f $HEADERS/$NEW_FILE -o -f $OUTPUT/include/$NEW_FILE ]; then | |
FILE=$NEW_FILE | |
fi | |
if [ -f $HEADERS/$OLD_FILE -o -f $OUTPUT/include/$OLD_FILE ]; then | |
FILE=$OLD_FILE | |
fi | |
if [ -n "$FILE" ]; then | |
# | |
# We are looking at a configured source tree; verify | |
# that it's not a Xen kernel. | |
# | |
echo "#include <$FILE> | |
#if defined(CONFIG_XEN) && !defined(CONFIG_PARAVIRT) | |
#error CONFIG_XEN defined! | |
#endif | |
" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
XEN_PRESENT=0 | |
fi | |
else | |
CONFIG=$HEADERS/../.config | |
if [ -f $CONFIG ]; then | |
if [ -z "$(grep "^CONFIG_XEN=y" $CONFIG)" ]; then | |
XEN_PRESENT="0" | |
return | |
fi | |
if [ -n "$(grep "^CONFIG_PARAVIRT=y" $CONFIG)" ]; then | |
XEN_PRESENT="0" | |
fi | |
fi | |
fi | |
} | |
test_headers() { | |
# | |
# Determine which header files (of a set that may or may not be | |
# present) are provided by the target kernel. | |
# | |
FILES="asm/system.h" | |
FILES="$FILES generated/autoconf.h" | |
FILES="$FILES generated/compile.h" | |
FILES="$FILES generated/utsrelease.h" | |
FILES="$FILES linux/kconfig.h" | |
FILES="$FILES linux/screen_info.h" | |
FILES="$FILES linux/semaphore.h" | |
for FILE in $FILES; do | |
FILE_DEFINE=NV_`echo $FILE | tr '/.' '_' | tr 'a-z' 'A-Z'`_PRESENT | |
if [ -f $HEADERS/$FILE -o -f $OUTPUT/include/$FILE ]; then | |
echo "#define $FILE_DEFINE" >> conftest.h | |
else | |
echo "#undef $FILE_DEFINE" >> conftest.h | |
fi | |
done | |
} | |
build_cflags() { | |
BASE_CFLAGS="-O2 -D__KERNEL__ \ | |
-DKBUILD_BASENAME=\"#conftest$$\" -DKBUILD_MODNAME=\"#conftest$$\" \ | |
-nostdinc -isystem $ISYSTEM" | |
if [ "$OUTPUT" != "$SOURCES" ]; then | |
OUTPUT_CFLAGS="-I$OUTPUT/include2 -I$OUTPUT/include" | |
if [ -f "$OUTPUT/include/generated/autoconf.h" ]; then | |
AUTOCONF_CFLAGS="-include $OUTPUT/include/generated/autoconf.h" | |
else | |
AUTOCONF_CFLAGS="-include $OUTPUT/include/linux/autoconf.h" | |
fi | |
else | |
if [ -f "$HEADERS/generated/autoconf.h" ]; then | |
AUTOCONF_CFLAGS="-include $HEADERS/generated/autoconf.h" | |
else | |
AUTOCONF_CFLAGS="-include $HEADERS/linux/autoconf.h" | |
fi | |
fi | |
CFLAGS="$CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS" | |
test_xen | |
if [ "$OUTPUT" != "$SOURCES" ]; then | |
MACH_CFLAGS="-I$HEADERS/asm-$ARCH/mach-default" | |
if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then | |
MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/asm-x86/mach-default" | |
MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/x86/include/asm/mach-default" | |
elif [ "$ARCH" = "arm" ]; then | |
MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/arm/mach-tegra/include -D__LINUX_ARM_ARCH__=7" | |
fi | |
if [ "$XEN_PRESENT" != "0" ]; then | |
MACH_CFLAGS="-I$HEADERS/asm-$ARCH/mach-xen $MACH_CFLAGS" | |
fi | |
else | |
MACH_CFLAGS="-I$HEADERS/asm/mach-default" | |
if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then | |
MACH_CFLAGS="$MACH_CFLAGS -I$HEADERS/asm-x86/mach-default" | |
MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/x86/include/asm/mach-default" | |
elif [ "$ARCH" = "arm" ]; then | |
MACH_CFLAGS="$MACH_CFLAGS -I$SOURCES/arch/arm/mach-tegra/include -D__LINUX_ARM_ARCH__=7" | |
fi | |
if [ "$XEN_PRESENT" != "0" ]; then | |
MACH_CFLAGS="-I$HEADERS/asm/mach-xen $MACH_CFLAGS" | |
fi | |
fi | |
CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS" | |
if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then | |
CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include" | |
CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include/uapi" | |
CFLAGS="$CFLAGS -I$OUTPUT/arch/x86/include/generated" | |
CFLAGS="$CFLAGS -I$OUTPUT/arch/x86/include/generated/uapi" | |
elif [ "$ARCH" = "arm" ]; then | |
CFLAGS="$CFLAGS -I$SOURCES/arch/arm/include -I$OUTPUT/arch/arm/include/generated" | |
fi | |
if [ -n "$BUILD_PARAMS" ]; then | |
CFLAGS="$CFLAGS -D$BUILD_PARAMS" | |
fi | |
} | |
CONFTEST_PREAMBLE="#include \"conftest.h\" | |
#if defined(NV_LINUX_KCONFIG_H_PRESENT) | |
#include <linux/kconfig.h> | |
#endif | |
#if defined(NV_GENERATED_AUTOCONF_H_PRESENT) | |
#include <generated/autoconf.h> | |
#else | |
#include <linux/autoconf.h> | |
#endif | |
#if defined(CONFIG_XEN) && \ | |
defined(CONFIG_XEN_INTERFACE_VERSION) && !defined(__XEN_INTERFACE_VERSION__) | |
#define __XEN_INTERFACE_VERSION__ CONFIG_XEN_INTERFACE_VERSION | |
#endif" | |
compile_test() { | |
case "$1" in | |
remap_page_range) | |
# | |
# Determine if the remap_page_range() function is present | |
# and how many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/mm.h> | |
void conftest_remap_page_range(void) { | |
remap_page_range(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_REMAP_PAGE_RANGE_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/mm.h> | |
int conftest_remap_page_range(void) { | |
pgprot_t pgprot = __pgprot(0); | |
return remap_page_range(NULL, 0L, 0L, 0L, pgprot); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_REMAP_PAGE_RANGE_PRESENT" >> conftest.h | |
echo "#define NV_REMAP_PAGE_RANGE_ARGUMENT_COUNT 5" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/mm.h> | |
int conftest_remap_page_range(void) { | |
pgprot_t pgprot = __pgprot(0); | |
return remap_page_range(0L, 0L, 0L, pgprot); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_REMAP_PAGE_RANGE_PRESENT" >> conftest.h | |
echo "#define NV_REMAP_PAGE_RANGE_ARGUMENT_COUNT 4" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#error remap_page_range() conftest failed!" >> conftest.h | |
return | |
fi | |
;; | |
set_memory_uc) | |
# | |
# Determine if the set_memory_uc() function is present. | |
# | |
# The logic in this test, and similar tests below, might look | |
# backwards, but it is correct: if the function is present, the code | |
# snippet will fail to compile because the function call won't match | |
# the prototype. If the function is not present, the code snippet | |
# will produce an object file with the function as an unresolved | |
# symbol. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <asm/cacheflush.h> | |
void conftest_set_memory_uc(void) { | |
set_memory_uc(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_SET_MEMORY_UC_PRESENT" >> conftest.h | |
return | |
else | |
echo "#define NV_SET_MEMORY_UC_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
set_memory_array_uc) | |
# | |
# Determine if the set_memory_array_uc() function is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <asm/cacheflush.h> | |
void conftest_set_memory_array_uc(void) { | |
set_memory_array_uc(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_SET_MEMORY_ARRAY_UC_PRESENT" >> conftest.h | |
return | |
else | |
echo "#define NV_SET_MEMORY_ARRAY_UC_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
set_pages_uc) | |
# | |
# Determine if the set_pages_uc() function is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <asm/cacheflush.h> | |
void conftest_set_pages_uc(void) { | |
set_pages_uc(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_SET_PAGES_UC_PRESENT" >> conftest.h | |
return | |
else | |
echo "#define NV_SET_PAGES_UC_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
change_page_attr) | |
# | |
# Determine if the change_page_attr() function is | |
# present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/version.h> | |
#include <linux/utsname.h> | |
#include <linux/mm.h> | |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) | |
#include <asm/cacheflush.h> | |
#endif | |
void conftest_change_page_attr(void) { | |
change_page_attr(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
pci_get_class) | |
# | |
# Determine if the pci_get_class() function is | |
# present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/pci.h> | |
void conftest_pci_get_class(void) { | |
pci_get_class(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_PCI_GET_CLASS_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_PCI_GET_CLASS_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
pci_get_domain_bus_and_slot) | |
# | |
# Determine if the pci_get_domain_bus_and_slot() function | |
# is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/pci.h> | |
void conftest_pci_get_domain_bus_and_slot(void) { | |
pci_get_domain_bus_and_slot(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_PCI_GET_DOMAIN_BUS_AND_SLOT_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_PCI_GET_DOMAIN_BUS_AND_SLOT_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
remap_pfn_range) | |
# | |
# Determine if the remap_pfn_range() function is | |
# present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/mm.h> | |
void conftest_remap_pfn_range(void) { | |
remap_pfn_range(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_REMAP_PFN_RANGE_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_REMAP_PFN_RANGE_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
agp_backend_acquire) | |
# | |
# Determine if the agp_backend_acquire() function is | |
# present and how many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/types.h> | |
#include <linux/agp_backend.h> | |
typedef struct agp_bridge_data agp_bridge_data; | |
agp_bridge_data *conftest_agp_backend_acquire(struct pci_dev *dev) { | |
return agp_backend_acquire(dev, 0L); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_AGP_BACKEND_ACQUIRE_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/types.h> | |
#include <linux/agp_backend.h> | |
typedef struct agp_bridge_data agp_bridge_data; | |
agp_bridge_data *conftest_agp_backend_acquire(struct pci_dev *dev) { | |
return agp_backend_acquire(dev); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_AGP_BACKEND_ACQUIRE_PRESENT" >> conftest.h | |
echo "#define NV_AGP_BACKEND_ACQUIRE_ARGUMENT_COUNT 1" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/types.h> | |
#include <linux/agp_backend.h> | |
typedef struct agp_bridge_data agp_bridge_data; | |
agp_bridge_data *conftest_agp_backend_acquire(void) { | |
return agp_backend_acquire(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_AGP_BACKEND_ACQUIRE_PRESENT" >> conftest.h | |
echo "#define NV_AGP_BACKEND_ACQUIRE_ARGUMENT_COUNT 0" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#error agp_backend_acquire() conftest failed!" >> conftest.h | |
return | |
fi | |
;; | |
vmap) | |
# | |
# Determine if the vmap() function is present and how | |
# many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/vmalloc.h> | |
void conftest_vmap(void) { | |
vmap(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_VMAP_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/vmalloc.h> | |
void *conftest_vmap(struct page **pages, int count) { | |
return vmap(pages, count); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_VMAP_PRESENT" >> conftest.h | |
echo "#define NV_VMAP_ARGUMENT_COUNT 2" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/vmalloc.h> | |
#include <linux/mm.h> | |
void *conftest_vmap(struct page **pages, int count) { | |
return vmap(pages, count, 0, PAGE_KERNEL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_VMAP_PRESENT" >> conftest.h | |
echo "#define NV_VMAP_ARGUMENT_COUNT 4" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#error vmap() conftest failed!" >> conftest.h | |
return | |
fi | |
;; | |
i2c_adapter) | |
# | |
# Determine if the 'i2c_adapter' structure has inc_use() | |
# and client_register() members. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/i2c.h> | |
int conftest_i2c_adapter(void) { | |
return offsetof(struct i2c_adapter, inc_use); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_I2C_ADAPTER_HAS_INC_USE" >> conftest.h | |
rm -f conftest$$.o | |
else | |
echo "#undef NV_I2C_ADAPTER_HAS_INC_USE" >> conftest.h | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/i2c.h> | |
int conftest_i2c_adapter(void) { | |
return offsetof(struct i2c_adapter, client_register); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_I2C_ADAPTER_HAS_CLIENT_REGISTER" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#undef NV_I2C_ADAPTER_HAS_CLIENT_REGISTER" >> conftest.h | |
return | |
fi | |
;; | |
pm_message_t) | |
# | |
# Determine if the 'pm_message_t' data type is present | |
# and if it as an 'event' member. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/pm.h> | |
void conftest_pm_message_t(pm_message_t state) { | |
pm_message_t *p = &state; | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_PM_MESSAGE_T_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
else | |
echo "#undef NV_PM_MESSAGE_T_PRESENT" >> conftest.h | |
echo "#undef NV_PM_MESSAGE_T_HAS_EVENT" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/pm.h> | |
int conftest_pm_message_t(void) { | |
return offsetof(pm_message_t, event); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_PM_MESSAGE_T_HAS_EVENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#undef NV_PM_MESSAGE_T_HAS_EVENT" >> conftest.h | |
return | |
fi | |
;; | |
pci_choose_state) | |
# | |
# Determine if the pci_choose_state() function is | |
# present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/pci.h> | |
void conftest_pci_choose_state(void) { | |
pci_choose_state(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_PCI_CHOOSE_STATE_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_PCI_CHOOSE_STATE_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
vm_insert_page) | |
# | |
# Determine if the vm_insert_page() function is | |
# present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/mm.h> | |
void conftest_vm_insert_page(void) { | |
vm_insert_page(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_VM_INSERT_PAGE_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_VM_INSERT_PAGE_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
irq_handler_t) | |
# | |
# Determine if the 'irq_handler_t' type is present and | |
# if it takes a 'struct ptregs *' argument. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/interrupt.h> | |
irq_handler_t conftest_isr; | |
" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ ! -f conftest$$.o ]; then | |
echo "#undef NV_IRQ_HANDLER_T_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
rm -f conftest$$.o | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/interrupt.h> | |
irq_handler_t conftest_isr; | |
int conftest_irq_handler_t(int irq, void *arg) { | |
return conftest_isr(irq, arg); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_IRQ_HANDLER_T_PRESENT" >> conftest.h | |
echo "#define NV_IRQ_HANDLER_T_ARGUMENT_COUNT 2" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/interrupt.h> | |
irq_handler_t conftest_isr; | |
int conftest_irq_handler_t(int irq, void *arg, struct pt_regs *regs) { | |
return conftest_isr(irq, arg, regs); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_IRQ_HANDLER_T_PRESENT" >> conftest.h | |
echo "#define NV_IRQ_HANDLER_T_ARGUMENT_COUNT 3" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#error irq_handler_t() conftest failed!" >> conftest.h | |
return | |
fi | |
;; | |
acpi_device_ops) | |
# | |
# Determine if the 'acpi_device_ops' structure has | |
# a match() member. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <acpi/acpi_bus.h> | |
int conftest_acpi_device_ops(void) { | |
return offsetof(struct acpi_device_ops, match); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ACPI_DEVICE_OPS_HAS_MATCH" >> conftest.h | |
return | |
else | |
echo "#undef NV_ACPI_DEVICE_OPS_HAS_MATCH" >> conftest.h | |
return | |
fi | |
;; | |
acpi_device_id) | |
# | |
# Determine if the 'acpi_device_id' structure has | |
# a 'driver_data' member. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <acpi/acpi_drivers.h> | |
int conftest_acpi_device_id(void) { | |
return offsetof(struct acpi_device_id, driver_data); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_ACPI_DEVICE_ID_HAS_DRIVER_DATA" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#undef NV_ACPI_DEVICE_ID_HAS_DRIVER_DATA" >> conftest.h | |
return | |
fi | |
;; | |
acquire_console_sem) | |
# | |
# Determine if the acquire_console_sem() function | |
# is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/console.h> | |
void conftest_acquire_console_sem(void) { | |
acquire_console_sem(NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_ACQUIRE_CONSOLE_SEM_PRESENT" >> conftest.h | |
return | |
else | |
echo "#define NV_ACQUIRE_CONSOLE_SEM_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
kmem_cache_create) | |
# | |
# Determine if the kmem_cache_create() function is | |
# present and how many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/slab.h> | |
void conftest_kmem_cache_create(void) { | |
kmem_cache_create(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_KMEM_CACHE_CREATE_PRESENT" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/slab.h> | |
void conftest_kmem_cache_create(void) { | |
kmem_cache_create(NULL, 0, 0, 0L, NULL, NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_KMEM_CACHE_CREATE_PRESENT" >> conftest.h | |
echo "#define NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT 6" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/slab.h> | |
void conftest_kmem_cache_create(void) { | |
kmem_cache_create(NULL, 0, 0, 0L, NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_KMEM_CACHE_CREATE_PRESENT" >> conftest.h | |
echo "#define NV_KMEM_CACHE_CREATE_ARGUMENT_COUNT 5" >> conftest.h | |
return | |
else | |
echo "#error kmem_cache_create() conftest failed!" >> conftest.h | |
fi | |
;; | |
smp_call_function) | |
# | |
# Determine if the smp_call_function() function is | |
# present and how many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/smp.h> | |
void conftest_smp_call_function(void) { | |
#ifdef CONFIG_SMP | |
smp_call_function(); | |
#endif | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_SMP_CALL_FUNCTION_PRESENT" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/smp.h> | |
void conftest_smp_call_function(void) { | |
smp_call_function(NULL, NULL, 0, 0); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_SMP_CALL_FUNCTION_PRESENT" >> conftest.h | |
echo "#define NV_SMP_CALL_FUNCTION_ARGUMENT_COUNT 4" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/smp.h> | |
void conftest_smp_call_function(void) { | |
smp_call_function(NULL, NULL, 0); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_SMP_CALL_FUNCTION_PRESENT" >> conftest.h | |
echo "#define NV_SMP_CALL_FUNCTION_ARGUMENT_COUNT 3" >> conftest.h | |
return | |
else | |
echo "#error smp_call_function() conftest failed!" >> conftest.h | |
fi | |
;; | |
on_each_cpu) | |
# | |
# Determine if the on_each_cpu() function is present | |
# and how many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/smp.h> | |
void conftest_on_each_cpu(void) { | |
#ifdef CONFIG_SMP | |
on_each_cpu(); | |
#endif | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_ON_EACH_CPU_PRESENT" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/smp.h> | |
void conftest_on_each_cpu(void) { | |
on_each_cpu(NULL, NULL, 0, 0); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ON_EACH_CPU_PRESENT" >> conftest.h | |
echo "#define NV_ON_EACH_CPU_ARGUMENT_COUNT 4" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/smp.h> | |
void conftest_on_each_cpu(void) { | |
on_each_cpu(NULL, NULL, 0); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ON_EACH_CPU_PRESENT" >> conftest.h | |
echo "#define NV_ON_EACH_CPU_ARGUMENT_COUNT 3" >> conftest.h | |
return | |
else | |
echo "#error on_each_cpu() conftest failed!" >> conftest.h | |
fi | |
;; | |
vmm_support) | |
# check if a VMM is supported (Xen only for now). | |
if [ -f nv-xen.h ]; then | |
echo "#define HAVE_NV_XEN 1" >> conftest.h | |
return | |
else | |
echo "#undef HAVE_NV_XEN" >> conftest.h | |
fi | |
;; | |
acpi_evaluate_integer) | |
# | |
# Determine if the acpi_evaluate_integer() function is | |
# present and the type of its 'data' argument. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <acpi/acpi_bus.h> | |
acpi_status acpi_evaluate_integer(acpi_handle h, acpi_string s, | |
struct acpi_object_list *l, unsigned long long *d) { | |
return AE_OK; | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ACPI_EVALUATE_INTEGER_PRESENT" >> conftest.h | |
echo "typedef unsigned long long nv_acpi_integer_t;" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <acpi/acpi_bus.h> | |
acpi_status acpi_evaluate_integer(acpi_handle h, acpi_string s, | |
struct acpi_object_list *l, unsigned long *d) { | |
return AE_OK; | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ACPI_EVALUATE_INTEGER_PRESENT" >> conftest.h | |
echo "typedef unsigned long nv_acpi_integer_t;" >> conftest.h | |
return | |
else | |
# | |
# We can't report a compile test failure here because | |
# this is a catch-all for both kernels that don't | |
# have acpi_evaluate_integer() and kernels that have | |
# broken header files that make it impossible to | |
# tell if the function is present. | |
# | |
echo "#undef NV_ACPI_EVALUATE_INTEGER_PRESENT" >> conftest.h | |
echo "typedef unsigned long nv_acpi_integer_t;" >> conftest.h | |
fi | |
;; | |
acpi_walk_namespace) | |
# | |
# Determine if the acpi_walk_namespace() function is present | |
# and how many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/acpi.h> | |
void conftest_acpi_walk_namespace(void) { | |
acpi_walk_namespace(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_ACPI_WALK_NAMESPACE_PRESENT" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/acpi.h> | |
void conftest_acpi_walk_namespace(void) { | |
acpi_walk_namespace(0, NULL, 0, NULL, NULL, NULL, NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ACPI_WALK_NAMESPACE_PRESENT" >> conftest.h | |
echo "#define NV_ACPI_WALK_NAMESPACE_ARGUMENT_COUNT 7" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/acpi.h> | |
void conftest_acpi_walk_namespace(void) { | |
acpi_walk_namespace(0, NULL, 0, NULL, NULL, NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ACPI_WALK_NAMESPACE_PRESENT" >> conftest.h | |
echo "#define NV_ACPI_WALK_NAMESPACE_ARGUMENT_COUNT 6" >> conftest.h | |
return | |
else | |
echo "#error acpi_walk_namespace() conftest failed!" >> conftest.h | |
fi | |
;; | |
acpi_os_wait_events_complete) | |
# | |
# Determine if the acpi_os_wait_events_complete() function | |
# is present and how many arguments it takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/acpi.h> | |
void conftest_acpi_os_wait_events_complete(void) { | |
acpi_os_wait_events_complete(NULL, NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_ACPI_OS_WAIT_EVENTS_COMPLETE_PRESENT" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/acpi.h> | |
void conftest_acpi_os_wait_events_complete(void) { | |
acpi_os_wait_events_complete(NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ACPI_OS_WAIT_EVENTS_COMPLETE_PRESENT" >> conftest.h | |
echo "#define NV_ACPI_OS_WAIT_EVENTS_COMPLETE_ARGUMENT_COUNT 1" >> conftest.h | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/acpi.h> | |
void conftest_acpi_os_wait_events_complete(void) { | |
acpi_os_wait_events_complete(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#define NV_ACPI_OS_WAIT_EVENTS_COMPLETE_PRESENT" >> conftest.h | |
echo "#define NV_ACPI_OS_WAIT_EVENTS_COMPLETE_ARGUMENT_COUNT 0" >> conftest.h | |
return | |
else | |
echo "#error acpi_os_wait_events_complete() conftest failed!" >> conftest.h | |
fi | |
;; | |
ioremap_cache) | |
# | |
# Determine if the ioremap_cache() function is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <asm/io.h> | |
void conftest_ioremap_cache(void) { | |
ioremap_cache(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_IOREMAP_CACHE_PRESENT" >> conftest.h | |
return | |
else | |
echo "#define NV_IOREMAP_CACHE_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
ioremap_wc) | |
# | |
# Determine if the ioremap_wc() function is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <asm/io.h> | |
void conftest_ioremap_wc(void) { | |
ioremap_wc(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
rm -f conftest$$.o | |
echo "#undef NV_IOREMAP_WC_PRESENT" >> conftest.h | |
return | |
else | |
echo "#define NV_IOREMAP_WC_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
proc_dir_entry) | |
# | |
# Determine if the 'proc_dir_entry' structure has | |
# an 'owner' member. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/proc_fs.h> | |
int conftest_proc_dir_entry(void) { | |
return offsetof(struct proc_dir_entry, owner); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_PROC_DIR_ENTRY_HAS_OWNER" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#undef NV_PROC_DIR_ENTRY_HAS_OWNER" >> conftest.h | |
return | |
fi | |
;; | |
INIT_WORK) | |
# | |
# Determine how many arguments the INIT_WORK() macro | |
# takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/workqueue.h> | |
void conftest_INIT_WORK(void) { | |
INIT_WORK(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_INIT_WORK_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/workqueue.h> | |
void conftest_INIT_WORK(void) { | |
INIT_WORK((struct work_struct *)NULL, NULL, NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_INIT_WORK_PRESENT" >> conftest.h | |
echo "#define NV_INIT_WORK_ARGUMENT_COUNT 3" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/workqueue.h> | |
void conftest_INIT_WORK(void) { | |
INIT_WORK((struct work_struct *)NULL, NULL); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_INIT_WORK_PRESENT" >> conftest.h | |
echo "#define NV_INIT_WORK_ARGUMENT_COUNT 2" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#error INIT_WORK() conftest failed!" >> conftest.h | |
return | |
fi | |
;; | |
pci_dma_mapping_error) | |
# | |
# Determine how many arguments pci_dma_mapping_error() | |
# takes. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/pci.h> | |
int conftest_pci_dma_mapping_error(void) { | |
return pci_dma_mapping_error(NULL, 0); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_PCI_DMA_MAPPING_ERROR_PRESENT" >> conftest.h | |
echo "#define NV_PCI_DMA_MAPPING_ERROR_ARGUMENT_COUNT 2" >> conftest.h | |
rm -f conftest$$.o | |
return | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/pci.h> | |
int conftest_pci_dma_mapping_error(void) { | |
return pci_dma_mapping_error(0); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_PCI_DMA_MAPPING_ERROR_PRESENT" >> conftest.h | |
echo "#define NV_PCI_DMA_MAPPING_ERROR_ARGUMENT_COUNT 1" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#error pci_dma_mapping_error() conftest failed!" >> conftest.h | |
return | |
fi | |
;; | |
agp_memory) | |
# | |
# Determine if the 'agp_memory' structure has | |
# a 'pages' member. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/types.h> | |
#include <linux/agp_backend.h> | |
int conftest_agp_memory(void) { | |
return offsetof(struct agp_memory, pages); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_AGP_MEMORY_HAS_PAGES" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#undef NV_AGP_MEMORY_HAS_PAGES" >> conftest.h | |
return | |
fi | |
;; | |
scatterlist) | |
# | |
# Determine if the 'scatterlist' structure has | |
# a 'page_link' member. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/types.h> | |
#include <linux/scatterlist.h> | |
int conftest_scatterlist(void) { | |
return offsetof(struct scatterlist, page_link); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_SCATTERLIST_HAS_PAGE" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_SCATTERLIST_HAS_PAGE" >> conftest.h | |
return | |
fi | |
;; | |
pci_domain_nr) | |
# | |
# Determine if the pci_domain_nr() function is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/types.h> | |
#include <linux/pci.h> | |
int conftest_pci_domain_nr(struct pci_dev *dev) { | |
return pci_domain_nr(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_PCI_DOMAIN_NR_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_PCI_DOMAIN_NR_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
file_operations) | |
# | |
# Determine if the 'file_operations' structure has | |
# 'ioctl', 'unlocked_ioctl' and 'compat_ioctl' fields. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/fs.h> | |
int conftest_file_operations(void) { | |
return offsetof(struct file_operations, ioctl); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_FILE_OPERATIONS_HAS_IOCTL" >> conftest.h | |
rm -f conftest$$.o | |
else | |
echo "#undef NV_FILE_OPERATIONS_HAS_IOCTL" >> conftest.h | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/fs.h> | |
int conftest_file_operations(void) { | |
return offsetof(struct file_operations, unlocked_ioctl); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_FILE_OPERATIONS_HAS_UNLOCKED_IOCTL" >> conftest.h | |
rm -f conftest$$.o | |
else | |
echo "#undef NV_FILE_OPERATIONS_HAS_UNLOCKED_IOCTL" >> conftest.h | |
fi | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/fs.h> | |
int conftest_file_operations(void) { | |
return offsetof(struct file_operations, compat_ioctl); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#define NV_FILE_OPERATIONS_HAS_COMPAT_IOCTL" >> conftest.h | |
rm -f conftest$$.o | |
else | |
echo "#undef NV_FILE_OPERATIONS_HAS_COMPAT_IOCTL" >> conftest.h | |
fi | |
;; | |
sg_init_table) | |
# | |
# Determine if the sg_init_table() function is present. | |
# | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/scatterlist.h> | |
void conftest_sg_init_table(struct scatterlist *sgl, | |
unsigned int nents) { | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ ! -f conftest$$.o ]; then | |
echo "#undef NV_SG_INIT_TABLE_PRESENT" >> conftest.h | |
return | |
fi | |
rm -f conftest$$.o | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/types.h> | |
#include <linux/scatterlist.h> | |
void conftest_sg_init_table(struct scatterlist *sgl, | |
unsigned int nents) { | |
sg_init_table(); | |
}" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ -f conftest$$.o ]; then | |
echo "#undef NV_SG_INIT_TABLE_PRESENT" >> conftest.h | |
rm -f conftest$$.o | |
return | |
else | |
echo "#define NV_SG_INIT_TABLE_PRESENT" >> conftest.h | |
return | |
fi | |
;; | |
esac | |
} | |
build_cflags | |
case "$6" in | |
cc_sanity_check) | |
# | |
# Check if the selected compiler can create object files | |
# in the current environment. | |
# | |
VERBOSE=$7 | |
echo "int cc_sanity_check(void) { | |
return 0; | |
}" > conftest$$.c | |
$CC -c conftest$$.c > /dev/null 2>&1 | |
rm -f conftest$$.c | |
if [ ! -f conftest$$.o ]; then | |
if [ "$VERBOSE" = "full_output" ]; then | |
echo ""; | |
fi | |
if [ "$CC" != "cc" ]; then | |
echo "The C compiler '$CC' does not appear to be able to" | |
echo "create object files. Please make sure you have " | |
echo "your Linux distribution's libc development package" | |
echo "installed and that '$CC' is a valid C compiler"; | |
echo "name." | |
else | |
echo "The C compiler '$CC' does not appear to be able to" | |
echo "create executables. Please make sure you have " | |
echo "your Linux distribution's gcc and libc development" | |
echo "packages installed." | |
fi | |
if [ "$VERBOSE" = "full_output" ]; then | |
echo ""; | |
echo "*** Failed CC sanity check. Bailing out! ***"; | |
echo ""; | |
fi | |
exit 1 | |
else | |
rm -f conftest$$.o | |
exit 0 | |
fi | |
;; | |
cc_version_check) | |
# | |
# Verify that the same compiler is used for the kernel and kernel | |
# module. | |
# | |
VERBOSE=$7 | |
if [ ! -f gcc-version-check.c ]; then | |
# | |
# gcc-version-check.c is not in the current working directory. | |
# This can happen when building the kernel module from an | |
# NVIDIA-internal intermediate directory prior to creating an | |
# NVIDIA driver package. Since the version check below is less | |
# useful than it used to be, just silently skip the test if | |
# gcc-version-check.c is missing. | |
# | |
IGNORE_CC_MISMATCH=1 | |
fi | |
if [ -n "$IGNORE_CC_MISMATCH" -o -n "$SYSSRC" -o -n "$SYSINCLUDE" ]; then | |
# | |
# The user chose to disable the CC version test (which may or | |
# may not be wise) or is building the module for a kernel not | |
# currently running, which renders the test meaningless. | |
# | |
exit 0 | |
fi | |
rm -f gcc-version-check | |
$HOSTCC gcc-version-check.c -o gcc-version-check > /dev/null 2>&1 | |
if [ ! -f gcc-version-check ]; then | |
if [ "$CC" != "cc" ]; then | |
MSG="Could not compile 'gcc-version-check.c'. Please be " | |
MSG="$MSG sure you have your Linux distribution's libc " | |
MSG="$MSG development package installed and that '$CC' " | |
MSG="$MSG is a valid C compiler name." | |
else | |
MSG="Could not compile 'gcc-version-check.c'. Please be " | |
MSG="$MSG sure you have your Linux distribution's gcc " | |
MSG="$MSG and libc development packages installed." | |
fi | |
RET=1 | |
else | |
PROC_VERSION="/proc/version" | |
if [ -f $PROC_VERSION ]; then | |
MSG=`./gcc-version-check "$(cat $PROC_VERSION)"` | |
RET=$? | |
else | |
MSG="$PROC_VERSION does not exist." | |
RET=1 | |
fi | |
rm -f gcc-version-check | |
fi | |
if [ "$RET" != "0" ]; then | |
# | |
# The gcc version check failed | |
# | |
if [ "$VERBOSE" = "full_output" ]; then | |
echo ""; | |
echo "gcc-version-check failed:"; | |
echo ""; | |
echo "$MSG" | fmt -w 52 | |
echo ""; | |
echo "If you know what you are doing and want to override"; | |
echo "the gcc version check, you can do so by setting the"; | |
echo "IGNORE_CC_MISMATCH environment variable to \"1\"."; | |
echo ""; | |
echo "In any other case, set the CC environment variable"; | |
echo "to the name of the compiler that was used to compile"; | |
echo "the kernel."; | |
echo "" | |
echo "*** Failed CC version check. Bailing out! ***"; | |
echo ""; | |
else | |
echo "$MSG"; | |
fi | |
exit 1; | |
else | |
exit 0 | |
fi | |
;; | |
suser_sanity_check) | |
# | |
# Determine the caller's user id to determine if we have sufficient | |
# privileges for the requested operation. | |
# | |
if [ $(id -ur) != 0 ]; then | |
echo ""; | |
echo "Please run \"make install\" as root."; | |
echo ""; | |
echo "*** Failed super-user sanity check. Bailing out! ***"; | |
exit 1 | |
else | |
exit 0 | |
fi | |
;; | |
rmmod_sanity_check) | |
# | |
# Make sure that any currently loaded NVIDIA kernel module can be | |
# unloaded. | |
# | |
MODULE="nvidia" | |
if [ -n "$SYSSRC" -o -n "$SYSINCLUDE" ]; then | |
# | |
# Don't attempt to remove the kernel module if we're not | |
# building against the running kernel. | |
# | |
exit 0 | |
fi | |
if lsmod | grep -wq $MODULE; then | |
rmmod $MODULE > /dev/null 2>&1 | |
fi | |
if lsmod | grep -wq $MODULE; then | |
# | |
# The NVIDIA kernel module is still loaded, most likely because | |
# it is busy. | |
# | |
echo ""; | |
echo "Unable to remove existing NVIDIA kernel module."; | |
echo "Please be sure you have exited X before attempting"; | |
echo "to install the NVIDIA kernel module."; | |
echo ""; | |
echo "*** Failed rmmod sanity check. Bailing out! ***"; | |
exit 1 | |
else | |
exit 0 | |
fi | |
;; | |
select_makefile) | |
# | |
# Select which Makefile to use based on the version of the | |
# kernel we are building against: use the kbuild Makefile for | |
# 2.6 and newer kernels, and the old Makefile for kernels older | |
# than 2.6. | |
# | |
rm -f Makefile | |
RET=1 | |
VERBOSE=$7 | |
FILE="linux/version.h" | |
SELECTED_MAKEFILE="" | |
if [ -f $HEADERS/$FILE -o -f $OUTPUT/include/$FILE ]; then | |
# | |
# We are either looking at a configured kernel source | |
# tree or at headers shipped for a specific kernel. | |
# Determine the kernel version using a compile check. | |
# | |
rm -f conftest.h | |
test_headers | |
echo "$CONFTEST_PREAMBLE | |
#include <linux/version.h> | |
#include <linux/utsname.h> | |
#if defined(TEST_2_4) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) | |
#error \"!KERNEL_2_4\" | |
#endif | |
#if defined(TEST_2_6_OR_3) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) | |
#error \"!KERNEL_2_6_OR_3\" | |
#endif" > conftest$$.c | |
$CC $CFLAGS -DTEST_2_6_OR_3 -c conftest$$.c > /dev/null 2>&1 | |
if [ -f conftest$$.o ]; then | |
if [ -f Makefile.rmlite ]; then | |
SELECTED_MAKEFILE=Makefile.rmlite | |
else | |
SELECTED_MAKEFILE=Makefile.kbuild | |
fi | |
RET=0 | |
else | |
$CC $CFLAGS -DTEST_2_4 -c conftest$$.c > /dev/null 2>&1 | |
if [ -f conftest$$.o ]; then | |
SELECTED_MAKEFILE=Makefile.nvidia | |
RET=0 | |
fi | |
fi | |
rm -f conftest$$.c conftest$$.o | |
rm -f conftest.h | |
else | |
MAKEFILE=$HEADERS/../Makefile | |
CONFIG=$HEADERS/../.config | |
if [ -f $MAKEFILE -a -f $CONFIG ]; then | |
# | |
# This source tree is not configured, but includes | |
# a Makefile and a .config file. If this is a 2.6 | |
# kernel older than 2.6.6, that's all we require to | |
# build the module. | |
# | |
PATCHLEVEL=$(grep "^PATCHLEVEL =" $MAKEFILE | cut -d " " -f 3) | |
SUBLEVEL=$(grep "^SUBLEVEL =" $MAKEFILE | cut -d " " -f 3) | |
if [ -n "$PATCHLEVEL" -a $PATCHLEVEL -ge 6 \ | |
-a -n "$SUBLEVEL" -a $SUBLEVEL -le 5 ]; then | |
SELECTED_MAKEFILE=Makefile.kbuild | |
RET=0 | |
fi | |
fi | |
fi | |
if [ "$RET" = "0" ]; then | |
ln -s $SELECTED_MAKEFILE Makefile | |
exit 0 | |
else | |
echo "If you are using a Linux 2.4 kernel, please make sure"; | |
echo "you either have configured kernel sources matching your"; | |
echo "kernel or the correct set of kernel headers installed"; | |
echo "on your system."; | |
echo ""; | |
echo "If you are using a Linux 2.6 kernel, please make sure"; | |
echo "you have configured kernel sources matching your kernel"; | |
echo "installed on your system. If you specified a separate"; | |
echo "output directory using either the \"KBUILD_OUTPUT\" or"; | |
echo "the \"O\" KBUILD parameter, make sure to specify this"; | |
echo "directory with the SYSOUT environment variable or with"; | |
echo "the equivalent nvidia-installer command line option."; | |
echo ""; | |
echo "Depending on where and how the kernel sources (or the"; | |
echo "kernel headers) were installed, you may need to specify"; | |
echo "their location with the SYSSRC environment variable or"; | |
echo "the equivalent nvidia-installer command line option."; | |
echo ""; | |
if [ "$VERBOSE" = "full_output" ]; then | |
echo "*** Unable to determine the target kernel version. ***"; | |
echo ""; | |
fi | |
exit 1 | |
fi | |
;; | |
get_uname) | |
# | |
# Print UTS_RELEASE from the kernel sources, if the kernel header | |
# file ../linux/version.h or ../linux/utsrelease.h exists. If | |
# neither header file is found, but a Makefile is found, extract | |
# PATCHLEVEL and SUBLEVEL, and use them to build the kernel | |
# release name. | |
# | |
# If no source file is found, or if an error occurred, return the | |
# output of `uname -r`. | |
# | |
RET=1 | |
DIRS="generated linux" | |
FILE="" | |
for DIR in $DIRS; do | |
if [ -f $HEADERS/$DIR/utsrelease.h ]; then | |
FILE="$HEADERS/$DIR/utsrelease.h" | |
break | |
elif [ -f $OUTPUT/include/$DIR/utsrelease.h ]; then | |
FILE="$OUTPUT/include/$DIR/utsrelease.h" | |
break | |
fi | |
done | |
if [ -z "$FILE" ]; then | |
if [ -f $HEADERS/linux/version.h ]; then | |
FILE="$HEADERS/linux/version.h" | |
elif [ -f $OUTPUT/include/linux/version.h ]; then | |
FILE="$OUTPUT/include/linux/version.h" | |
fi | |
fi | |
if [ -n "$FILE" ]; then | |
# | |
# We are either looking at a configured kernel source tree | |
# or at headers shipped for a specific kernel. Determine | |
# the kernel version using a CPP check. | |
# | |
VERSION=`echo "UTS_RELEASE" | $CC - -E -P -include $FILE 2>&1` | |
if [ "$?" = "0" -a "VERSION" != "UTS_RELEASE" ]; then | |
echo "$VERSION" | |
RET=0 | |
fi | |
else | |
# | |
# If none of the kernel headers ar found, but a Makefile is, | |
# extract PATCHLEVEL and SUBLEVEL and use them to find | |
# the kernel version. | |
# | |
MAKEFILE=$HEADERS/../Makefile | |
if [ -f $MAKEFILE ]; then | |
# | |
# This source tree is not configured, but includes | |
# the top-level Makefile. | |
# | |
PATCHLEVEL=$(grep "^PATCHLEVEL =" $MAKEFILE | cut -d " " -f 3) | |
SUBLEVEL=$(grep "^SUBLEVEL =" $MAKEFILE | cut -d " " -f 3) | |
if [ -n "$PATCHLEVEL" -a -n "$SUBLEVEL" ]; then | |
echo 2.$PATCHLEVEL.$SUBLEVEL | |
RET=0 | |
fi | |
fi | |
fi | |
if [ "$RET" != "0" ]; then | |
uname -r | |
exit 1 | |
else | |
exit 0 | |
fi | |
;; | |
rivafb_sanity_check) | |
# | |
# Check if the kernel was compiled with rivafb support. If so, then | |
# exit, since the driver no longer works with rivafb. | |
# | |
RET=1 | |
VERBOSE=$7 | |
OLD_FILE="linux/autoconf.h" | |
NEW_FILE="generated/autoconf.h" | |
if [ -f $HEADERS/$NEW_FILE -o -f $OUTPUT/include/$NEW_FILE ]; then | |
FILE=$NEW_FILE | |
fi | |
if [ -f $HEADERS/$OLD_FILE -o -f $OUTPUT/include/$OLD_FILE ]; then | |
FILE=$OLD_FILE | |
fi | |
if [ -n "$FILE" ]; then | |
# | |
# We are looking at a configured source tree; verify | |
# that its configuration doesn't include rivafb using | |
# a compile check. | |
# | |
rm -f conftest.h | |
test_headers | |
echo "$CONFTEST_PREAMBLE | |
#ifdef CONFIG_FB_RIVA | |
#error CONFIG_FB_RIVA defined! | |
#endif | |
" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
if [ -f conftest$$.o ]; then | |
RET=0 | |
fi | |
rm -f conftest$$.c conftest$$.o | |
rm -f conftest.h | |
else | |
CONFIG=$HEADERS/../.config | |
if [ -f $CONFIG ]; then | |
if [ -z "$(grep "^CONFIG_FB_RIVA=y" $CONFIG)" ]; then | |
RET=0 | |
fi | |
fi | |
fi | |
if [ "$RET" != "0" ]; then | |
echo "Your kernel was configured to include rivafb support!"; | |
echo ""; | |
echo "The rivafb driver conflicts with the NVIDIA driver, please"; | |
echo "reconfigure your kernel and *disable* rivafb support, then"; | |
echo "try installing the NVIDIA kernel module again."; | |
echo ""; | |
if [ "$VERBOSE" = "full_output" ]; then | |
echo "*** Failed rivafb sanity check. Bailing out! ***"; | |
echo ""; | |
fi | |
exit 1 | |
else | |
exit 0 | |
fi | |
;; | |
nvidiafb_sanity_check) | |
# | |
# Check if the kernel was compiled with nvidiafb support. If so, then | |
# exit, since the driver doesn't work with nvidiafb. | |
# | |
RET=1 | |
VERBOSE=$7 | |
OLD_FILE="linux/autoconf.h" | |
NEW_FILE="generated/autoconf.h" | |
if [ -f $HEADERS/$NEW_FILE -o -f $OUTPUT/include/$NEW_FILE ]; then | |
FILE=$NEW_FILE | |
fi | |
if [ -f $HEADERS/$OLD_FILE -o -f $OUTPUT/include/$OLD_FILE ]; then | |
FILE=$OLD_FILE | |
fi | |
if [ -n "$FILE" ]; then | |
# | |
# We are looking at a configured source tree; verify | |
# that its configuration doesn't include nvidiafb using | |
# a compile check. | |
# | |
rm -f conftest.h | |
test_headers | |
echo "$CONFTEST_PREAMBLE | |
#ifdef CONFIG_FB_NVIDIA | |
#error CONFIG_FB_NVIDIA defined! | |
#endif | |
" > conftest$$.c | |
$CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 | |
if [ -f conftest$$.o ]; then | |
RET=0 | |
fi | |
rm -f conftest$$.c conftest$$.o | |
rm -f conftest.h | |
else | |
CONFIG=$HEADERS/../.config | |
if [ -f $CONFIG ]; then | |
if [ -z "$(grep "^CONFIG_FB_NVIDIA=y" $CONFIG)" ]; then | |
RET=0 | |
fi | |
fi | |
fi | |
if [ "$RET" != "0" ]; then | |
echo "Your kernel was configured to include nvidiafb support!"; | |
echo ""; | |
echo "The nvidiafb driver conflicts with the NVIDIA driver, please"; | |
echo "reconfigure your kernel and *disable* nvidiafb support, then"; | |
echo "try installing the NVIDIA kernel module again."; | |
echo ""; | |
if [ "$VERBOSE" = "full_output" ]; then | |
echo "*** Failed nvidiafb sanity check. Bailing out! ***"; | |
echo ""; | |
fi | |
exit 1 | |
else | |
exit 0 | |
fi | |
;; | |
xen_sanity_check) | |
# | |
# Check if the target kernel is a Xen kernel. If so, then exit, since | |
# the driver doesn't currently work with Xen. | |
# | |
VERBOSE=$7 | |
if [ -n "$IGNORE_XEN_PRESENCE" ]; then | |
exit 0 | |
fi | |
if [ "$XEN_PRESENT" != "0" ]; then | |
echo "The kernel you are installing for is a Xen kernel!"; | |
echo ""; | |
echo "The NVIDIA driver does not currently work on Xen kernels. If "; | |
echo "you are using a stock distribution kernel, please install "; | |
echo "a variant of this kernel without Xen support; if this is a "; | |
echo "custom kernel, please install a standard Linux kernel. Then "; | |
echo "try installing the NVIDIA kernel module again."; | |
echo ""; | |
if [ "$VERBOSE" = "full_output" ]; then | |
echo "*** Failed Xen sanity check. Bailing out! ***"; | |
echo ""; | |
fi | |
exit 1 | |
else | |
exit 0 | |
fi | |
;; | |
patch_check) | |
# | |
# Check for any "official" patches that may have been applied and | |
# construct a description table for reporting purposes. | |
# | |
PATCHES="" | |
for PATCH in patch-*.h; do | |
if [ -f $PATCH ]; then | |
echo "#include \"$PATCH\"" >> patches.h | |
PATCHES="$PATCHES "`echo $PATCH | sed -s 's/patch-\(.*\)\.h/\1/'` | |
fi | |
done | |
echo "static struct { | |
const char *short_description; | |
const char *description; | |
} __nv_patches[] = {" >> patches.h | |
for i in $PATCHES; do | |
echo "{ \"$i\", NV_PATCH_${i}_DESCRIPTION }," >> patches.h | |
done | |
echo "{ NULL, NULL } };" >> patches.h | |
exit 0 | |
;; | |
compile_tests) | |
# | |
# Run a series of compile tests to determine the set of interfaces | |
# and features available in the target kernel. | |
# | |
shift 5 | |
rm -f conftest.h | |
test_headers | |
for i in $*; do compile_test $i; done | |
if [ -n "$SHOW_COMPILE_TEST_RESULTS" -a -f conftest.h ]; then | |
cat conftest.h | |
fi | |
exit 0 | |
;; | |
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DKMS make.log for nvidia-current-304.64 for kernel 3.7.1-030701-generic (x86_64) | |
Sun Feb 3 17:05:47 CET 2013 | |
NVIDIA: calling KBUILD... | |
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ | |
echo >&2; \ | |
echo >&2 " ERROR: Kernel configuration is invalid."; \ | |
echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\ | |
echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ | |
echo >&2 ; \ | |
/bin/false) | |
mkdir -p /var/lib/dkms/nvidia-current/304.64/build/.tmp_versions ; rm -f /var/lib/dkms/nvidia-current/304.64/build/.tmp_versions/* | |
make -f scripts/Makefile.build obj=/var/lib/dkms/nvidia-current/304.64/build | |
cc -Wp,-MD,/var/lib/dkms/nvidia-current/304.64/build/.nv.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.7/include -I/usr/src/linux-headers-3.7.1-030701-generic/arch/x86/include -Iarch/x86/include/generated -Iinclude -I/usr/src/linux-headers-3.7.1-030701-generic/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/linux-headers-3.7.1-030701-generic/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.7.1-030701-generic/include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -fstack-protector -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I/var/lib/dkms/nvidia-current/304.64/build -Wall -MD -Wsign-compare -Wno-cast-qual -Wno-error -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"304.64\" -Wno-unused-function -Wuninitialized -mno-red-zone -mcmodel=kernel -UDEBUG -U_DEBUG -DNDEBUG -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(nv)" -D"KBUILD_MODNAME=KBUILD_STR(nvidia)" -c -o /var/lib/dkms/nvidia-current/304.64/build/.tmp_nv.o /var/lib/dkms/nvidia-current/304.64/build/nv.c | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:15:0, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:8:2: error: #error remap_page_range() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:10:2: error: #error vmap() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:11:2: error: #error agp_backend_acquire() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:27:2: error: #error kmem_cache_create() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:28:2: error: #error on_each_cpu() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:29:2: error: #error smp_call_function() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:36:2: error: #error INIT_WORK() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:37:2: error: #error acpi_walk_namespace() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:38:2: error: #error acpi_os_wait_events_complete() conftest failed! | |
/var/lib/dkms/nvidia-current/304.64/build/conftest.h:42:2: error: #error pci_dma_mapping_error() conftest failed! | |
In file included from include/linux/kernel.h:10:0, | |
from include/linux/sched.h:15, | |
from include/linux/utsname.h:5, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:40, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
include/linux/bitops.h: In function ‘hweight_long’: | |
include/linux/bitops.h:66:41: warning: signed and unsigned type in conditional expression [-Wsign-compare] | |
In file included from /usr/src/linux-headers-3.7.1-030701-generic/arch/x86/include/asm/uaccess.h:594:0, | |
from include/linux/poll.h:11, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:99, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
/usr/src/linux-headers-3.7.1-030701-generic/arch/x86/include/asm/uaccess_64.h: In function ‘copy_from_user’: | |
/usr/src/linux-headers-3.7.1-030701-generic/arch/x86/include/asm/uaccess_64.h:62:6: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13:0: | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h: At top level: | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:135:2: error: #error "struct file_operations compile test likely failed!" | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13:0: | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:294:2: error: #error "NV_PCI_DMA_MAPPING_ERROR() undefined!" | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:299:4: warning: "NV_ACPI_WALK_NAMESPACE_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:301:8: warning: "NV_ACPI_WALK_NAMESPACE_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:307:2: error: #error "NV_ACPI_WALK_NAMESPACE_ARGUMENT_COUNT value unrecognized!" | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:313:4: warning: "NV_ACPI_OS_WAIT_EVENTS_COMPLETE_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:316:8: warning: "NV_ACPI_OS_WAIT_EVENTS_COMPLETE_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:815:2: error: #error "NV_KMEM_CACHE_CREATE() undefined (kmem_cache_create() unavailable)!" | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:874:2: error: #error "NV_VMAP() undefined (vmap() unavailable)!" | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:946:2: error: #error "NV_SMP_CALL_FUNCTION() undefined (smp_call_function() unavailable)!" | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:966:2: error: #error "NV_ON_EACH_CPU() undefined (on_each_cpu() unavailable)!" | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h: In function ‘nv_execute_on_all_cpus’: | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:984:5: error: implicit declaration of function ‘NV_ON_EACH_CPU’ [-Werror=implicit-function-declaration] | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h: At top level: | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:1243:13: error: conflicting types for ‘pm_message_t’ | |
In file included from /usr/src/linux-headers-3.7.1-030701-generic/arch/x86/include/asm/apic.h:5:0, | |
from /usr/src/linux-headers-3.7.1-030701-generic/arch/x86/include/asm/smp.h:13, | |
from include/linux/smp.h:38, | |
from include/linux/sched.h:30, | |
from include/linux/utsname.h:5, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:40, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
include/linux/pm.h:52:3: note: previous declaration of ‘pm_message_t’ was here | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13:0: | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:1541:6: warning: "NV_INIT_WORK_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:1551:8: warning: "NV_INIT_WORK_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:1561:2: error: #error "NV_INIT_WORK_ARGUMENT_COUNT value unrecognized!" | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:1763:0, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
/var/lib/dkms/nvidia-current/304.64/build/nv-proto.h:25:29: warning: "NV_INIT_WORK_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:368:5: warning: initialization from incompatible pointer type [enabled by default] | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:368:5: warning: (near initialization for ‘nv_pci_driver.suspend’) [enabled by default] | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c: In function ‘nvidia_init_module’: | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:869:5: error: implicit declaration of function ‘NV_KMEM_CACHE_CREATE’ [-Werror=implicit-function-declaration] | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:869:58: error: expected expression before ‘nv_stack_t’ | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:879:9: error: implicit declaration of function ‘NV_KMEM_CACHE_DESTROY’ [-Werror=implicit-function-declaration] | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:984:54: error: expected expression before ‘nv_pte_t’ | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:993:13: error: expected expression before ‘nvidia_p2p_page_t’ | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c: In function ‘nv_kern_open’: | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:1535:30: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type [enabled by default] | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:112:0, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
include/linux/interrupt.h:130:1: note: expected ‘irq_handler_t’ but argument is of type ‘enum irqreturn_t (*)(int, void *, struct pt_regs *)’ | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:1539:17: error: implicit declaration of function ‘NV_TASKQUEUE_INIT’ [-Werror=implicit-function-declaration] | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:1551:25: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type [enabled by default] | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:112:0, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
include/linux/interrupt.h:130:1: note: expected ‘irq_handler_t’ but argument is of type ‘enum irqreturn_t (*)(int, void *, struct pt_regs *)’ | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c: In function ‘nv_agp_init’: | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:2911:6: warning: "NV_AGP_BACKEND_ACQUIRE_ARGUMENT_COUNT" is not defined [-Wundef] | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:2928:9: error: too few arguments to function ‘agp_backend_acquire’ | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:249:0, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
include/linux/agp_backend.h:106:32: note: declared here | |
/var/lib/dkms/nvidia-current/304.64/build/nv.c:2930:13: error: too few arguments to function ‘agp_backend_release’ | |
In file included from /var/lib/dkms/nvidia-current/304.64/build/nv-linux.h:249:0, | |
from /var/lib/dkms/nvidia-current/304.64/build/nv.c:13: | |
include/linux/agp_backend.h:107:13: note: declared here | |
cc1: some warnings being treated as errors | |
make[3]: *** [/var/lib/dkms/nvidia-current/304.64/build/nv.o] Error 1 | |
make[2]: *** [_module_/var/lib/dkms/nvidia-current/304.64/build] Error 2 | |
NVIDIA: left KBUILD. | |
nvidia.ko failed to build! | |
make[1]: *** [module] Error 1 | |
make: *** [module] Error 2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment