Add kernel version dependency
[profile/ivi/intel-emgd-kmod.git] / Makefile
1 #----------------------------------------------------------------------------
2 # Filename: Makefile.gnu
3 # $Revision: 1.59 $
4 #----------------------------------------------------------------------------
5 # Copyright (c) 2002-2010, Intel Corporation.
6 #
7 # Permission is hereby granted, free of charge, to any person obtaining a copy
8 # of this software and associated documentation files (the "Software"), to deal
9 # in the Software without restriction, including without limitation the rights
10 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 # copies of the Software, and to permit persons to whom the Software is
12 # furnished to do so, subject to the following conditions:
13 #
14 # The above copyright notice and this permission notice shall be included in
15 # all copies or substantial portions of the Software.
16 #
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 # THE SOFTWARE.
24 #----------------------------------------------------------------------------
25 export EGD_TOPLEVEL = DRM Driver
26
27 KERNELMODVER ?= $(shell ls -d /lib/modules/*automotive)
28 KERNELVER ?= $(subst /lib/modules/,,$(KERNELMODVER))
29 KERNELDIR ?= /lib/modules/$(KERNELVER)/build
30 INSTALLDIR ?= /lib/modules/$(KERNELVER)/kernel/drivers/gpu/drm/emgd
31 INCLUDEDIR ?= /usr/src/kernels/$(KERNELVER)/include/linux
32
33 BLUE = \033[34m
34 OFF = \033[0m
35 BUILD ?= release
36 CONFIG_PVR_RELEASE ?= $(BUILD)
37 CONFIG_DRM_EGD ?= m
38
39 # Get the include paths pointed to the right place. 
40 export  EMGD_MOD_DIR ?= $(CURDIR)
41
42 BUILDDATE ?= $(shell date +%Y%m%d)
43
44 PROJECT_INCLUDES = \
45            -I$(EMGD_MOD_DIR)/include \
46            -I$(EMGD_MOD_DIR)/emgd/display/mode/cmn \
47            -I$(EMGD_MOD_DIR)/emgd/video/overlay/cmn \
48            -I$(EMGD_MOD_DIR)/emgd/video/msvdx \
49            -I$(EMGD_MOD_DIR)/emgd/include \
50            -I$(EMGD_MOD_DIR)/emgd/cfg \
51            -I$(EMGD_MOD_DIR)/emgd/pal/lpd \
52            -I$(EMGD_MOD_DIR)/emgd/pal/lvds \
53            -I$(EMGD_MOD_DIR)/emgd/pal/ch7036 \
54            -I$(EMGD_MOD_DIR)/emgd/drm \
55            -I$(KERNELDIR)/include/drm \
56            -I$(EMGD_MOD_DIR)/pvr/include4 \
57            -I$(EMGD_MOD_DIR)/pvr/services4/include \
58            -I$(EMGD_MOD_DIR)/pvr/services4/include/env/linux \
59            -I$(EMGD_MOD_DIR)/pvr/services4/srvkm/env/linux \
60            -I$(EMGD_MOD_DIR)/pvr/services4/srvkm/include \
61            -I$(EMGD_MOD_DIR)/pvr/services4/srvkm/bridged \
62            -I$(EMGD_MOD_DIR)/pvr/services4/system/plb \
63            -I$(EMGD_MOD_DIR)/pvr/services4/system/tnc \
64            -I$(EMGD_MOD_DIR)/pvr/services4/system/include \
65            -I$(EMGD_MOD_DIR)/pvr/services4/srvkm/hwdefs \
66            -I$(EMGD_MOD_DIR)/pvr/services4/srvkm/bridged/sgx \
67            -I$(EMGD_MOD_DIR)/pvr/services4/srvkm/devices/sgx \
68            -I$(EMGD_MOD_DIR)/pvr/services4/3rdparty/emgd_bufferclass \
69            -I$(EMGD_MOD_DIR)/pvr/tools/intern/debug \
70            -I$(INCLUDEDIR)\
71            -DSUPPORT_DRI_DRM_EXT \
72            -DLINUX \
73            -DPVR_BUILD_DIR="\"emgd\"" \
74            -DPVR_BUILD_DATE="\"$(BUILDDATE)\"" \
75            -DPVR_BUILD_TYPE="\"$(CONFIG_PVR_RELEASE)\"" \
76            -DBUILD=$(CONFIG_PVR_RELEASE) \
77            -DPVR_SECURE_HANDLES \
78            -DPVR_PROC_USE_SEQ_FILE \
79            -DLDM_PCI \
80            -DSUPPORT_CACHEFLUSH_ON_ALLOC \
81            -DSUPPORT_DRI_DRM \
82            -DSGX535 \
83            -DSGX_CORE_REV=121 \
84            -UDEBUG_LOG_PATH_TRUNCATE \
85            -DDISPLAY_CONTROLLER=emgd_dc \
86            -D_XOPEN_SOURCE=600 \
87            -DSERVICES4 \
88            -DPVR2D_VALIDATE_INPUT_PARAMS \
89            -DSUPPORT_SRVINIT \
90            -DSUPPORT_SGX \
91            -DSUPPORT_PERCONTEXT_PB \
92            -DSUPPORT_LINUX_X86_WRITECOMBINE \
93            -DSUPPORT_SECURE_DRM_AUTH_EXPORT \
94            -DSUPPORT_PDUMP_DELAYED_INITPHASE_TERMINATION \
95            -DTRANSFER_QUEUE \
96            -DSYS_USING_INTERRUPTS \
97            -DSUPPORT_HW_RECOVERY \
98            -DSUPPORT_ACTIVE_POWER_MANAGEMENT \
99            -DPVR_SECURE_HANDLES \
100            -DUSE_PTHREADS \
101            -DSUPPORT_SGX_EVENT_OBJECT \
102            -DSUPPORT_SGX_HWPERF \
103            -DSUPPORT_LINUX_X86_PAT \
104            -DSUPPORT_SGX535 \
105            -DSUPPORT_CACHE_LINE_FLUSH \
106            -DSUPPORT_CPU_CACHED_BUFFERS \
107            -DDEBUG_MESA_OGL_TRACE \
108            -DSUPPORT_EGL_IMAGE_SYNC_DEPENDENCY \
109
110
111 ifeq "$(strip $(CONFIG_PVR_RELEASE))" "release"
112         ccflags-y += -DRELEASE
113 else
114         # FIXME: Looks like this causes conflicts in the emgd code.
115         ccflags-y += -DDEBUG
116         ccflags-y += -DDEBUG_BUILD_TYPE 
117 endif
118
119 EXTRA_CFLAGS += $(PROJECT_INCLUDES)
120
121 ifeq ($(PDUMP),1)
122         EXTRA_CFLAGS += -DPDUMP=1
123 endif
124
125 EMGD_OBJS := \
126         emgd/drm/emgd_fb.o \
127         emgd/drm/emgd_fbcon.o \
128         emgd/drm/emgd_crtc.o \
129         emgd/drm/emgd_encoder.o \
130         emgd/drm/emgd_connector.o \
131         emgd/drm/emgd_mmap.o \
132         emgd/drm/emgd_drv.o \
133         emgd/drm/emgd_interface.o \
134         emgd/drm/emgd_test_pvrsrv.o \
135         emgd/drm/user_config.o \
136         emgd/drm/splash_screen.o \
137         emgd/display/pd/cmn/pd.o \
138         emgd/display/pi/cmn/igd_pi.o \
139         emgd/display/pi/cmn/displayid.o \
140         emgd/display/pi/cmn/pd_init_all.o \
141         emgd/display/pi/cmn/edid.o \
142         emgd/display/pi/cmn/pi.o \
143         emgd/display/pi/cmn/mode_table.o \
144         emgd/display/pi/tnc/i2c_gmbus_tnc.o \
145         emgd/display/pi/tnc/i2c_bitbash_tnc.o \
146         emgd/display/pi/plb/i2c_plb.o \
147         emgd/display/mode/cmn/match.o \
148         emgd/display/mode/cmn/micro_mode.o \
149         emgd/display/mode/cmn/vga_mode.o \
150         emgd/display/mode/cmn/igd_mode.o \
151         emgd/display/mode/tnc/micro_mode_tnc.o \
152         emgd/display/mode/tnc/mode_tnc.o \
153         emgd/display/mode/tnc/kms_mode_tnc.o \
154         emgd/display/mode/tnc/clocks_tnc.o \
155         emgd/display/mode/plb/micro_mode_plb.o \
156         emgd/display/mode/plb/clocks_plb.o \
157         emgd/display/mode/plb/mode_plb.o \
158         emgd/display/mode/plb/kms_mode_plb.o \
159         emgd/display/dsp/cmn/dsp.o \
160         emgd/display/dsp/tnc/dsp_tnc.o \
161         emgd/display/dsp/plb/dsp_plb.o \
162         emgd/core/init/cmn/igd_global.o \
163         emgd/core/init/cmn/igd_init.o \
164         emgd/core/init/tnc/micro_init_tnc.o \
165         emgd/core/init/tnc/init_tnc.o \
166         emgd/core/init/plb/init_plb.o \
167         emgd/core/init/plb/micro_init_plb.o \
168         emgd/state/power/cmn/igd_pwr.o \
169         emgd/state/power/plb/pwr_plb.o \
170         emgd/state/appcontext/cmn/igd_appcontext.o \
171         emgd/state/appcontext/plb/appcontext_plb.o \
172         emgd/state/reg/cmn/reg.o \
173         emgd/state/reg/tnc/reg_tnc.o \
174         emgd/state/reg/plb/reg_plb.o \
175         emgd/video/overlay/cmn/ovl_coeff.o \
176         emgd/video/overlay/cmn/igd_ovl.o \
177         emgd/video/overlay/cmn/micro_ovl.o \
178         emgd/video/overlay/tnc/ovl_tnc_cache.o \
179         emgd/video/overlay/tnc/ovl_tnc.o \
180         emgd/video/overlay/tnc/ovl2_tnc.o \
181         emgd/video/overlay/tnc/micro_ovl_tnc.o \
182         emgd/video/overlay/plb/ovl_plb_cache.o \
183         emgd/video/overlay/plb/ovl2_plb.o \
184         emgd/video/overlay/plb/ovl_plb.o \
185         emgd/video/overlay/plb/micro_ovl_plb.o \
186         emgd/video/msvdx/msvdx_init.o \
187         emgd/video/msvdx/msvdx.o \
188         emgd/video/msvdx/msvdx_pvr.o \
189         emgd/video/topaz/topaz_init.o \
190         emgd/video/topaz/topaz.o \
191         emgd/pal/sdvo/sdvo_attr.o \
192         emgd/pal/sdvo/sdvo_hdmi.o \
193         emgd/pal/sdvo/sdvo_port.o \
194         emgd/pal/sdvo/sdvo_intf.o \
195         emgd/pal/ch7036/ch7036_attr.o \
196         emgd/pal/ch7036/ch7036_fw.o \
197         emgd/pal/ch7036/ch7036_intf.o \
198         emgd/pal/ch7036/ch7036_port.o \
199         emgd/pal/ch7036/ch7036.o \
200         emgd/pal/ch7036/ch7036_iic.o \
201         emgd/pal/ch7036/ch7036_pm.o \
202         emgd/pal/ch7036/ch7036_reg_table.o \
203         emgd/pal/ch7036/lvds/lvds.o \
204         emgd/pal/lvds/lvds.o \
205         emgd/pal/lpd/lpd.o \
206         emgd/gmm/gmm.o \
207         emgd/gmm/gtt.o \
208         emgd/utils/pci.o \
209         emgd/utils/memmap.o \
210         emgd/utils/math_fix.o \
211
212 ENVDIR = pvr/services4/srvkm/env/linux
213 COMMONDIR = pvr/services4/srvkm/common
214 BRIDGEDDIR = pvr/services4/srvkm/bridged
215 SYSCONFIGDIR = pvr/services4/system/common
216 SGXDIR = pvr/services4/srvkm/devices/sgx
217 DISPCLASSDIR = pvr/services4/3rdparty/emgd_displayclass
218 BUFFERCLASSDIR = pvr/services4/3rdparty/emgd_bufferclass
219
220 ifeq ($(PDUMP),1)
221 DBGDRVDIR = pvr/tools/intern/debug/dbgdriv
222
223 DBGDRV_OBJS = $(DBGDRVDIR)/linux/main.o \
224               $(DBGDRVDIR)/common/dbgdriv.o \
225               $(DBGDRVDIR)/common/ioctl.o \
226               $(DBGDRVDIR)/linux/hostfunc.o \
227               $(DBGDRVDIR)/common/hotkey.o
228 endif
229
230 ENV_OBJS = $(ENVDIR)/osfunc.o \
231            $(ENVDIR)/mutils.o \
232            $(ENVDIR)/mmap.o \
233            $(ENVDIR)/module.o \
234            $(ENVDIR)/pdump.o \
235            $(ENVDIR)/proc.o \
236            $(ENVDIR)/pvr_bridge_k.o \
237            $(ENVDIR)/pvr_debug.o \
238            $(ENVDIR)/mm.o \
239            $(ENVDIR)/mutex.o \
240            $(ENVDIR)/event.o \
241            $(ENVDIR)/osperproc.o \
242            $(ENVDIR)/pvr_drm.o
243
244 COMMON_OBJS = $(COMMONDIR)/buffer_manager.o \
245             $(COMMONDIR)/devicemem.o \
246             $(COMMONDIR)/deviceclass.o \
247             $(COMMONDIR)/handle.o \
248             $(COMMONDIR)/hash.o \
249             $(COMMONDIR)/metrics.o \
250             $(COMMONDIR)/pvrsrv.o \
251             $(COMMONDIR)/queue.o \
252             $(COMMONDIR)/ra.o \
253             $(COMMONDIR)/resman.o \
254             $(COMMONDIR)/power.o \
255             $(COMMONDIR)/mem.o \
256             $(COMMONDIR)/pdump_common.o \
257             $(COMMONDIR)/perproc.o \
258             $(COMMONDIR)/lists.o \
259             $(COMMONDIR)/mem_debug.o
260
261 BRIDGED_OBJS = $(BRIDGEDDIR)/bridged_support.o \
262              $(BRIDGEDDIR)/bridged_pvr_bridge.o \
263              $(BRIDGEDDIR)/sgx/bridged_sgx_bridge.o
264
265 SYSCONFIG_OBJS = $(SYSCONFIGDIR)/sysconfig.o \
266                 pvr/services4/system/tnc/sysconfig.o \
267                 pvr/services4/system/plb/sysconfig.o \
268                 $(SYSCONFIGDIR)/sysutils.o
269 #                $(SYSCONFIGDIR)/sysirq.o
270 #                $(SYSCONFIGDIR)/ospm_power.o \
271
272 SGX_OBJS = $(SGXDIR)/sgxinit.o \
273          $(SGXDIR)/sgxpower.o \
274          $(SGXDIR)/sgxreset.o \
275          $(SGXDIR)/sgxutils.o \
276          $(SGXDIR)/sgxkick.o \
277          $(SGXDIR)/sgxtransfer.o \
278          $(SGXDIR)/mmu.o \
279          $(SGXDIR)/pb.o
280
281 DC_OBJS = $(DISPCLASSDIR)/emgd_dc.o \
282           $(DISPCLASSDIR)/emgd_dc_linux.o
283
284 BC_OBJS = $(BUFFERCLASSDIR)/emgd_bc.o \
285           $(BUFFERCLASSDIR)/emgd_bc_linux.o
286
287
288 emgd-y := \
289         $(DC_OBJS) \
290         $(EMGD_OBJS) \
291         $(ENV_OBJS) \
292         $(COMMON_OBJS) \
293         $(BRIDGED_OBJS) \
294         $(SYSCONFIG_OBJS) \
295         $(SGX_OBJS) \
296         $(BC_OBJS) \
297
298 ifeq ($(PDUMP),1)
299         emgd-y += $(DBGDRV_OBJS)
300 endif
301
302 obj-$(CONFIG_DRM_EGD) += emgd.o
303
304 all:: clean modules
305
306 modules::
307         @echo $(CURDIR) -- $(CONFIG_PVR_RELEASE)
308         @echo "$(MAKE) -C $(KERNELDIR) M=$(CURDIR) modules"
309         @$(MAKE) -C $(KERNELDIR) M=$(CURDIR) modules
310
311 clean::
312         @rm -f $(emgd-y)
313         @rm -f emgd.o emgd.mod.* emgd.ko Module.* modules.order
314         @find . -name "*.cmd" -exec rm '{}' \;
315
316 install::
317         install -o root -g root -m 755 -d $(INSTALLDIR)
318         install -o root -g root -m 744 emgd.ko $(INSTALLDIR)
319         /sbin/depmod -a
320
321 uninstall::
322         rmmod $(INSTALLDIR)/emgd.ko
323         rm -rf $(INSTALLDIR)/emgd.ko
324         /sbin/depmod -a
325
326 debug::
327         export CONFIG_PVR_RELEASE=debug; $(MAKE) modules
328
329 package:: clean
330         @echo -e "$(BLUE)Packaging $(EGD_TOPLEVEL)$(OFF)";
331         mkdir -p $(EGD_PKG)
332         tar -C $(EMGD_MOD_DIR) --exclude "CVS" -czf $(EGD_PKG)/emgd_drm.tgz *
333