1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
###############################################################################
# Makefile by Carlo Wood (and others)
# Determine the machine type
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
# Setup machine dependant compiler flags
ifeq ($(ARCH), i386)
CFLAGS ?= -O2 -march=pentium -fomit-frame-pointer -fno-strength-reduce \
-falign-loops=2 -falign-jumps=2 -falign-functions=2
endif
ifeq ($(ARCH), alpha)
CFLAGS ?= -O2 -mno-fp-regs -mcpu=ev4 -ffixed-8 -Wa,-mev6 \
-fomit-frame-pointer -fno-strict-aliasing
endif
KSRC ?= /usr/src/linux
KHEADERS ?= $(KSRC)/include
-include kver.mak
MODULES_DIR = $(DESTDIR)/lib/modules/$(KVERS)
ALL_CFLAGS := -DMODULE -D__KERNEL__ \
-I$(KHEADERS) -I$(KHEADERS)/asm/mach-default \
$(CFLAGS)
ifneq ($(wildcard $(KHEADERS)/linux/utsrelease.h),)
VERSION_HEADER := $(KHEADERS)/linux/utsrelease.h
else
VERSION_HEADER := $(KHEADERS)/linux/version.h
endif
###############################################################################
# You should never need to change anything below.
NAME := 3dfx
all: modules
kver: kver.c
$(CC) -include $(VERSION_HEADER) -x c -o $@ $<
kver.mak: kver
./$^ > $@
# Sanity checks
sanity:
@( \
if [ ! -r $(KHEADERS)/linux ]; then \
echo "Expect readable headers in $(KHEADERS)/linux"; \
exit -1; \
fi; \
if [ ! -r $(KHEADERS)/linux/version.h ]; then \
echo "Missing $(KHEADERS)/linux/version.h"; \
echo "Configure and install the kernel first"; \
exit -1; \
fi; \
if [ ! -e /proc/cpuinfo ]; then \
echo "You need the /proc file system"; \
echo "Reconfigure kernel and say Yes to CONFIG_PROC_FS"; \
exit -1; \
fi; \
)
KVER_MAJOR = $(shell echo "$(KVERS)" | cut -d. -f1 )
KVER_MINOR = $(shell echo "$(KVERS)" | cut -d. -f2 )
KBUILD = $(shell [ "$(KVER_MAJOR)" = 2 ] && [ "$(KVER_MINOR)" -ge 6 ] && echo yes )
help:
echo KVER_MAJOR = $(KVER_MAJOR)
echo KVER_MINOR = $(KVER_MINOR)
echo KBUILD = $(KBUILD)
ifeq ($(KBUILD),yes)
BUILD_TYPE = kbuild
MODULE_TDFX = kbuild/$(NAME).ko
else
BUILD_TYPE = legacy
MODULE_TDFX = $(NAME).o
endif
clean_type = clean_$(BUILD_TYPE)
module_type = module_$(BUILD_TYPE)
###############################################################################
modules: sanity $(module_type)
module_legacy: $(NAME).o
$(NAME).o: 3dfx_driver.c Makefile
$(CC) $(ALL_CFLAGS) -c -o $@ 3dfx_driver.c
module_kbuild:
$(MAKE) -C kbuild
###############################################################################
install: sanity install_modules
@( \
if [ -e $(MODULES_DIR)/modules.dep ]; then \
indep=`grep '$(NAME)/$(MODULE_TDFX):' $(MODULES_DIR)/modules.dep`; \
if [ -z "$$indep" ]; then \
echo "$(MODULES_DIR)/$(NAME)/$(MODULE_TDFX):" >> $(MODULES_DIR)/modules.dep; \
echo "" >> $(MODULES_DIR)/modules.dep; \
fi; \
fi; \
if [ ! -e $(DESTDIR)/dev/.devfsd -a ! -c $(DESTDIR)/dev/$(NAME) ]; then \
mknod $(DESTDIR)/dev/$(NAME) c 107 0; \
chmod go+w $(DESTDIR)/dev/$(NAME); \
fi; \
if [ "$(RPM_INSTALL)" = "1" ]; then \
echo "$(MODULES_DIR)/$(NAME)/$(MODULE_TDFX)"; \
else \
inconf=`grep 'alias char-major-107 $(NAME)' $(DESTDIR)/etc/modules.conf`; \
if [ -z "$$inconf" ]; then \
echo "alias char-major-107 $(NAME)" >> $(DESTDIR)/etc/modules.conf; \
fi; \
fi; \
)
install_modules: modules
mkdir -p $(MODULES_DIR)/$(NAME)
cp $(MODULE_TDFX) $(MODULES_DIR)/$(NAME)/
###############################################################################
# This is for debugging purposes by the developers:
clean: $(clean_type)
rm -f kver.mak kver
clean_legacy:
rm -f *.ko *.o *.mod.* .*.mod.* .*.cmd
clean_kbuild:
$(MAKE) -C kbuild clean
tar:
tar czf ../../SOURCES/Dev3Dfx-2.5.tar.gz 3dfx_driver.c Makefile
debug:
$(MAKE) CFLAGS="-g -Wall -Wstrict-prototypes -DDEBUG"
.PHONY: all sanity modules modules_legacy modules_kbuild
.PHONY: install install_legacy install_kbuild
.PHONY: clean clean_legacy clean_kbuild tar debug
|