jacinto6: sgx: update DDK version to 1.12/2701748
[android-sdk/device-ti-proprietary-open.git] / jacinto6 / sgx_src / eurasia_km / eurasiacon / build / linux2 / config / core.mk
1 ########################################################################### ###
2 #@Title         Root build configuration.
3 #@Copyright     Copyright (c) Imagination Technologies Ltd. All Rights Reserved
4 #@License       Dual MIT/GPLv2
5
6 # The contents of this file are subject to the MIT license as set out below.
7
8 # Permission is hereby granted, free of charge, to any person obtaining a copy
9 # of this software and associated documentation files (the "Software"), to deal
10 # in the Software without restriction, including without limitation the rights
11 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 # copies of the Software, and to permit persons to whom the Software is
13 # furnished to do so, subject to the following conditions:
14
15 # The above copyright notice and this permission notice shall be included in
16 # all copies or substantial portions of the Software.
17
18 # Alternatively, the contents of this file may be used under the terms of
19 # the GNU General Public License Version 2 ("GPL") in which case the provisions
20 # of GPL are applicable instead of those above.
21
22 # If you wish to allow use of your version of this file only under the terms of
23 # GPL, and not to allow others to use your version of this file under the terms
24 # of the MIT license, indicate your decision by deleting the provisions above
25 # and replace them with the notice and other provisions required by GPL as set
26 # out in the file called "GPL-COPYING" included in this distribution. If you do
27 # not delete the provisions above, a recipient may use your version of this file
28 # under the terms of either the MIT license or GPL.
29
30 # This License is also included in this distribution in the file called
31 # "MIT-COPYING".
32
33 # EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
34 # PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
35 # BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
36 # PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
37 # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
38 # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
39 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
40 ### ###########################################################################
42 # Configuration wrapper for new build system. This file deals with
43 # configuration of the build. Add to this file anything that deals
44 # with switching driver options on/off and altering the defines or
45 # objects the build uses.
46 #
47 # At the end of this file is an exhaustive list of all variables
48 # that are passed between the platform/config stage and the generic
49 # build. PLEASE refrain from adding more variables than necessary
50 # to this stage -- almost all options can go through config.h.
51 #
53 ################################# MACROS ####################################
55 # Write out a kernel GNU make option.
56 #
57 define KernelConfigMake
58 $$(shell echo "override $(1) := $(2)" >>$(CONFIG_KERNEL_MK).new)
59 $(if $(filter config,$(D)),$(info KernelConfigMake $(1) := $(2)         # $(if $($(1)),$(origin $(1)),default)))
60 endef
62 # Write out a GNU make option for both user & kernel
63 #
64 define BothConfigMake
65 $$(eval $$(call KernelConfigMake,$(1),$(2)))
66 endef
68 # Conditionally write out a kernel GNU make option
69 #
70 define TunableKernelConfigMake
71 ifneq ($$($(1)),)
72 ifneq ($$($(1)),0)
73 $$(eval $$(call KernelConfigMake,$(1),$$($(1))))
74 endif
75 else
76 ifneq ($(2),)
77 $$(eval $$(call KernelConfigMake,$(1),$(2)))
78 endif
79 endif
80 endef
82 # Conditionally write out a GNU make option for both user & kernel
83 #
84 define TunableBothConfigMake
85 $$(eval $$(call TunableKernelConfigMake,$(1),$(2)))
86 endef
88 # Write out a kernel-only option
89 #
90 define KernelConfigC
91 $$(shell echo "#define $(1) $(2)" >>$(CONFIG_KERNEL_H).new)
92 $(if $(filter config,$(D)),$(info KernelConfigC    #define $(1) $(2)    /* $(if $($(1)),$(origin $(1)),default) */),)
93 endef
95 # Write out an option for both user & kernel
96 #
97 define BothConfigC
98 $$(eval $$(call KernelConfigC,$(1),$(2)))
99 endef
101 # Conditionally write out a kernel-only option
103 define TunableKernelConfigC
104 ifneq ($$($(1)),)
105 ifneq ($$($(1)),0)
106 ifeq ($$($(1)),1)
107 $$(eval $$(call KernelConfigC,$(1),))
108 else
109 $$(eval $$(call KernelConfigC,$(1),$$($(1))))
110 endif
111 endif
112 else
113 ifneq ($(2),)
114 ifeq ($(2),1)
115 $$(eval $$(call KernelConfigC,$(1),))
116 else
117 $$(eval $$(call KernelConfigC,$(1),$(2)))
118 endif
119 endif
120 endif
121 endef
123 # Conditionally write out an option for both user & kernel
125 define TunableBothConfigC
126 $$(eval $$(call TunableKernelConfigC,$(1),$(2)))
127 endef
129 ############################### END MACROS ##################################
131 # Check we have a new enough version of GNU make.
133 need := 3.81
134 ifeq ($(filter $(need),$(firstword $(sort $(MAKE_VERSION) $(need)))),)
135 $(error A version of GNU make >= $(need) is required - this is version $(MAKE_VERSION))
136 endif
138 # Try to guess EURASIAROOT if it wasn't set. Check this location.
140 _GUESSED_EURASIAROOT := $(abspath ../../../..)
141 ifneq ($(strip $(EURASIAROOT)),)
142 # We don't want to warn about EURASIAROOT if it's empty: this might mean that
143 # it's not set at all anywhere, but it could also mean that it's set like
144 # "export EURASIAROOT=" or "make EURASIAROOT= sometarget". If it is set but
145 # empty, we'll act as if it's unset and not warn.
146 ifneq ($(strip $(EURASIAROOT)),$(_GUESSED_EURASIAROOT))
147 nothing :=
148 space := $(nothing) $(nothing)
149 $(warning EURASIAROOT is set (via: $(origin EURASIAROOT)), but its value does not)
150 $(warning match the root of this source tree, so it is being ignored)
151 $(warning EURASIAROOT is set to: $(EURASIAROOT))
152 $(warning $(space)The detected root is: $(_GUESSED_EURASIAROOT))
153 $(warning To suppress this message, unset EURASIAROOT or set it empty)
154 endif
155 # else, EURASIAROOT matched the actual root of the source tree: don't warn
156 endif
157 override EURASIAROOT := $(_GUESSED_EURASIAROOT)
158 TOP := $(EURASIAROOT)
160 ifneq ($(words $(TOP)),1)
161 $(warning This source tree is located in a path which contains whitespace,)
162 $(warning which is not supported.)
163 $(warning $(space)The root is: $(TOP))
164 $(error Whitespace found in $$(TOP))
165 endif
167 $(call directory-must-exist,$(TOP))
169 include ../defs.mk
171 # Infer PVR_BUILD_DIR from the directory configuration is launched from.
172 # Check anyway that such a directory exists.
174 PVR_BUILD_DIR := $(notdir $(abspath .))
175 $(call directory-must-exist,$(TOP)/eurasiacon/build/linux2/$(PVR_BUILD_DIR))
177 # Output directory for configuration, object code,
178 # final programs/libraries, and install/rc scripts.
180 BUILD   ?= release
181 OUT             ?= $(TOP)/eurasiacon/binary2_$(PVR_BUILD_DIR)_$(BUILD)
182 override OUT := $(if $(filter /%,$(OUT)),$(OUT),$(TOP)/$(OUT))
184 CONFIG_MK                       := $(OUT)/config.mk
185 CONFIG_H                        := $(OUT)/config.h
186 CONFIG_KERNEL_MK        := $(OUT)/config_kernel.mk
187 CONFIG_KERNEL_H         := $(OUT)/config_kernel.h
189 # Convert commas to spaces in $(D). This is so you can say "make
190 # D=config-changes,freeze-config" and have $(filter config-changes,$(D))
191 # still work.
192 comma := ,
193 empty :=
194 space := $(empty) $(empty)
195 override D := $(subst $(comma),$(space),$(D))
197 # Create the OUT directory and delete any previous intermediary files
199 $(shell mkdir -p $(OUT))
200 $(shell \
201         for file in $(CONFIG_MK).new $(CONFIG_H).new \
202                                 $(CONFIG_KERNEL_MK).new $(CONFIG_KERNEL_H).new; do \
203                 rm -f $$file; \
204         done)
206 # Some targets don't need information about any modules. If we only specify
207 # these targets on the make command line, set INTERNAL_CLOBBER_ONLY to
208 # indicate that toplevel.mk shouldn't read any makefiles
209 CLOBBER_ONLY_TARGETS := clean clobber help install
210 INTERNAL_CLOBBER_ONLY :=
211 ifneq ($(strip $(MAKECMDGOALS)),)
212 INTERNAL_CLOBBER_ONLY := \
213 $(if \
214  $(strip $(foreach _cmdgoal,$(MAKECMDGOALS),\
215           $(if $(filter $(_cmdgoal),$(CLOBBER_ONLY_TARGETS)),,x))),,true)
216 endif
218 # For a clobber-only build, we shouldn't regenerate any config files, or
219 # require things like SGXCORE to be set
220 ifneq ($(INTERNAL_CLOBBER_ONLY),true)
222 # These are defined by the core build system, but we might need them
223 # earlier to feature-check the compilers
225 _CC             := $(if $(filter default,$(origin CC)),gcc,$(CC))
226 _CLANG  := \
227  $(shell $(TOP)/eurasiacon/build/linux2/tools/cc-check.sh --clang --cc $(_CC))
228 ifeq ($(_CLANG),true)
229 _CC             := $(_CC) -target $(patsubst %-,%,$(CROSS_COMPILE))
230 else
231 _CC             := $(CROSS_COMPILE)$(_CC)
232 endif
233 HOST_CC ?= gcc
235 -include ../config/user-defs.mk
237 # FIXME: Backwards compatibility remaps.
239 ifeq ($(SUPPORT_SLC),1)
240 SGX_FEATURE_SYSTEM_CACHE := 1
241 endif
242 ifeq ($(BYPASS_SLC),1)
243 SGX_BYPASS_SYSTEM_CACHE := 1
244 endif
245 ifeq ($(BYPASS_DCU),1)
246 SGX_BYPASS_DCU := 1
247 endif
248 ifneq ($(SGXCOREREV),)
249 SGX_CORE_REV := $(SGXCOREREV)
250 endif
252 # Core handling
254 ifeq ($(SGXCORE),)
255 $(error Must specify SGXCORE)
256 endif
257 ifeq ($(SGX_CORE_REV),)
258 override USE_SGX_CORE_REV_HEAD := 1
259 else ifeq ($(SGX_CORE_REV),000)
260 override USE_SGX_CORE_REV_HEAD := 1
261 override SGX_CORE_REV :=
262 else
263 override USE_SGX_CORE_REV_HEAD := 0
264 endif
266 # Enforced dependencies. Move this to an include.
268 ifeq ($(SUPPORT_LINUX_USING_WORKQUEUES),1)
269 override PVR_LINUX_USING_WORKQUEUES := 1
270 override PVR_LINUX_MISR_USING_PRIVATE_WORKQUEUE := 1
271 override PVR_LINUX_TIMERS_USING_WORKQUEUES := 1
272 override SYS_CUSTOM_POWERLOCK_WRAP := 1
273 else ifeq ($(SUPPORT_LINUX_USING_SHARED_WORKQUEUES),1)
274 override PVR_LINUX_USING_WORKQUEUES := 1
275 override PVR_LINUX_MISR_USING_WORKQUEUE := 1
276 override PVR_LINUX_TIMERS_USING_SHARED_WORKQUEUE := 1
277 override SYS_CUSTOM_POWERLOCK_WRAP := 1
278 endif
280 ifneq ($(PDUMP),1)
281 override SUPPORT_PDUMP_MULTI_PROCESS := 0
282 endif
284 ifeq ($(SUPPORT_HYBRID_PB),1)
285 override SUPPORT_SHARED_PB := 1
286 override SUPPORT_PERCONTEXT_PB := 1
287 else ifeq ($(SUPPORT_PERCONTEXT_PB),1)
288 override SUPPORT_SHARED_PB := 0
289 endif
291 ifeq ($(NO_HARDWARE),1)
292 override SYS_USING_INTERRUPTS := 0
293 override SUPPORT_HW_RECOVERY := 0
294 override SUPPORT_ACTIVE_POWER_MANAGEMENT := 0
295 endif
297 ifeq ($(SGX_FEATURE_36BIT_MMU),1)
298 override IMG_ADDRSPACE_PHYSADDR_BITS := 64
299 else
300 override IMG_ADDRSPACE_PHYSADDR_BITS := 32
301 endif
303 ifeq ($(SGXCORE),535)
304 ifeq ($(PVRSRV_USSE_EDM_STATUS_DEBUG),1)
305 SUPPORT_SGX_HWPERF ?= not-overridden
306 ifeq ($(SUPPORT_SGX_HWPERF),not-overridden)
307 $(warning Setting SUPPORT_SGX_HWPERF=0 because PVRSRV_USSE_EDM_STATUS_DEBUG=1)
308 SUPPORT_SGX_HWPERF := 0
309 endif
310 endif
311 PVR2D_ALT_2DHW ?= 0
312 endif
314 # Multi-core handling must be done separately to other options
315 # Also do some sanity checks
317 ifeq ($(SGX_FEATURE_MP),1)
318 ifeq ($(SGX_FEATURE_MP_CORE_COUNT),)
319 ifeq ($(SGX_FEATURE_MP_CORE_COUNT_TA),)
320 $(error Must specify SGX_FEATURE_MP_CORE_COUNT or both SGX_FEATURE_MP_CORE_COUNT_TA and SGX_FEATURE_MP_CORE_COUNT_3D with SGX_FEATURE_MP)
321 else
322 $(eval $(call BothConfigC,SGX_FEATURE_MP_CORE_COUNT_TA,$(SGX_FEATURE_MP_CORE_COUNT_TA)))
323 endif
324 ifeq ($(SGX_FEATURE_MP_CORE_COUNT_3D),)
325 $(error Must specify SGX_FEATURE_MP_CORE_COUNT or both SGX_FEATURE_MP_CORE_COUNT_TA and SGX_FEATURE_MP_CORE_COUNT_3D with SGX_FEATURE_MP)
326 else
327 $(eval $(call BothConfigC,SGX_FEATURE_MP_CORE_COUNT_3D,$(SGX_FEATURE_MP_CORE_COUNT_3D)))
328 endif
329 else
330 $(eval $(call BothConfigC,SGX_FEATURE_MP_CORE_COUNT,$(SGX_FEATURE_MP_CORE_COUNT)))
331 endif
332 endif
334 # Rather than requiring the user to have to define two variables (one quoted,
335 # one not), make PVRSRV_MODNAME a non-tunable and give it an overridable
336 # default here.
338 PVRSRV_MODNAME ?= pvrsrvkm
340 # Normally builds don't touch this, but we use it to influence the components
341 # list. Make sure it is defined early enough to make this possible.
343 SUPPORT_PVRSRV_DEVICE_CLASS ?= 1
345 # The user didn't set CROSS_COMPILE. There's probably nothing wrong
346 # with that, but we'll let them know anyway.
348 ifeq ($(CROSS_COMPILE),)
349 $(warning CROSS_COMPILE is not set. Target components will be built with the host compiler)
350 endif
352 # The user is trying to set one of the old SUPPORT_ options on the
353 # command line or in the environment. This isn't supported any more
354 # and will often break the build. The user is generally only trying
355 # to remove a component from the list of targets to build, so we'll
356 # point them at the new way of doing this.
357 define sanity-check-support-option-origin
358 ifeq ($$(filter undefined file,$$(origin $(1))),)
359 $$(warning *** Setting $(1) via $$(origin $(1)) is deprecated)
360 $$(error If you are trying to disable a component, use e.g. EXCLUDED_APIS="opengles1 opengl")
361 endif
362 endef
363 $(foreach _o,SYS_CFLAGS SYS_CXXFLAGS SYS_INCLUDES SYS_EXE_LDFLAGS SYS_LIB_LDFLAGS SYS_EXE_LDFLAGS_CXX SYS_LIB_LDFLAGS_CXX SUPPORT_EWS SUPPORT_OPENGLES1 SUPPORT_OPENGLES2 SUPPORT_OPENCL SUPPORT_RSCOMPUTE SUPPORT_OPENGL SUPPORT_UNITTESTS SUPPORT_XORG,$(eval $(call sanity-check-support-option-origin,$(_o))))
365 # Check for words in EXCLUDED_APIS that aren't understood by the
366 # common/apis/*.mk files. This should be kept in sync with all the tests on
367 # EXCLUDED_APIS in those files
368 _excludable_apis := rscompute opencl opengl opengles1 opengles2 openvg ews unittests xorg xorg_unittests scripts composerhal camerahal memtrackhal
369 _excluded_apis := $(subst $(comma),$(space),$(EXCLUDED_APIS))
370 _unrecognised := $(strip $(filter-out $(_excludable_apis),$(_excluded_apis)))
371 ifneq ($(_unrecognised),)
372 $(warning *** Unrecognised entries in EXCLUDED_APIS: $(_unrecognised))
373 $(warning *** EXCLUDED_APIS was set via: $(origin EXCLUDED_APIS))
374 $(error Excludable APIs are: $(_excludable_apis))
375 endif
377 override EXCLUDED_APIS := $(filter $(_excludable_apis), $(_excluded_apis))
379 # Build's selected list of components
381 -include components.mk
383 # PDUMP needs extra components
385 ifeq ($(PDUMP),1)
386 ifneq ($(COMPONENTS),)
387 COMPONENTS += pdump
388 endif
389 ifeq ($(SUPPORT_DRI_DRM),1)
390 EXTRA_PVRSRVKM_COMPONENTS += dbgdrv
391 else
392 KERNEL_COMPONENTS += dbgdrv
393 endif
394 endif
396 ifeq ($(SUPPORT_PVR_REMOTE),1)
397 ifneq ($(filter pvr2d,$(COMPONENTS)),)
398 COMPONENTS += null_pvr2d_remote
399 endif
400 COMPONENTS += pvrvncsrv
401 COMPONENTS += pvrvncinput
402 endif
404 $(if $(filter config,$(D)),$(info Build configuration:))
406 ################################# CONFIG ####################################
408 # If KERNELDIR is set, write it out to the config.mk, with
409 # KERNEL_COMPONENTS and KERNEL_ID
411 ifneq ($(strip $(KERNELDIR)),)
412 include ../kernel_version.mk
413 PVRSRV_MODULE_BASEDIR ?= /lib/modules/$(KERNEL_ID)/extra/
414 $(eval $(call KernelConfigMake,KERNELDIR,$(KERNELDIR)))
415 # Needed only by install script
416 $(eval $(call KernelConfigMake,KERNEL_COMPONENTS,$(KERNEL_COMPONENTS)))
417 $(eval $(call TunableKernelConfigMake,EXTRA_PVRSRVKM_COMPONENTS,))
418 $(eval $(call TunableKernelConfigMake,EXTRA_KBUILD_SOURCE,))
420 # If KERNEL_CROSS_COMPILE is set to "undef", this is magically
421 # equivalent to being unset. If it is unset, we use CROSS_COMPILE
422 # (which might also be unset). If it is set, use it directly.
423 ifneq ($(KERNEL_CROSS_COMPILE),undef)
424 KERNEL_CROSS_COMPILE ?= $(CROSS_COMPILE)
425 $(eval $(call TunableBothConfigMake,KERNEL_CROSS_COMPILE,))
426 endif
428 # Check the KERNELDIR has a kernel built.
429 VMLINUX := $(strip $(wildcard $(KERNELDIR)/vmlinux))
430 LINUXCFG := $(strip $(wildcard $(KERNELDIR)/.config))
432 ifneq ($(VMLINUX),)
433 ifneq ($(shell file $(KERNELDIR)/vmlinux | grep 64-bit >/dev/null && echo 1),$(shell $(_CC) -dM -E - </dev/null | grep __x86_64__ >/dev/null && echo 1))
434 $(error Attempting to build 64-bit DDK against 32-bit kernel, or 32-bit DDK against 64-bit kernel. This is not allowed.)
435 endif
436 VMLINUX_IS_64BIT := $(shell file $(VMLINUX) | grep 64-bit >/dev/null || echo false)
437 VMLINUX_HAS_PAE36 := $(shell cat $(LINUXCFG) | grep CONFIG_X86_PAE=y >/dev/null || echo false)
438 VMLINUX_HAS_PAE40 := $(shell cat $(LINUXCFG) | grep CONFIG_ARM_LPAE=y >/dev/null || echo false)
439 VMLINUX_HAS_DMA32 := $(shell cat $(LINUXCFG) | grep CONFIG_ZONE_DMA32=y >/dev/null || echo false)
441 # $(error 64BIT=$(VMLINUX_IS_64BIT) PAE36=$(VMLINUX_HAS_PAE36) PAE40=$(VMLINUX_HAS_PAE40) DMA32=$(VMLINUX_HAS_DMA32) MMU36=$(SGX_FEATURE_36BIT_MMU))
443 ifneq ($(VMLINUX_IS_64BIT),false)
444 $(warning $$(KERNELDIR)/vmlinux: Note: vmlinux is 64-bit, which is supported but currently experimental.)
445 endif
446 else
447 $(warning $$(KERNELDIR)/vmlinux does not exist. Kbuild may fail.)
448 endif
449 endif
451 ifneq ($(VMLINUX_HAS_PAE40),false)
452 ifeq ($(VMLINUX_HAS_DMA32),false)
453 $(warning SGX MMUs are currently supported up to only 36 bits max. Your Kernel is built with 40-bit PAE but does not have CONFIG_ZONE_DMA32.)
454 $(warning This means you must ensure the runtime system has <= 4GB of RAM, or there will be BIG problems...)
455 endif 
456 endif
458 ifneq ($(SGX_FEATURE_36BIT_MMU),1)
459 ifneq ($(VMLINUX_IS_64BIT),false)
460 # Kernel is 64-bit
461 ifeq ($(VMLINUX_HAS_DMA32),false)
462 $(warning SGX is configured with 32-bit MMU. Your Kernel is 64-bit but does not have CONFIG_ZONE_DMA32.)
463 $(warning This means you must ensure the runtime system has <= 4GB of RAM, or there will be BIG problems...)
464 endif
465 else
466  # Kernel is 32-bit
467 ifneq ($(VMLINUX_HAS_PAE36),false)
468 ifeq ($(VMLINUX_HAS_DMA32),false)
469 $(warning SGX is configured with 32-bit MMU. Your Kernel is 32-bit PAE, but does not have CONFIG_ZONE_DMA32. )
470 $(warning This means you must ensure the runtime system has <= 4GB of RAM, or there will be BIG problems...)
471 endif
472 endif
473 endif
474 endif
477 # Ideally configured by platform Makefiles, as necessary
480 # Invariant options for Linux
482 $(eval $(call BothConfigC,LINUX,))
484 $(eval $(call BothConfigC,PVR_BUILD_DIR,"\"$(PVR_BUILD_DIR)\""))
485 $(eval $(call BothConfigC,PVR_BUILD_TYPE,"\"$(BUILD)\""))
486 $(eval $(call BothConfigC,PVRSRV_MODNAME,"\"$(PVRSRV_MODNAME)\""))
488 $(eval $(call TunableBothConfigC,SGXCORE,))
489 $(eval $(call BothConfigC,SGX$(SGXCORE),))
490 $(eval $(call BothConfigC,SUPPORT_SGX$(SGXCORE),))
492 $(eval $(call TunableBothConfigC,SUPPORT_SGX,1))
493 $(eval $(call TunableBothConfigC,SGX_CORE_REV,))
494 $(eval $(call TunableBothConfigC,USE_SGX_CORE_REV_HEAD,))
496 $(eval $(call BothConfigC,TRANSFER_QUEUE,))
497 $(eval $(call BothConfigC,PVR_SECURE_HANDLES,))
499 # Support syncing LISR & MISR. This is required for OS's where
500 # on SPM platforms the LISR and MISR can run at the same time and
501 # thus during powerdown we need to drain all pending LISRs before
502 # proceeding to do the actual powerdown
503 $(eval $(call KernelConfigC,SUPPORT_LISR_MISR_SYNC))
505 ifneq ($(DISPLAY_CONTROLLER),)
506 $(eval $(call BothConfigC,DISPLAY_CONTROLLER,$(DISPLAY_CONTROLLER)))
507 endif
509 ifneq ($(strip $(KERNELDIR)),)
510 PVR_LINUX_MEM_AREA_POOL_MAX_PAGES ?= 0
511 ifneq ($(PVR_LINUX_MEM_AREA_POOL_MAX_PAGES),0)
512 PVR_LINUX_MEM_AREA_USE_VMAP ?= 1
513 include ../kernel_version.mk
514 ifeq ($(call kernel-version-at-least,3,0),true)
515 PVR_LINUX_MEM_AREA_POOL_ALLOW_SHRINK ?= 1
516 endif
517 endif
518 $(eval $(call KernelConfigC,PVR_LINUX_MEM_AREA_POOL_MAX_PAGES,$(PVR_LINUX_MEM_AREA_POOL_MAX_PAGES)))
519 $(eval $(call TunableKernelConfigC,PVR_LINUX_MEM_AREA_USE_VMAP,))
520 $(eval $(call TunableKernelConfigC,PVR_LINUX_MEM_AREA_POOL_ALLOW_SHRINK,))
521 endif
524 $(eval $(call BothConfigMake,PVR_SYSTEM,$(PVR_SYSTEM)))
527 # Build-type dependent options
529 $(eval $(call BothConfigMake,BUILD,$(BUILD)))
531 ifeq ($(BUILD),debug)
532 $(eval $(call BothConfigC,DEBUG,))
533 $(eval $(call KernelConfigC,DEBUG_LINUX_MEMORY_ALLOCATIONS,))
534 $(eval $(call KernelConfigC,DEBUG_LINUX_MEM_AREAS,))
535 $(eval $(call KernelConfigC,DEBUG_LINUX_MMAP_AREAS,))
536 $(eval $(call KernelConfigC,DEBUG_BRIDGE_KM,))
537 else ifeq ($(BUILD),release)
538 $(eval $(call BothConfigC,RELEASE,))
539 $(eval $(call TunableBothConfigMake,DEBUGLINK,1))
540 else ifeq ($(BUILD),timing)
541 $(eval $(call BothConfigC,TIMING,))
542 $(eval $(call TunableBothConfigMake,DEBUGLINK,1))
543 else
544 $(error BUILD= must be either debug, release or timing)
545 endif
547 # User-configurable options
549 $(eval $(call TunableBothConfigC,SUPPORT_PERCONTEXT_PB,1))
550 $(eval $(call TunableBothConfigC,SUPPORT_SHARED_PB,))
551 $(eval $(call TunableBothConfigC,SUPPORT_HYBRID_PB,))
552 $(eval $(call TunableBothConfigC,SUPPORT_HW_RECOVERY,1))
553 $(eval $(call TunableBothConfigC,SUPPORT_ACTIVE_POWER_MANAGEMENT,1))
554 $(eval $(call TunableBothConfigC,SUPPORT_SGX_HWPERF,1))
555 $(eval $(call TunableBothConfigC,SUPPORT_SGX_LOW_LATENCY_SCHEDULING,1))
556 $(eval $(call TunableBothConfigC,SUPPORT_MEMINFO_IDS,))
557 $(eval $(call TunableBothConfigC,SUPPORT_SGX_NEW_STATUS_VALS,1))
558 $(eval $(call TunableBothConfigC,SUPPORT_PDUMP_MULTI_PROCESS,))
559 $(eval $(call TunableBothConfigC,SUPPORT_DBGDRV_EVENT_OBJECTS,1))
560 $(eval $(call TunableBothConfigC,SGX_FEATURE_SYSTEM_CACHE,))
561 $(eval $(call TunableBothConfigC,SGX_BYPASS_SYSTEM_CACHE,))
562 $(eval $(call TunableBothConfigC,SGX_BYPASS_DCU,))
563 $(eval $(call TunableBothConfigC,SGX_FAST_DPM_INIT,))
564 $(eval $(call TunableBothConfigC,SGX_FEATURE_MP,))
565 $(eval $(call TunableBothConfigC,SGX_FEATURE_MP_PLUS,))
566 $(eval $(call TunableBothConfigC,FPGA,))
567 $(eval $(call TunableBothConfigC,PDUMP,))
568 $(eval $(call TunableBothConfigC,MEM_TRACK_INFO_DEBUG,))
569 $(eval $(call TunableBothConfigC,NO_HARDWARE,))
570 $(eval $(call TunableBothConfigC,PDUMP_DEBUG_OUTFILES,))
571 $(eval $(call TunableBothConfigC,PVRSRV_USSE_EDM_STATUS_DEBUG,))
572 $(eval $(call TunableBothConfigC,PVRSRV_RESET_ON_HWTIMEOUT,))
573 $(eval $(call TunableBothConfigC,SYS_USING_INTERRUPTS,1))
574 $(eval $(call TunableBothConfigC,SUPPORT_EXTERNAL_SYSTEM_CACHE,))
575 $(eval $(call TunableBothConfigC,PVRSRV_NEW_PVR_DPF,))
576 $(eval $(call TunableBothConfigC,PVRSRV_NEED_PVR_DPF,))
577 $(eval $(call TunableBothConfigC,PVRSRV_NEED_PVR_ASSERT,))
578 $(eval $(call TunableBothConfigC,PVRSRV_NEED_PVR_TRACE,))
579 $(eval $(call TunableBothConfigC,SUPPORT_SECURE_33657_FIX,))
580 $(eval $(call TunableBothConfigC,SUPPORT_ION,))
581 $(eval $(call TunableBothConfigC,SUPPORT_HWRECOVERY_TRACE_LIMIT,))
582 $(eval $(call TunableBothConfigC,SUPPORT_PVRSRV_DEVICE_CLASS,))
583 $(eval $(call TunableBothConfigC,SUPPORT_PVRSRV_GET_DC_SYSTEM_BUFFER,1))
584 $(eval $(call TunableBothConfigC,SUPPORT_NV12_FROM_2_HWADDRS,))
585 $(eval $(call TunableBothConfigC,SGX_FEATURE_36BIT_MMU,))
586 $(eval $(call TunableBothConfigC,IMG_ADDRSPACE_PHYSADDR_BITS,))
587 $(eval $(call TunableBothConfigC,PVRSRV_EXTRA_PB_DEBUG,))
588 $(eval $(call TunableBothConfigC,PVRSRV_DEBUG_CCB_MAX,))
590 $(eval $(call TunableKernelConfigC,SUPPORT_LINUX_X86_WRITECOMBINE,1))
591 $(eval $(call TunableKernelConfigC,SUPPORT_LINUX_X86_PAT,1))
592 $(eval $(call TunableKernelConfigC,SGX_DYNAMIC_TIMING_INFO,))
593 $(eval $(call TunableKernelConfigC,SYS_SGX_ACTIVE_POWER_LATENCY_MS,))
594 $(eval $(call TunableKernelConfigC,SYS_CUSTOM_POWERLOCK_WRAP,))
595 $(eval $(call TunableKernelConfigC,PVR_LINUX_USING_WORKQUEUES,))
596 $(eval $(call TunableKernelConfigC,PVR_LINUX_MISR_USING_WORKQUEUE,))
597 $(eval $(call TunableKernelConfigC,PVR_LINUX_MISR_USING_PRIVATE_WORKQUEUE,))
598 $(eval $(call TunableKernelConfigC,PVR_LINUX_TIMERS_USING_WORKQUEUES,))
599 $(eval $(call TunableKernelConfigC,PVR_LINUX_TIMERS_USING_SHARED_WORKQUEUE,))
600 $(eval $(call TunableKernelConfigC,LDM_PLATFORM,))
601 $(eval $(call TunableKernelConfigC,PVR_LDM_PLATFORM_PRE_REGISTERED,))
602 $(eval $(call TunableKernelConfigC,PVR_LDM_PLATFORM_PRE_REGISTERED_DEV,))
603 $(eval $(call TunableKernelConfigC,PVR_LDM_DRIVER_REGISTRATION_NAME,"\"$(PVRSRV_MODNAME)\""))
604 $(eval $(call TunableKernelConfigC,LDM_PCI,))
605 $(eval $(call TunableKernelConfigC,PVRSRV_DUMP_MK_TRACE,))
606 $(eval $(call TunableKernelConfigC,PVRSRV_DUMP_KERNEL_CCB,))
607 $(eval $(call TunableKernelConfigC,PVRSRV_REFCOUNT_DEBUG,))
608 $(eval $(call TunableKernelConfigC,PVRSRV_MMU_MAKE_READWRITE_ON_DEMAND,))
609 $(eval $(call TunableKernelConfigC,HYBRID_SHARED_PB_SIZE,))
610 $(eval $(call TunableKernelConfigC,SUPPORT_LARGE_GENERAL_HEAP,))
611 $(eval $(call TunableKernelConfigC,SUPPORT_OLD_ION_API,))
612 $(eval $(call TunableKernelConfigC,TTRACE,))
613 $(eval $(call TunableKernelConfigC,TTRACE_LARGE_BUFFER,))
614 $(eval $(call TunableKernelConfigC,SUPPORT_PDUMP_SYNC_DEBUG,))
615 $(eval $(call TunableKernelConfigC,SUPPORT_PER_SYNC_DEBUG,))
616 $(eval $(call TunableKernelConfigC,SUPPORT_FORCE_SYNC_DUMP,))
620 $(eval $(call TunableBothConfigMake,OPTIM,))
621 $(eval $(call TunableBothConfigMake,SUPPORT_ION,))
622 $(eval $(call TunableBothConfigMake,SUPPORT_PVRSRV_DEVICE_CLASS,))
625 $(eval $(call TunableKernelConfigMake,TTRACE,))
627 endif # INTERNAL_CLOBBER_ONLY
629 export INTERNAL_CLOBBER_ONLY
630 export TOP
631 export OUT
633 MAKE_ETC := -Rr --no-print-directory -C $(TOP) TOP=$(TOP) OUT=$(OUT) \
634                 -f eurasiacon/build/linux2/toplevel.mk
636 # This must match the default value of MAKECMDGOALS below, and the default
637 # goal in toplevel.mk
638 .DEFAULT_GOAL := build
640 ifeq ($(MAKECMDGOALS),)
641 MAKECMDGOALS := build
642 else
643 # We can't pass autogen to toplevel.mk
644 MAKECMDGOALS := $(filter-out autogen,$(MAKECMDGOALS))
645 endif
647 .PHONY: autogen
648 autogen:
649 ifeq ($(INTERNAL_CLOBBER_ONLY),)
650         @$(MAKE) -s --no-print-directory -C $(EURASIAROOT) \
651                 -f eurasiacon/build/linux2/prepare_tree.mk \
652                 LDM_PCI=$(LDM_PCI) LDM_PLATFORM=$(LDM_PLATFORM)
653 else
654         @:
655 endif
657 # This deletes built-in suffix rules. Otherwise the submake isn't run when
658 # saying e.g. "make thingy.a"
659 .SUFFIXES:
661 # Because we have a match-anything rule below, we'll run the main build when
662 # we're actually trying to remake various makefiles after they're read in.
663 # These rules try to prevent that
664 %.mk: ;
665 Makefile%: ;
666 Makefile: ;
668 .PHONY: build kbuild install
669 build kbuild install: autogen
670         @$(if $(MAKECMDGOALS),$(MAKE) $(MAKE_ETC) $(MAKECMDGOALS) $(eval MAKECMDGOALS :=),:)
672 %: autogen
673         @$(if $(MAKECMDGOALS),$(MAKE) $(MAKE_ETC) $(MAKECMDGOALS) $(eval MAKECMDGOALS :=),:)