diff options
Diffstat (limited to 'linux-2.6/Makefile')
| -rw-r--r-- | linux-2.6/Makefile | 429 | 
1 files changed, 429 insertions, 0 deletions
| diff --git a/linux-2.6/Makefile b/linux-2.6/Makefile new file mode 100644 index 00000000..d39bddda --- /dev/null +++ b/linux-2.6/Makefile @@ -0,0 +1,429 @@ +# Makefile -- For the Direct Rendering Manager module (drm) +# +# Based on David Woodhouse's mtd build. +# +# 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 purpose of this Makefile 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. +# +# $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Makefile.linux,v 1.40 2003/08/17 17:12:25 dawes Exp $ +# + +# +# By default, the build is done against the running linux kernel source. +# To build against a different kernel source tree, set LINUXDIR: +# +#    make 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 r128.o radeon.o +# +# or: +# +#    make DRM_MODULES="r128 radeon" +# + +SHELL=/bin/sh + +.SUFFIXES: + +ifndef LINUXDIR +RUNNING_REL := $(shell uname -r) + +LINUXDIR := $(shell if [ -e /lib/modules/$(RUNNING_REL)/source ]; then \ +		 echo /lib/modules/$(RUNNING_REL)/source; \ +		 else echo /lib/modules/$(RUNNING_REL)/build; fi) +endif + +ifndef O +O := $(LINUXDIR) +endif + +MACHINE := $(shell uname -m) + +# Modules for all architectures +MODULE_LIST := tdfx.o r128.o radeon.o mga.o sis.o savage.o via.o mach64.o + +# Modules only for ix86 architectures +ifneq (,$(findstring 86,$(MACHINE))) +ARCHX86 := 1 +MODULE_LIST += i830.o i810.o i915.o +endif + +ifneq (,$(findstring sparc64,$(MACHINE))) +ARCHSPARC64 := 1 +MODULE_LIST += ffb.o +endif + +DRM_MODULES ?= $(MODULE_LIST) + +# 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_irq.h \ +                drm_lock.h drm_memory.h drm_proc.h drm_stub.h drm_vm.h \ +                drm_sysfs.h drm_core.h + +DRMSHARED =     drm.h drm_sarea.h +DRMHEADERS =    drmP.h $(DRMSHARED) + +L24SHARED =	ati_pcigart.h drm_drawable.h drm_pci.h i810_dma.c i830_irq.c savage_dma.c \ +		Config.in drm_drv.h drmP.h i810_drm.h i915_drv.c savage_drm.h \ +		Doxyfile drm_fops.h drm_proc.h i810_drv.c Kconfig savage_drv.c \ +		drm_agpsupport.h drm_init.h drm_scatter.h i810_drv.h mach64_drv.c \ +		savage_drv.h drm_auth.h drm_ioctl.h drm_stub.h i810.h savage.h \ +		drm_bufs.h drm_irq.h drm_vm.h i830_dma.c drm_compat.h drm_lock.h \ +		ffb_context.c i830_drm.h mga_drv.c sis_drv.c drm_context.h \ +		drm_memory_debug.h ffb_drv.c i830_drv.c r128_drv.c tdfx_drv.c \ +		drm_memory.h ffb_drv.h i830_drv.h radeon_drv.c \ +		drm_dma.h drm_os_linux.h ffb.h i830.h README.drm + +             +TDFXHEADERS =   tdfx.h $(DRMHEADERS) $(DRMTEMPLATES) +TDFXSHARED =    tdfx.h +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) +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) +I915HEADERS =   i915.h i915_drv.h i915_drm.h $(DRMHEADERS) $(DRMTEMPLATES) +I915SHARED  =   i915.h i915_drv.h i915_drm.h i915_irq.c i915_mem.c i915_dma.c +SISHEADERS=     sis.h sis_drv.h sis_drm.h $(DRMHEADERS) +SISSHARED=      sis.h sis_drv.h sis_drm.h sis_ds.c sis_ds.h sis_mm.c +SAVAGEHEADERS=  savage.h savage_drv.h savage_drm.h $(DRMHEADERS) \ +                $(DRMTEMPLATES) +VIAHEADERS	= via_drm.h via_drv.h via.h via_mm.h via_ds.h \ +		via_3d_reg.h $(DRMHEADERS) $(DRMTEMPLATES) +VIASHARED	= via_drm.h via_drv.h via.h via_mm.h via_ds.h \ +		via_3d_reg.h via_drv.c via_ds.c via_irq.c via_map.c \ +		via_mm.c via_dma.c +MACH64HEADERS	= mach64.h mach64_drv.h mach64_drm.h $(DRMHEADERS) \ +		$(DRMTEMPLATES) +MACH64SHARED 	= mach64.h mach64_drv.h mach64_drm.h mach64_dma.c \ +		mach64_irq.c mach64_state.c +FFBHEADERS	= ffb.h ffb_drv.h $(DRMHEADERS) $(DRMTEMPLATES) + +SHAREDSRC = $(DRMSHARED) $(MGASHARED) $(R128SHARED) $(RADEONSHARED) \ +	$(SISSHARED) $(TDFXSHARED) $(VIASHARED) $(MACH64SHARED) \ +	$(I915SHARED) + +PROGS = dristat drmstat + +CLEANFILES = *.o *.ko $(PROGS) .depend .*.flags .*.d .*.cmd *.mod.c linux drm_pciids.h .tmp_versions + +# 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 + +ifneq ($(HAVECONFIG),y) +ifneq ($(0),$(LINUXDIR)) +GETCONFIG += O=$(O) +endif +HAVECONFIG := $(shell if [ -e $(O)/.config ]; then echo y; fi) +endif + +ifneq ($(HAVECONFIG),y) +$(error Cannot find a kernel config file) +endif + +endif + +CLEANCONFIG := $(shell if cmp -s $(LINUXDIR)/.config .config; then echo y; fi) +ifeq ($(CLEANCONFIG),y) +CLEANFILES += $(LINUXDIR)/.config .config $(LINUXDIR)/tmp_include_depends +endif + +all: modules + +modules: includes +	make -C $(LINUXDIR) $(GETCONFIG) SUBDIRS=`pwd` DRMSRCDIR=`pwd` modules + +ifeq ($(HEADERFROMBOOT),1) + +BOOTHEADERS = version.h autoconf.h +BOOTCONFIG = .config + +CLEANFILES += $(BOOTHEADERS) $(BOOTCONFIG) + +includes:: $(BOOTHEADERS) $(BOOTCONFIG) + +version.h: $(BOOTVERSION_PREFIX)version.h +	rm -f $@ +	ln -s $< $@ + +autoconf.h: $(BOOTVERSION_PREFIX)autoconf.h +	rm -f $@ +	ln -s $< $@ + +.config: $(BOOTVERSION_PREFIX)config +	rm -f $@ +	ln -s $< $@ +endif + +# This prepares an unused Red Hat kernel tree for the build. +ifneq ($(RHCONFIG),) +includes:: $(LINUXDIR)/.config $(LINUXDIR)/tmp_include_depends .config + +$(LINUXDIR)/.config: $(LINUXDIR)/$(RHCONFIG) +	rm -f $@ +	ln -s $< $@ + +.config: $(LINUXDIR)/$(RHCONFIG) +	rm -f $@ +	ln -s $< $@ + +$(LINUXDIR)/tmp_include_depends: +	echo all: > $@ +endif + +# Make sure that the shared source files are linked into this directory. + + +SHAREDDIR := ../shared + +HASSHARED := $(shell if [ -d $(SHAREDDIR) ]; then echo y; fi) + +ifeq ($(HASSHARED),y) +includes:: $(SHAREDSRC) drm_pciids.h + +drm_pciids.h: $(SHAREDDIR)/drm_pciids.txt +	sh ../scripts/create_linux_pci_lists.sh < $(SHAREDDIR)/drm_pciids.txt + +$(SHAREDSRC): +	@if [ -r $(SHAREDDIR)/$@ ]; then \ +		(rm -f $@; set -x; ln -s $(SHAREDDIR)/$@ $@); fi + +CLEANFILES += $(SHAREDSRC) +endif + +L24SHAREDDIR := ../linux + +HAS24SHARED := $(shell if [ -d $(L24SHAREDDIR) ]; then echo y; fi) + +ifeq ($(HAS24SHARED),y) + +includes:: $(L24SHARED) + +$(L24SHARED): +	@if [ -r $(L24SHAREDDIR)/$@ ]; then \ +		(rm -f $@; set -x; ln -s $(L24SHAREDDIR)/$@ $@); fi + +CLEANFILES += $(L24SHARED) +endif + +includes:: linux + +linux: +	rm -f linux +	ln -s . linux + +clean cleandir: +	rm -rf $(CLEANFILES) + +$(MODULE_LIST):: +	make DRM_MODULES=$@ modules + +# Build test utilities + +PRGCFLAGS = $(CFLAGS) -g -ansi -pedantic -DPOSIX_C_SOURCE=199309L \ +	    -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE \ +	    -I. -I../../.. + +DRMSTATLIBS = -L../../.. -L.. -ldrm -lxf86_os \ +	      -L../../../../dummylib -ldummy -lm + +programs: $(PROGS) + +dristat: dristat.c +	$(CC) $(PRGCFLAGS) $< -o $@ + +drmstat: drmstat.c +	$(CC) $(PRGCFLAGS) $< -o $@ $(DRMSTATLIBS) + +else + +# Check for kernel versions that we don't support. + +BELOW24 := $(shell if [ $(VERSION) -lt 2 -o $(PATCHLEVEL) -lt 4 ]; then \ +		echo y; fi) + +ifeq ($(BELOW24),y) +$(error Only 2.4.x and later kernels are supported \ +	($(VERSION).$(PATCHLEVEL).$(SUBLEVEL))) +endif + +ifdef ARCHX86 +ifndef CONFIG_X86_CMPXCHG +$(error CONFIG_X86_CMPXCHG needs to be enabled in the kernel) +endif +endif + +# This needs to go before all other include paths. +CC += -I$(DRMSRCDIR) + +# Check for Red Hat's 4-argument do_munmap(). +DOMUNMAP := $(shell grep do_munmap $(LINUXDIR)/include/linux/mm.h | \ +                grep -c acct) + +ifneq ($(DOMUNMAP),0) +EXTRA_CFLAGS += -DDO_MUNMAP_4_ARGS +endif + +# 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) + +ifneq ($(RPR),0) +EXTRA_CFLAGS += -DREMAP_PAGE_RANGE_5_ARGS +endif + +# Check for 4-argument vmap() in some 2.5.x and 2.4.x kernels +VMAP := $(shell grep -A1 'vmap.*count,$$' $(LINUXDIR)/include/linux/vmalloc.h | \ +		grep -c prot) + +ifneq ($(VMAP),0) +EXTRA_CFLAGS += -DVMAP_4_ARGS +endif + +# Check for PAGE_AGP definition +PAGE_AGP := $(shell cat $(LINUXDIR)/include/asm/agp.h 2>/dev/null | \ +		grep -c PAGE_AGP) + +ifneq ($(PAGE_AGP),0) +EXTRA_CFLAGS += -DHAVE_PAGE_AGP +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_I915 := n +CONFIG_DRM_SIS := n +CONFIG_DRM_FFB := n +CONFIG_DRM_SAVAGE := n +CONFIG_DRM_VIA := n +CONFIG_DRM_MACH64 := n + +# Enable module builds for the modules requested/supported. + +ifneq (,$(findstring tdfx,$(DRM_MODULES))) +CONFIG_DRM_TDFX := m +endif +ifneq (,$(findstring r128,$(DRM_MODULES))) +CONFIG_DRM_R128 := m +endif +ifneq (,$(findstring radeon,$(DRM_MODULES))) +CONFIG_DRM_RADEON := m +endif +ifneq (,$(findstring sis,$(DRM_MODULES))) +CONFIG_DRM_SIS := m +endif +ifneq (,$(findstring via,$(DRM_MODULES))) +CONFIG_DRM_VIA := m +endif +ifneq (,$(findstring mach64,$(DRM_MODULES))) +CONFIG_DRM_MACH64 := m +endif +ifneq (,$(findstring ffb,$(DRM_MODULES))) +CONFIG_DRM_FFB := m +endif + +# 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 i830,$(DRM_MODULES))) +CONFIG_DRM_I830 := m +endif +ifneq (,$(findstring i915,$(DRM_MODULES))) +CONFIG_DRM_I915 := m +endif +ifneq (,$(findstring savage,$(DRM_MODULES))) +CONFIG_DRM_SAVAGE := m +endif +endif + +include $(DRMSRCDIR)/Makefile.kernel + +# Depencencies +$(tdfx-objs):	$(TDFXHEADERS) +$(r128-objs):	$(R128HEADERS) +$(mga-objs):	$(MGAHEADERS) +$(i810-objs):	$(I810HEADERS) +$(i830-objs):	$(I830HEADERS) +$(i915-objs):	$(I830HEADERS) +$(radeon-objs):	$(RADEONHEADERS) +$(sis-objs):	$(SISHEADERS) +$(ffb-objs):	$(FFBHEADERS) +$(savage-objs): $(SAVAGEHEADERS) +$(via-objs):	$(VIAHEADERS) +$(mach64-objs): $(MACH64HEADERS) + +endif + | 
