From 0f32a8852712e405f64c5917bcebefc441aa1ba3 Mon Sep 17 00:00:00 2001 From: Michel Daenzer Date: Sun, 18 Apr 2004 22:59:01 +0000 Subject: Move Makefile.linux to Makefile. Get rid of Makefile juggling hacks which are no longer necessary. --- linux/Makefile | 377 +++++++++++++++++++++++++++++++++++++++++++++++++ linux/Makefile.linux | 391 --------------------------------------------------- 2 files changed, 377 insertions(+), 391 deletions(-) create mode 100644 linux/Makefile delete mode 100644 linux/Makefile.linux (limited to 'linux') diff --git a/linux/Makefile b/linux/Makefile new file mode 100644 index 00000000..b1758884 --- /dev/null +++ b/linux/Makefile @@ -0,0 +1,377 @@ +# 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 := /lib/modules/$(RUNNING_REL)/build +endif + +MACHINE := $(shell uname -m) + +# Modules for all architectures +MODULE_LIST := gamma.o 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 +endif + +# Add ffb.o for sparc?? + +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 + +DRMSHARED = drm.h drm_sarea.h +DRMHEADERS = drmP.h $(DRMSHARED) + +GAMMAHEADERS = gamma.h gamma_context.h gamma_drm.h gamma_drv.h gamma_lists.h \ + gamma_old_dma.h gamma_lock.h $(DRMHEADERS) $(DRMTEMPLATES) +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) +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 \ + $(DRMHEADERS) $(DRMTEMPLATES) +VIASHARED = via_drm.h via_drv.h via.h via_mm.h via_ds.h via_drv.c \ + via_ds.c via_irq.c via_map.c via_mm.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 + +SHAREDSRC = $(DRMSHARED) $(MGASHARED) $(R128SHARED) $(RADEONSHARED) \ + $(SISSHARED) $(TDFXSHARED) $(VIASHARED) $(MACH64SHARED) + +PROGS = dristat drmstat + +CLEANFILES = *.o *.ko $(PROGS) .depend .*.flags .*.d .*.cmd *.mod.c linux + +# 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) +$(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) + +$(SHAREDSRC): + @if [ -r $(SHAREDDIR)/$@ ]; then \ + (rm -f $@; set -x; ln -s $(SHAREDDIR)/$@ $@); fi + +CLEANFILES += $(SHAREDSRC) +endif + +includes:: linux + +linux: + rm -f linux + ln -s . linux + +clean cleandir: + rm -f $(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_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 gamma,$(DRM_MODULES))) +CONFIG_DRM_GAMMA := m +endif +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 + + + +# 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 savage,$(DRM_MODULES))) +CONFIG_DRM_SAVAGE := m +endif +endif + +include $(DRMSRCDIR)/Makefile.kernel + +# 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) +$(savage-objs): $(SAVAGEHEADERS) +$(via-objs): $(VIAHEADERS) +$(mach64-objs): $(MACH64HEADERS) + +endif + diff --git a/linux/Makefile.linux b/linux/Makefile.linux deleted file mode 100644 index 229219fb..00000000 --- a/linux/Makefile.linux +++ /dev/null @@ -1,391 +0,0 @@ -# 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.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. -# -# $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 -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: - -ifndef LINUXDIR -RUNNING_REL := $(shell uname -r) - -LINUXDIR := /lib/modules/$(RUNNING_REL)/build -endif - -MACHINE := $(shell uname -m) - -# Modules for all architectures -MODULE_LIST := gamma.o 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 -endif - -# Add ffb.o for sparc?? - -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 - -DRMSHARED = drm.h drm_sarea.h -DRMHEADERS = drmP.h $(DRMSHARED) - -GAMMAHEADERS = gamma.h gamma_context.h gamma_drm.h gamma_drv.h gamma_lists.h \ - gamma_old_dma.h gamma_lock.h $(DRMHEADERS) $(DRMTEMPLATES) -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) -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 \ - $(DRMHEADERS) $(DRMTEMPLATES) -VIASHARED = via_drm.h via_drv.h via.h via_mm.h via_ds.h via_drv.c \ - via_ds.c via_irq.c via_map.c via_mm.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 - -SHAREDSRC = $(DRMSHARED) $(MGASHARED) $(R128SHARED) $(RADEONSHARED) \ - $(SISSHARED) $(TDFXSHARED) $(VIASHARED) $(MACH64SHARED) - -PROGS = dristat drmstat - -CLEANFILES = *.o *.ko $(PROGS) .depend .*.flags .*.d .*.cmd *.mod.c linux - -# 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) -$(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 - -# 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. - -all: modules - -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 - -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) - -$(SHAREDSRC): - @if [ -r $(SHAREDDIR)/$@ ]; then \ - (rm -f $@; set -x; ln -s $(SHAREDDIR)/$@ $@); fi - -CLEANFILES += $(SHAREDSRC) -endif - -includes:: linux - -linux: - rm -f linux - ln -s . linux - -clean cleandir: - rm -f $(CLEANFILES) - -$(MODULE_LIST):: - make -f Makefile.linux 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_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 gamma,$(DRM_MODULES))) -CONFIG_DRM_GAMMA := m -endif -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 - - - -# 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 savage,$(DRM_MODULES))) -CONFIG_DRM_SAVAGE := m -endif -endif - -include $(DRMSRCDIR)/Makefile.kernel - -# 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) -$(savage-objs): $(SAVAGEHEADERS) -$(via-objs): $(VIAHEADERS) -$(mach64-objs): $(MACH64HEADERS) - -endif - -- cgit v1.2.3