summaryrefslogtreecommitdiff
path: root/linux-core/Makefile.kernel
blob: 9fe0038fc60c7ae69844783beb148c38c61ab676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#
# Makefile for the drm device driver.  This driver provides support for
# the Direct Rendering Infrastructure (DRI) in XFree86 4.x.
#

# drm.o is a fake target -- it is never built
# The real targets are in the module-list
O_TARGET	:= drm.o

module-list     := gamma.o tdfx.o r128.o radeon.o ffb.o mga.o i810.o
export-objs     := $(patsubst %.o,%_drv.o,$(module-list))

# libs-objs are included in every module so that radical changes to the
# architecture of the DRM support library can be made at a later time.
#
# The downside is that each module is larger, and a system that uses
# more than one module (i.e., a dual-head system) will use more memory
# (but a system that uses exactly one module will use the same amount of
# memory).
#
# The upside is that if the DRM support library ever becomes insufficient
# for new families of cards, a new library can be implemented for those new
# cards without impacting the drivers for the old cards.  This is significant,
# because testing architectural changes to old cards may be impossible, and
# may delay the implementation of a better architecture.  We've traded slight
# memory waste (in the dual-head case) for greatly improved long-term
# maintainability.
#
# NOTE: lib-objs will be eliminated in future versions, thereby
# eliminating the need to compile the .o files into every module, but
# for now we still need them.
#

lib-objs   := init.o memory.o proc.o auth.o context.o drawable.o bufs.o
lib-objs   += lists.o lock.o ioctl.o fops.o vm.o dma.o ctxbitmap.o

ifeq ($(CONFIG_AGP),y)
 lib-objs  += agpsupport.o
else
 ifeq ($(CONFIG_AGP),m)
  lib-objs += agpsupport.o
 endif
endif

gamma-objs  := gamma_drv.o    gamma_dma.o
tdfx-objs   := tdfx_drv.o                   tdfx_context.o
r128-objs   := r128_drv.o     r128_cce.o    r128_context.o   r128_bufs.o \
               r128_state.o
radeon-objs := radeon_drv.o   radeon_cp.o   radeon_context.o radeon_bufs.o \
               radeon_state.o
ffb-objs    := ffb_drv.o                    ffb_context.o
mga-objs    := mga_drv.o      mga_dma.o     mga_context.o    mga_bufs.o \
               mga_state.o
i810-objs   := i810_drv.o     i810_dma.o    i810_context.o   i810_bufs.o

obj-$(CONFIG_DRM_GAMMA)  += gamma.o
obj-$(CONFIG_DRM_TDFX)   += tdfx.o
obj-$(CONFIG_DRM_R128)   += r128.o
obj-$(CONFIG_DRM_RADEON) += radeon.o
obj-$(CONFIG_DRM_FFB)    += ffb.o
obj-$(CONFIG_DRM_MGA)    += mga.o
obj-$(CONFIG_DRM_I810)   += i810.o


# When linking into the kernel, link the library just once. 
# If making modules, we include the library into each module

lib-objs-mod := $(patsubst %.o,%-mod.o,$(lib-objs))

ifdef MAKING_MODULES
  lib = drmlib-mod.a
else
  obj-y += drmlib.a
endif

include $(TOPDIR)/Rules.make

$(patsubst %.o,%.c,$(lib-objs-mod)): 
	@ln -sf $(subst -mod,,$@) $@

drmlib-mod.a: $(lib-objs-mod)
	rm -f $@
	$(AR) $(EXTRA_ARFLAGS) rcs $@ $(lib-objs-mod)

drmlib.a: $(lib-objs)
	rm -f $@
	$(AR) $(EXTRA_ARFLAGS) rcs $@ $(lib-objs)

gamma.o: $(gamma-objs) $(lib)
	$(LD) -r -o $@ $(gamma-objs) $(lib)

tdfx.o: $(tdfx-objs) $(lib)
	$(LD) -r -o $@ $(tdfx-objs) $(lib)

mga.o: $(mga-objs) $(lib)
	$(LD) -r -o $@ $(mga-objs) $(lib)

i810.o: $(i810-objs) $(lib)
	$(LD) -r -o $@ $(i810-objs) $(lib)

r128.o: $(r128-objs) $(lib)
	$(LD) -r -o $@ $(r128-objs) $(lib)

radeon.o: $(radeon-objs) $(lib)
	$(LD) -r -o $@ $(radeon-objs) $(lib)

ffb.o: $(ffb-objs) $(lib)
	$(LD) -r -o $@ $(ffb-objs) $(lib)