Move Makefile.linux to Makefile.
authorMichel Daenzer <michel@daenzer.net>
Sun, 18 Apr 2004 22:59:01 +0000 (22:59 +0000)
committerMichel Daenzer <michel@daenzer.net>
Sun, 18 Apr 2004 22:59:01 +0000 (22:59 +0000)
Get rid of Makefile juggling hacks which are no longer necessary.

linux-core/Makefile [moved from linux/Makefile.linux with 91% similarity]
linux/Makefile [new file with mode: 0644]

similarity index 91%
rename from linux/Makefile.linux
rename to linux-core/Makefile
index 229219f..b175888 100644 (file)
@@ -6,7 +6,7 @@
 # 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
+# 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.
 # 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
+#    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 -f Makefile.linux r128.o radeon.o
+#    make r128.o radeon.o
 #
 # or:
 #
-#    make -f Makefile.linux DRM_MODULES="r128 radeon"
+#    make DRM_MODULES="r128 radeon"
 #
 
 SHELL=/bin/sh
@@ -157,24 +157,10 @@ 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)
 
@@ -241,7 +227,7 @@ clean cleandir:
        rm -f $(CLEANFILES)
 
 $(MODULE_LIST)::
-       make -f Makefile.linux DRM_MODULES=$@ modules
+       make DRM_MODULES=$@ modules
 
 # Build test utilities
 
diff --git a/linux/Makefile b/linux/Makefile
new file mode 100644 (file)
index 0000000..b175888
--- /dev/null
@@ -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
+