diff options
-rw-r--r-- | linux-core/Makefile.kernel | 43 | ||||
-rw-r--r-- | linux/Makefile.kernel | 43 | ||||
-rw-r--r-- | linux/Makefile.linux | 493 | ||||
-rw-r--r-- | linux/picker.c | 30 |
4 files changed, 322 insertions, 287 deletions
diff --git a/linux-core/Makefile.kernel b/linux-core/Makefile.kernel index 7e659dfd..5f79e430 100644 --- a/linux-core/Makefile.kernel +++ b/linux-core/Makefile.kernel @@ -1,19 +1,41 @@ # # Makefile for the drm device driver. This driver provides support for the # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. - -O_TARGET := drm.o -list-multi := gamma.o tdfx.o r128.o mga.o i810.o i830.o radeon.o ffb.o +# +# Based on David Woodhouse's mtd build. +# +# $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.kernel,v 1.17 2003/04/12 17:18:17 dawes Exp $ +# gamma-objs := gamma_drv.o gamma_dma.o tdfx-objs := tdfx_drv.o -r128-objs := r128_drv.o r128_cce.o r128_irq.o r128_state.o -mga-objs := mga_drv.o mga_dma.o mga_irq.o mga_state.o mga_warp.o +r128-objs := r128_drv.o r128_cce.o r128_state.o r128_irq.o +mga-objs := mga_drv.o mga_dma.o mga_state.o mga_warp.o mga_irq.o i810-objs := i810_drv.o i810_dma.o i830-objs := i830_drv.o i830_dma.o i830_irq.o -radeon-objs := radeon_drv.o radeon_cp.o radeon_irq.o radeon_mem.o radeon_state.o +radeon-objs := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o radeon_irq.o +sis-objs := sis_drv.o sis_ds.o sis_mm.o ffb-objs := ffb_drv.o ffb_context.o +# Kernel version checks + +BELOW25 := $(shell if [ $(PATCHLEVEL) -lt 5 ]; then echo y; fi) + +# There were major build changes starting with 2.5.52 +ifneq ($(BELOW25),y) +BELOW2552 := $(shell if [ $(SUBLEVEL) -lt 52 ]; then echo y; fi) +else +BELOW2552 := y +endif + +ifeq ($(BELOW25),y) +O_TARGET := drm.o +list-multi := gamma.o tdfx.o r128.o mga.o i810.o i830.o ffb.o radeon.o +obj-m := +obj-n := +obj- := +endif + obj-$(CONFIG_DRM_GAMMA) += gamma.o obj-$(CONFIG_DRM_TDFX) += tdfx.o obj-$(CONFIG_DRM_R128) += r128.o @@ -21,10 +43,14 @@ obj-$(CONFIG_DRM_RADEON)+= radeon.o obj-$(CONFIG_DRM_MGA) += mga.o obj-$(CONFIG_DRM_I810) += i810.o obj-$(CONFIG_DRM_I830) += i830.o +obj-$(CONFIG_DRM_SIS) += sis.o obj-$(CONFIG_DRM_FFB) += ffb.o +ifeq ($(BELOW2552),y) include $(TOPDIR)/Rules.make +endif +ifeq ($(BELOW25),y) gamma.o: $(gamma-objs) $(lib) $(LD) -r -o $@ $(gamma-objs) $(lib) @@ -46,5 +72,10 @@ r128.o: $(r128-objs) $(lib) radeon.o: $(radeon-objs) $(lib) $(LD) -r -o $@ $(radeon-objs) $(lib) +sis.o: $(sis-objs) $(lib) + $(LD) -r -o $@ $(sis-objs) $(lib) + ffb.o: $(ffb-objs) $(lib) $(LD) -r -o $@ $(ffb-objs) $(lib) +endif + diff --git a/linux/Makefile.kernel b/linux/Makefile.kernel index 7e659dfd..5f79e430 100644 --- a/linux/Makefile.kernel +++ b/linux/Makefile.kernel @@ -1,19 +1,41 @@ # # Makefile for the drm device driver. This driver provides support for the # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. - -O_TARGET := drm.o -list-multi := gamma.o tdfx.o r128.o mga.o i810.o i830.o radeon.o ffb.o +# +# Based on David Woodhouse's mtd build. +# +# $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.kernel,v 1.17 2003/04/12 17:18:17 dawes Exp $ +# gamma-objs := gamma_drv.o gamma_dma.o tdfx-objs := tdfx_drv.o -r128-objs := r128_drv.o r128_cce.o r128_irq.o r128_state.o -mga-objs := mga_drv.o mga_dma.o mga_irq.o mga_state.o mga_warp.o +r128-objs := r128_drv.o r128_cce.o r128_state.o r128_irq.o +mga-objs := mga_drv.o mga_dma.o mga_state.o mga_warp.o mga_irq.o i810-objs := i810_drv.o i810_dma.o i830-objs := i830_drv.o i830_dma.o i830_irq.o -radeon-objs := radeon_drv.o radeon_cp.o radeon_irq.o radeon_mem.o radeon_state.o +radeon-objs := radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o radeon_irq.o +sis-objs := sis_drv.o sis_ds.o sis_mm.o ffb-objs := ffb_drv.o ffb_context.o +# Kernel version checks + +BELOW25 := $(shell if [ $(PATCHLEVEL) -lt 5 ]; then echo y; fi) + +# There were major build changes starting with 2.5.52 +ifneq ($(BELOW25),y) +BELOW2552 := $(shell if [ $(SUBLEVEL) -lt 52 ]; then echo y; fi) +else +BELOW2552 := y +endif + +ifeq ($(BELOW25),y) +O_TARGET := drm.o +list-multi := gamma.o tdfx.o r128.o mga.o i810.o i830.o ffb.o radeon.o +obj-m := +obj-n := +obj- := +endif + obj-$(CONFIG_DRM_GAMMA) += gamma.o obj-$(CONFIG_DRM_TDFX) += tdfx.o obj-$(CONFIG_DRM_R128) += r128.o @@ -21,10 +43,14 @@ obj-$(CONFIG_DRM_RADEON)+= radeon.o obj-$(CONFIG_DRM_MGA) += mga.o obj-$(CONFIG_DRM_I810) += i810.o obj-$(CONFIG_DRM_I830) += i830.o +obj-$(CONFIG_DRM_SIS) += sis.o obj-$(CONFIG_DRM_FFB) += ffb.o +ifeq ($(BELOW2552),y) include $(TOPDIR)/Rules.make +endif +ifeq ($(BELOW25),y) gamma.o: $(gamma-objs) $(lib) $(LD) -r -o $@ $(gamma-objs) $(lib) @@ -46,5 +72,10 @@ r128.o: $(r128-objs) $(lib) radeon.o: $(radeon-objs) $(lib) $(LD) -r -o $@ $(radeon-objs) $(lib) +sis.o: $(sis-objs) $(lib) + $(LD) -r -o $@ $(sis-objs) $(lib) + ffb.o: $(ffb-objs) $(lib) $(LD) -r -o $@ $(ffb-objs) $(lib) +endif + diff --git a/linux/Makefile.linux b/linux/Makefile.linux index 63bec30d..1957f5c2 100644 --- a/linux/Makefile.linux +++ b/linux/Makefile.linux @@ -1,313 +1,316 @@ # Makefile -- For the Direct Rendering Manager module (drm) -# Created: Mon Jan 4 09:26:53 1999 by faith@precisioninsight.com # -# Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. -# Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. -# All rights reserved. +# Based on David Woodhouse's mtd build. # -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: +# Modified to handle the DRM requirements and builds on a wider range of +# platforms in a flexible way by David Dawes. It's not clear, however, +# that this approach is simpler than the old one. # -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. +# The purpose of this Makefile.linux file is to handle setting up everything +# needed for an out-of-kernel source build. Makefile.kernel contains +# everything required for in-kernel source builds. It is included into +# this file, so none of that should be duplicated here. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. +# $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux,v 1.34 2003/04/16 15:42:19 dawes Exp $ # + # -# ***** NOTE NOTE NOTE NOTE NOTE ***** -# To override the automatic Linux source tree determination, pass the -# pathname for the kernel that you want to compile on the command line, -# like this: -# make TREE=/usr/my-kernel-tree/include +# By default, the build is done against the running linux kernel source. +# To build against a different kernel source tree, set LINUXDIR: +# +# make -f Makefile.linux LINUXDIR=/path/to/kernel/source + +# +# To build only some modules, either set DRM_MODULES to the list of modules, +# or specify the modules as targets: +# +# make -f Makefile.linux r128.o radeon.o +# +# or: +# +# make -f Makefile.linux DRM_MODULES="r128 radeon" # SHELL=/bin/sh .SUFFIXES: -# *** Setup +ifndef LINUXDIR +RUNNING_REL := $(shell uname -r) -# **** End of SMP/MODVERSIONS detection +LINUXDIR := /lib/modules/$(RUNNING_REL)/build +endif -MODS = gamma.o tdfx.o r128.o radeon.o -LIBS = +MACHINE := $(shell uname -m) -DRMTEMPLATES = drm_auth.h drm_bufs.h drm_context.h drm_dma.h drm_drawable.h \ - drm_drv.h drm_fops.h drm_init.h drm_ioctl.h drm_lists.h \ - drm_lock.h drm_memory.h drm_proc.h drm_stub.h drm_vm.h -DRMSHARED = drm_sarea.h -DRMHEADERS = drm.h drmP.h $(DRMSHARED) +# Modules for all architectures +MODULE_LIST := gamma.o tdfx.o r128.o radeon.o mga.o #sis.o -GAMMAOBJS = gamma_drv.o gamma_dma.o -GAMMAHEADERS = gamma_drv.h $(DRMHEADERS) $(DRMTEMPLATES) +# Modules only for ix86 architectures +ifneq (,$(findstring 86,$(MACHINE))) +MODULE_LIST += i830.o i810.o +endif -TDFXOBJS = tdfx_drv.o -TDFXHEADERS = tdfx.h $(DRMHEADERS) $(DRMTEMPLATES) +# Add ffb.o for sparc?? -R128OBJS = r128_drv.o r128_cce.o r128_state.o r128_irq.o -R128HEADERS = r128.h r128_drv.h r128_drm.h $(DRMHEADERS) $(DRMTEMPLATES) -R128SHARED = r128.h r128_drv.h r128_drm.h r128_cce.c r128_state.c r128_irq.c +DRM_MODULES ?= $(MODULE_LIST) -RADEONOBJS = radeon_drv.o radeon_cp.o radeon_state.o radeon_mem.o \ - radeon_irq.o -RADEONHEADERS = radeon.h radeon_drv.h radeon_drm.h $(DRMHEADERS) \ +# These definitions are for handling dependencies in the out of kernel build. + +DRMTEMPLATES = drm_auth.h drm_bufs.h drm_context.h drm_dma.h drm_drawable.h \ + drm_drv.h drm_fops.h drm_init.h drm_ioctl.h drm_lists.h \ + drm_lock.h drm_memory.h drm_proc.h drm_stub.h drm_vm.h + +DRMSHARED = drm_sarea.h +DRMHEADERS = drm.h drmP.h $(DRMSHARED) + +GAMMAHEADERS = gamma_drv.h $(DRMHEADERS) $(DRMTEMPLATES) +TDFXHEADERS = tdfx.h $(DRMHEADERS) $(DRMTEMPLATES) +R128HEADERS = r128.h r128_drv.h r128_drm.h $(DRMHEADERS) $(DRMTEMPLATES) +R128SHARED = r128.h r128_drv.h r128_drm.h r128_cce.c r128_state.c r128_irq.c +RADEONHEADERS = radeon.h radeon_drv.h radeon_drm.h $(DRMHEADERS) \ + $(DRMTEMPLATES) +RADEONSHARED = radeon.h radeon_drv.h radeon_drm.h radeon_cp.c radeon_irq.c \ + radeon_mem.c radeon_state.c +MGAHEADERS = mga.h mga_drv.h mga_drm.h mga_ucode.h $(DRMHEADERS) \ $(DRMTEMPLATES) -RADEONSHARED = radeon.h radeon_drv.h radeon_drm.h radeon_cp.c radeon_irq.c \ - radeon_mem.c radeon_state.c - -INC = /usr/include - -CFLAGS = -O2 $(WARNINGS) -WARNINGS = -Wall -Wwrite-strings -Wpointer-arith -Wcast-align \ - -Wstrict-prototypes -Wnested-externs \ - -Wpointer-arith -# -Wshadow -Winline -- make output too noisy -MODCFLAGS = $(CFLAGS) -D__KERNEL__ -DMODULE -fomit-frame-pointer -fno-strict-aliasing -PRGCFLAGS = $(CFLAGS) -g -ansi -pedantic -DPOSIX_C_SOURCE=199309L \ - -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE \ - -I../../../../../../include -I../../../../../../../../include \ - -I../../../../../../../../programs/Xserver/hw/xfree86/common \ - -I. -I../../.. -I../../../../../../../../lib/X11 -PRGLIBS = - -# **** Start of SMP/MODVERSIONS detection - -# First, locate correct tree for this kernel version. If we find a -# matching tree, we assume that we can rely on that tree's autoconf.h. -# This may not be correct, but it is the best assumption we can make. - -VERSION := $(shell uname -r) -# For Red Hat... -RHVERS := $(shell uname -r)custom - -A := /lib/modules/$(VERSION)/build/include -B := /usr/src/linux-$(VERSION)/include -C := /usr/src/linux/include -D := /usr/include - -V := $(shell gcc -E -nostdinc -I$A picker.c 2>/dev/null \ - | grep -s 'RELEASE = ' | cut -d' ' -f3) -ifeq ($(V),"$(VERSION)") -TREE := $A -else -ifeq ($(V),"$(RHVERS)") - TREE := $A -else - V := $(shell gcc -E -nostdinc -I$B picker.c 2>/dev/null \ - | grep -s 'RELEASE = ' | cut -d' ' -f3) -ifeq ($(V),"$(VERSION)") - TREE := $B -else -ifeq ($(V),"$(RHVERS)") - TREE := $B -else - V := $(shell gcc -E -nostdinc -I$C picker.c 2>/dev/null \ - | grep -s 'RELEASE = ' | cut -d' ' -f3) -ifeq ($(V),"$(VERSION)") - TREE := $C -else - V := $(shell gcc -E -nostdinc -I$D picker.c 2>/dev/null \ - | grep -s 'RELEASE = ' | cut -d' ' -f3) -ifeq ($(V),"$(VERSION)") - TREE := $D -else - TREE := 0 -endif +MGASHARED = mga.h mga_dma.c mga_drm.h mga_drv.h mga_irq.c mga_state.c \ + mga_ucode.h mga_warp.c +I810HEADERS = i810.h i810_drv.h i810_drm.h $(DRMHEADERS) $(DRMTEMPLATES) +I830HEADERS = i830.h i830_drv.h i830_drm.h $(DRMHEADERS) $(DRMTEMPLATES) +SISHEADERS= sis_drv.h sis_drm.h $(DRMHEADERS) + +SHAREDSRC = $(DRMSHARED) $(MGASHARED) $(R128SHARED) $(RADEONSHARED) + +CLEANFILES = *.o *.ko $(PROGS) .depend .*.flags .*.d .*.cmd + +# VERSION is not defined from the initial invocation. It is defined when +# this Makefile is invoked from the kernel's root Makefile. + +ifndef VERSION + +ifdef RUNNING_REL + +# SuSE has the version.h and autoconf.h headers for the current kernel +# in /boot as /boot/vmlinuz.version.h and /boot/vmlinuz.autoconf.h. +# Check these first to see if they match the running kernel. + +BOOTVERSION_PREFIX = /boot/vmlinuz. + +V := $(shell if [ -f $(BOOTVERSION_PREFIX)version.h ]; then \ + grep UTS_RELEASE $(BOOTVERSION_PREFIX)version.h | \ + cut -d' ' -f3; fi) + +ifeq ($(V),"$(RUNNING_REL)") +HEADERFROMBOOT := 1 +GETCONFIG := MAKEFILES=$(shell pwd)/.config +HAVECONFIG := y endif + +# On Red Hat we need to check if there is a .config file in the kernel +# source directory. If there isn't, we need to check if there's a +# matching file in the configs subdirectory. + +ifneq ($(HAVECONFIG),y) +HAVECONFIG := $(shell if [ -e $(LINUXDIR)/.config ]; then echo y; fi) endif + +ifneq ($(HAVECONFIG),y) +REL_BASE := $(shell echo $(RUNNING_REL) | sed 's/-.*//') +REL_TYPE := $(shell echo $(RUNNING_REL) | sed 's/[0-9.-]//g') +ifeq ($(REL_TYPE),) +RHCONFIG := configs/kernel-$(REL_BASE)-$(MACHINE).config +else +RHCONFIG := configs/kernel-$(REL_BASE)-$(MACHINE)-$(REL_TYPE).config endif +HAVECONFIG := $(shell if [ -e $(LINUXDIR)/$(RHCONFIG) ]; then echo y; fi) +ifneq ($(HAVECONFIG),y) +RHCONFIG := endif endif -ifeq ($(TREE),0) -all:; @echo Error: Could not locate kernel tree in $A $B $C $D -else -SMP := $(shell gcc -E -nostdinc -I$(TREE) picker.c 2>/dev/null \ - | grep -s 'SMP = ' | cut -d' ' -f3) -MODULES := $(shell gcc -E -nostdinc -I$(TREE) picker.c 2>/dev/null \ - | grep -s 'MODULES = ' | cut -d' ' -f3) -MODVERSIONS := $(shell gcc -E -nostdinc -I$(TREE) picker.c 2>/dev/null \ - | grep -s 'MODVERSIONS = ' | cut -d' ' -f3) -AGP := $(shell gcc -E -nostdinc -I$(TREE) picker.c 2>/dev/null \ - | grep -s 'AGP = ' | cut -d' ' -f3) -MACHINE := $(shell echo `uname -m`) -# Red Hat's kernels have 4 args to do_munmap() -DOMUNMAP := $(shell grep do_munmap $(TREE)/linux/mm.h | grep -c acct) -# Red Hat 9 kernel has 5 args to remap_page_range() -RPR := $(shell grep remap_page_range $(TREE)/linux/mm.h | grep -c vma) -ifeq ($(AGP),0) -AGP := $(shell gcc -E -nostdinc -I$(TREE) picker.c 2>/dev/null \ - | grep -s 'AGP_MODULE = ' | cut -d' ' -f3) +ifneq ($(HAVECONFIG),y) +$(error Cannot find a kernel config file) endif -ifeq ($(DOMUNMAP),1) -MODCFLAGS += -DDO_MUNMAP_4_ARGS -endif -ifeq ($(RPR),1) -MODCFLAGS += -DREMAP_PAGE_RANGE_5_ARGS endif -ifeq ($(AGP),1) -MODCFLAGS += -DCONFIG_AGP -DCONFIG_AGP_MODULE -DRMTEMPLATES += drm_agpsupport.h -MODS += mga.o -ifeq ($(MACHINE),i386) -MODS += i810.o -MODS += i830.o -endif -ifeq ($(MACHINE),i686) -MODS += i810.o -MODS += i830.o + +CLEANCONFIG := $(shell if cmp -s $(LINUXDIR)/.config .config; then echo y; fi) +ifeq ($(CLEANCONFIG),y) +CLEANFILES += $(LINUXDIR)/.config .config $(LINUXDIR)/tmp_include_depends endif -MGAOBJS = mga_drv.o mga_dma.o mga_state.o mga_warp.o mga_irq.o -MGAHEADERS = mga.h mga_drv.h mga_drm.h $(DRMHEADERS) $(DRMTEMPLATES) -MGASHARED = mga.h mga_dma.c mga_drm.h mga_drv.h mga_state.c \ - mga_ucode.h mga_warp.c +# The Makefile renaming hack is required because the standard kernel build, +# especially 2.5.52 and later, explicitly references the Makefile by the +# name "Makefile". For builds prior to 2.5.52, the name GNUmakefile could +# have been used. -I810OBJS = i810_drv.o i810_dma.o -I810HEADERS = i810.h i810_drv.h i810_drm.h $(DRMHEADERS) $(DRMTEMPLATES) +all: modules -I830OBJS = i830_drv.o i830_dma.o i830_irq.o -I830HEADERS = i830.h i830_drv.h i830_drm.h $(DRMHEADERS) $(DRMTEMPLATES) +modules: includes + @if test -f Makefile && cmp -s Makefile Makefile.linux; then : ; \ + else \ + if [ -e Makefile ]; then \ + (set -x; mv -f Makefile Makefile._xx_); fi; \ + (set -x; ln -s Makefile.linux Makefile); fi + make -C $(LINUXDIR) $(GETCONFIG) SUBDIRS=`pwd` DRMSRCDIR=`pwd` modules + @if cmp -s Makefile Makefile.linux; then \ + (set -x; rm -f Makefile); \ + if [ -e Makefile._xx_ ]; then \ + (set -x; mv -f Makefile._xx_ Makefile); fi; fi -endif +ifeq ($(HEADERFROMBOOT),1) -ifeq ($(MACHINE),alpha) -MODCFLAGS+= -ffixed-8 -mno-fp-regs -mcpu=ev56 -Wa,-mev6 -endif -ifeq ($(MACHINE),x86_64) -MODCFLAGS+= -mcmodel=kernel -endif +BOOTHEADERS = version.h autoconf.h +BOOTCONFIG = .config +CLEANFILES += $(BOOTHEADERS) $(BOOTCONFIG) -MODS += sis.o +includes:: $(BOOTHEADERS) $(BOOTCONFIG) -SISOBJS= sis_drv.o sis_mm.o sis_ds.o -SISHEADERS= sis_drv.h sis_drm.h $(DRMHEADERS) -MODCFLAGS += -DCONFIG_DRM_SIS +version.h: $(BOOTVERSION_PREFIX)version.h + rm -f $@ + ln -s $< $@ -all::;@echo === KERNEL HEADERS IN $(TREE) -all::;@echo === SMP=${SMP} MODULES=${MODULES} MODVERSIONS=${MODVERSIONS} AGP=${AGP} -all::;@echo === Compiling for machine $(MACHINE) -all::;@echo === WARNING -all::;@echo === WARNING Use 2.4.x kernels ONLY ! -all::;@echo === WARNING +autoconf.h: $(BOOTVERSION_PREFIX)autoconf.h + rm -f $@ + ln -s $< $@ -ifeq ($(MODULES),0) -all::;@echo -all::;@echo "*** Kernel modules must be configured. Build aborted." -all::;@echo -else -all:: $(LIBS) $(MODS) $(PROGS) +.config: $(BOOTVERSION_PREFIX)config + rm -f $@ + ln -s $< $@ endif -endif +# This prepares an unused Red Hat kernel tree for the build. +ifneq ($(RHCONFIG),) +includes:: $(LINUXDIR)/.config $(LINUXDIR)/tmp_include_depends .config -# **** End of SMP/MODVERSIONS detection +$(LINUXDIR)/.config: $(LINUXDIR)/$(RHCONFIG) + rm -f $@ + ln -s $< $@ -# **** Handle SMP/MODVERSIONS -ifeq ($(SMP),1) -MODCFLAGS += -D__SMP__ -endif -ifeq ($(MODVERSIONS),1) -MODCFLAGS += -DMODVERSIONS -include $(TREE)/linux/modversions.h +.config: $(LINUXDIR)/$(RHCONFIG) + rm -f $@ + ln -s $< $@ + +$(LINUXDIR)/tmp_include_depends: + echo all: > $@ endif -# **** End of configuration +# Make sure that the shared source files are linked into this directory. -# Link in shared headers if needed -SHAREDSRC = $(DRMSHARED) $(MGASHARED) $(R128SHARED) $(RADEONSHARED) -SHAREDDIR = ../../../shared/drm/kernel +SHAREDDIR := ../../../shared/drm/kernel + +HASSHARED := $(shell if [ -d $(SHAREDDIR) ]; then echo y; fi) + +ifeq ($(HASSHARED),y) +includes:: $(SHAREDSRC) $(SHAREDSRC): - @if [ ! -r $@ ]; then (rm -f $@; set -x; ln -s $(SHAREDDIR)/$@ .); fi + @if [ -r $(SHAREDDIR)/$@ ]; then \ + (rm -f $@; set -x; ln -s $(SHAREDDIR)/$@ $@); fi + +CLEANFILES += $(SHAREDSRC) +endif +includes:: linux -dristat: dristat.c - $(CC) $(PRGCFLAGS) $< -o $@ +linux: + rm -f linux + ln -s . linux -DRIsetup: DRIsetup.c - $(CC) $(PRGCFLAGS) $< -o $@ -L/usr/X11R6/lib -lGL -lm ../../../../parser/libxf86config.a ../libdrm.a +clean cleandir: + rm -f $(CLEANFILES) -gamma_drv.o: gamma_drv.c - $(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@ -gamma.o: $(GAMMAOBJS) - $(LD) -r $^ -o $@ +$(MODULE_LIST):: + make -f Makefile.linux DRM_MODULES=$@ modules -tdfx_drv.o: tdfx_drv.c - $(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@ -tdfx.o: $(TDFXOBJS) $(LIBS) - $(LD) -r $^ -o $@ +else + +# Check for kernel versions that we don't support. -sis.o: $(SISOBJS) $(LIBS) - $(LD) -r $^ -o $@ +BELOW24 := $(shell if [ $(VERSION) -lt 2 -o $(PATCHLEVEL) -lt 4 ]; then \ + echo y; fi) -r128_drv.o: r128_drv.c - $(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@ -r128.o: $(R128OBJS) $(LIBS) - $(LD) -r $^ -o $@ +ifeq ($(BELOW24),y) +$(error Only 2.4.x and later kernels are supported \ + ($(VERSION).$(PATCHLEVEL).$(SUBLEVEL))) +endif -radeon_drv.o: radeon_drv.c - $(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@ -radeon.o: $(RADEONOBJS) $(LIBS) - $(LD) -r $^ -o $@ +# This needs to go before all other include paths. +CC += -I$(DRMSRCDIR) -ifeq ($(AGP),1) -mga_drv.o: mga_drv.c - $(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@ -mga.o: $(MGAOBJS) - $(LD) -r $^ -o $@ +# Check for Red Hat's 4-argument do_munmap(). +DOMUNMAP := $(shell grep do_munmap $(LINUXDIR)/include/linux/mm.h | \ + grep -c acct) +# Check for 5-argument remap_page_range() in RH9 kernel, and 2.5.x kernels +RPR := $(shell grep remap_page_range $(LINUXDIR)/include/linux/mm.h | \ + grep -c vma) -i810_drv.o: i810_drv.c - $(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@ -i810.o: $(I810OBJS) $(LIBS) - $(LD) -r $^ -o $@ +ifneq ($(DOMUNMAP),0) +EXTRA_CFLAGS += -DDO_MUNMAP_4_ARGS +endif -i830_drv.o: i830_drv.c - $(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@ -i830.o: $(I830OBJS) $(LIBS) - $(LD) -r $^ -o $@ +ifneq ($(RPR),0) +EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5_ARGS +endif +# Start with all modules turned off. +CONFIG_DRM_GAMMA := n +CONFIG_DRM_TDFX := n +CONFIG_DRM_MGA := n +CONFIG_DRM_I810 := n +CONFIG_DRM_R128 := n +CONFIG_DRM_RADEON := n +CONFIG_DRM_I830 := n +CONFIG_DRM_SIS := n +CONFIG_DRM_FFB := n + +# Enable module builds for the modules requested/supported. + +ifneq (,$(findstring gamma,$(DRM_MODULES))) +CONFIG_DRM_GAMMA := m +endif +ifneq (,$(findstring tdfx,$(DRM_MODULES))) +CONFIG_DRM_TDFX := m endif -.PHONY: ChangeLog -ChangeLog: - @rm -f Changelog - @rcs2log -i 2 -r -l \ - | sed 's,@.*light,,' \ - | sed 's,/cvsroot/.*/drm/kernel/,,g' \ - > ChangeLog - - -# .o files are used for modules -%.o: %.c - $(CC) $(MODCFLAGS) -I$(TREE) -c $< -o $@ - -$(GAMMAOBJS): $(GAMMAHEADERS) -$(TDFXOBJS): $(TDFXHEADERS) -$(R128OBJS): $(R128HEADERS) -$(RADEONOBJS): $(RADEONHEADERS) -ifeq ($(AGP),1) -$(MGAOBJS): $(MGAHEADERS) -$(I810OBJS): $(I810HEADERS) -$(I830OBJS): $(I830HEADERS) +# These require AGP support + +ifdef CONFIG_AGP +ifneq (,$(findstring mga,$(DRM_MODULES))) +CONFIG_DRM_MGA := m +endif +ifneq (,$(findstring i810,$(DRM_MODULES))) +CONFIG_DRM_I810 := m endif +ifneq (,$(findstring r128,$(DRM_MODULES))) +CONFIG_DRM_R128 := m +endif +ifneq (,$(findstring radeon,$(DRM_MODULES))) +CONFIG_DRM_RADEON := m +endif +ifneq (,$(findstring i830,$(DRM_MODULES))) +CONFIG_DRM_I830 := m +endif +ifneq (,$(findstring sis,$(DRM_MODULES))) +CONFIG_DRM_SIS := m +endif +endif + +include $(DRMSRCDIR)/Makefile.kernel -clean cleandir:: - rm -f *.o *.a *~ core - @for i in $(SHAREDSRC); do \ - if [ -L $$i ]; then (set -x; rm -f $$i); fi; \ - done +# Depencencies +$(gamma-objs): $(GAMMAHEADERS) +$(tdfx-objs): $(TDFXHEADERS) +$(r128-objs): $(R128HEADERS) +$(mga-objs): $(MGAHEADERS) +$(i810-objs): $(I810HEADERS) +$(i830-objs): $(I830HEADERS) +$(radeon-objs): $(RADEONHEADERS) +$(sis-objs): $(SISHEADERS) +$(ffb-objs): $(FFBHEADERS) + +endif diff --git a/linux/picker.c b/linux/picker.c deleted file mode 100644 index 6c228dfc..00000000 --- a/linux/picker.c +++ /dev/null @@ -1,30 +0,0 @@ - -#include <linux/config.h> -#include <linux/version.h> - -#ifndef CONFIG_SMP -#define CONFIG_SMP 0 -#endif - -#ifndef CONFIG_MODULES -#define CONFIG_MODULES 0 -#endif - -#ifndef CONFIG_MODVERSIONS -#define CONFIG_MODVERSIONS 0 -#endif - -#ifndef CONFIG_AGP_MODULE -#define CONFIG_AGP_MODULE 0 -#endif - -#ifndef CONFIG_AGP -#define CONFIG_AGP 0 -#endif - -SMP = CONFIG_SMP -MODULES = CONFIG_MODULES -MODVERSIONS = CONFIG_MODVERSIONS -AGP = CONFIG_AGP -AGP_MODULE = CONFIG_AGP_MODULE -RELEASE = UTS_RELEASE |