272 lines
8.2 KiB
Makefile
272 lines
8.2 KiB
Makefile
# 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.
|
|
#
|
|
# 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:
|
|
#
|
|
# 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 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.
|
|
#
|
|
#
|
|
# ***** 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
|
|
#
|
|
#
|
|
# ***** NOTE NOTE NOTE NOTE NOTE *****
|
|
# Because some distributions patch 2.2.x kernels to make kill_fasync have
|
|
# three parameters, this script tries to determine, via the examination of
|
|
# header files, if your kernel has been patched. If this detection is
|
|
# incorrect, you can override the value on the command line, like this:
|
|
# make PARAMS=2
|
|
# or
|
|
# make PARAMS=3
|
|
|
|
.SUFFIXES:
|
|
|
|
# *** Setup
|
|
|
|
# **** End of SMP/MODVERSIONS detection
|
|
|
|
MODS = gamma.o tdfx.o r128.o radeon.o
|
|
LIBS =
|
|
|
|
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
|
|
DRMHEADERS = drm.h drmP.h compat-pre24.h
|
|
|
|
GAMMAOBJS = gamma_drv.o gamma_dma.o
|
|
GAMMAHEADERS = gamma_drv.h $(DRMHEADERS) $(DRMTEMPLATES)
|
|
|
|
TDFXOBJS = tdfx_drv.o
|
|
TDFXHEADERS = tdfx.h $(DRMHEADERS)
|
|
|
|
R128OBJS = r128_drv.o r128_cce.o r128_state.o
|
|
R128HEADERS = r128.h r128_drv.h r128_drm.h $(DRMHEADERS) $(DRMTEMPLATES)
|
|
|
|
RADEONOBJS = radeon_drv.o radeon_cp.o radeon_state.o
|
|
RADEONHEADERS = radeon.h radeon_drv.h radeon_drm.h $(DRMHEADERS) \
|
|
$(DRMTEMPLATES)
|
|
|
|
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
|
|
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)
|
|
A := /usr/src/linux-$(VERSION)/include
|
|
B := /usr/src/linux/include
|
|
C := /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
|
|
V := $(shell gcc -E -nostdinc -I$B picker.c 2>/dev/null \
|
|
| grep -s 'RELEASE = ' | cut -d' ' -f3)
|
|
ifeq ($(V),"$(VERSION)")
|
|
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
|
|
TREE := 0
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(TREE),0)
|
|
all:; @echo Error: Could not locate kernel tree in $A $B $C
|
|
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)
|
|
SIS := $(shell gcc -E -nostdinc -I$(TREE) picker.c 2>/dev/null \
|
|
| grep -s 'SIS = ' | cut -d' ' -f3)
|
|
PARAMS := $(shell if fgrep kill_fasync $(TREE)/linux/fs.h 2>/dev/null \
|
|
| egrep -q '(band|int, int)'; then echo 3; else echo 2; fi)
|
|
MACHINE := $(shell echo `uname -m`)
|
|
ifeq ($(AGP),0)
|
|
AGP := $(shell gcc -E -nostdinc -I$(TREE) picker.c 2>/dev/null \
|
|
| grep -s 'AGP_MODULE = ' | cut -d' ' -f3)
|
|
endif
|
|
|
|
ifeq ($(AGP),1)
|
|
MODCFLAGS += -DCONFIG_AGP -DCONFIG_AGP_MODULE
|
|
DRMTEMPLATES += drm_agpsupport.h
|
|
DRMHEADERS += agpsupport-pre24.h
|
|
MODS += mga.o
|
|
ifeq ($(MACHINE),i386)
|
|
MODS += i810.o
|
|
endif
|
|
ifeq ($(MACHINE),i686)
|
|
MODS += i810.o
|
|
endif
|
|
|
|
MGAOBJS = mga_drv.o mga_dma.o mga_state.o mga_warp.o
|
|
MGAHEADERS = mga.h mga_drv.h mga_drm.h $(DRMHEADERS) $(DRMTEMPLATES)
|
|
|
|
I810OBJS = i810_drv.o i810_dma.o
|
|
I810HEADERS = i810.h i810_drv.h i810_drm.h $(DRMHEADERS) $(DRMTEMPLATES)
|
|
|
|
endif
|
|
|
|
ifeq ($(MACHINE),alpha)
|
|
MODCFLAGS+= -ffixed-8 -mno-fp-regs -mcpu=ev56 -Wa,-mev6
|
|
endif
|
|
|
|
ifeq ($(SIS),1)
|
|
# It appears that the SiS driver makes calls to sis_malloc and sis_free, and
|
|
# that these calls are only defined if CONFIG_FB_SIS is selected. So, key
|
|
# off that to determine if we should attempt to build the SiS driver.
|
|
#
|
|
# A better way would be to detect the appropriate definitions in the header
|
|
# file to see if we can, at least, compile the driver.
|
|
MODS += sis.o
|
|
|
|
SISOBJS= sis_drv.o sis_context.o sis_ds.o sis_mm.o
|
|
SISHEADERS= sis_drv.h sis_ds.h sis_drm.h $(DRMHEADERS)
|
|
MODCFLAGS += -DCONFIG_DRM_SIS
|
|
endif
|
|
|
|
all::;@echo === KERNEL HEADERS IN $(TREE)
|
|
all::;@echo === SMP=${SMP} MODULES=${MODULES} MODVERSIONS=${MODVERSIONS} AGP=${AGP}
|
|
all::;@echo === kill_fasync has $(PARAMS) parameters
|
|
all::;@echo === Compiling for machine $(MACHINE)
|
|
all::;@echo === WARNING
|
|
all::;@echo === WARNING 2.4.0 kernels before 2.4.0-test11 DO NOT WORK
|
|
all::;@echo === WARNING
|
|
|
|
ifeq ($(MODULES),0)
|
|
all::;@echo
|
|
all::;@echo "*** Kernel modules must be configured. Build aborted."
|
|
all::;@echo
|
|
else
|
|
all:: $(LIBS) $(MODS) $(PROGS)
|
|
endif
|
|
|
|
endif
|
|
|
|
# **** End of SMP/MODVERSIONS detection
|
|
|
|
# **** Handle SMP/MODVERSIONS
|
|
ifeq ($(SMP),1)
|
|
MODCFLAGS += -D__SMP__
|
|
endif
|
|
ifeq ($(MODVERSIONS),1)
|
|
MODCFLAGS += -DMODVERSIONS -include $(TREE)/linux/modversions.h
|
|
endif
|
|
ifeq ($(PARAMS),3)
|
|
MODCFLAGS += -DKILLFASYNCHASTHREEPARAMETERS
|
|
endif
|
|
|
|
# **** End of configuration
|
|
|
|
dristat: dristat.c
|
|
$(CC) $(PRGCFLAGS) $< -o $@
|
|
|
|
gamma_drv.o: gamma_drv.c
|
|
$(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@
|
|
gamma.o: $(GAMMAOBJS)
|
|
$(LD) -r $^ -o $@
|
|
|
|
tdfx_drv.o: tdfx_drv.c
|
|
$(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@
|
|
tdfx.o: $(TDFXOBJS) $(LIBS)
|
|
$(LD) -r $^ -o $@
|
|
|
|
sis.o: $(SISOBJS) $(LIBS)
|
|
$(LD) -r $^ -o $@
|
|
|
|
r128_drv.o: r128_drv.c
|
|
$(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@
|
|
r128.o: $(R128OBJS) $(LIBS)
|
|
$(LD) -r $^ -o $@
|
|
|
|
radeon_drv.o: radeon_drv.c
|
|
$(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@
|
|
radeon.o: $(RADEONOBJS) $(LIBS)
|
|
$(LD) -r $^ -o $@
|
|
|
|
ifeq ($(AGP),1)
|
|
mga_drv.o: mga_drv.c
|
|
$(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@
|
|
mga.o: $(MGAOBJS)
|
|
$(LD) -r $^ -o $@
|
|
|
|
i810_drv.o: i810_drv.c
|
|
$(CC) $(MODCFLAGS) -DEXPORT_SYMTAB -I$(TREE) -c $< -o $@
|
|
i810.o: $(I810OBJS) $(LIBS)
|
|
$(LD) -r $^ -o $@
|
|
|
|
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)
|
|
ifeq ($(AGP),1)
|
|
$(MGAOBJS): $(MGAHEADERS)
|
|
$(I810OBJS): $(I810HEADERS)
|
|
$(R128OBJS): $(R128HEADERS)
|
|
$(RADEONOBJS): $(RADEONHEADERS)
|
|
endif
|
|
|
|
clean cleandir::
|
|
rm -f *.o *.a *~ core
|