ROM Android: Compile Kernel untuk MediaTek
MTK KERNEL BUIDER - Cách tạo kernel hoàn chỉnh cho MTK chip
KConfig Process Concerned about point 1 : kernel builder: @ makeMtk make-f mediatek / build / makemtk.mk kernel
@ mediatek / build / makemtk.mk
kernel / build.sh
@ kernel / build.sh
make mediatek-configs
nice make $ {makeflags} $ {makedefs} silentoldconfig
make $ {makeflags} $ {makejobs} $ {makedefs}
mediatek-configs goal is how original ? : @ kernel / Makefile include $ (srctree) / arch / $ (SRCARCH) / Makefile @ kernel / arch / arm / Makefile include .. / mediatek / build / kernel / Makefile @ mediatek / build / kernel / Makefile . config mediatek-configs: $ (MTK_ROOT_GEN_CONFIG) / kconfig $ (MTK_ROOT_GEN_CONFIG) @ echo "[COPY] $ <-> $ @" @ cp $ <$ @ @ echo "[COPY] $ <->. config" @ cp $ <. config
@ kernel / Kconfig
source "arch / $ SRCARCH / Kconfig"
@ alps / kernel / arch / arm / Kconfig
source ".. / mediatek / source / kernel / Kconfig"
@ alps / mediatek / source / kernel / Kconfig
31 if ARCH_MT6573
32 source "../mediatek/platform/mt6573/kernel/Kconfig/Kernel"
33 source "../mediatek/platform/mt6573/kernel/Kconfig/Board"
34 source "../mediatek/platform/mt6573/kernel/Kconfig/Drivers"
35 endif
@ mediatek/platform/mt6573/kernel/Kconfig/Drivers
34 # Frame Buffer Related
35 menuconfig MTK_FB # FB_MT6516 FB_MT6573
36 bool "MediaTek Framebuffer Driver"
37 depends on FB
38 select FB_CFB_FILLRECT
39 select FB_CFB_COPYAREA
40 select FB_CFB_IMAGEBLIT
41 select FB_SOFT_CURSOR
42 --- help ---
43 This selects the MediaTek (R) frame buffer driver.
44 If you want to use MediaTek (R) frame buffer diver, say Y here.
45 If unsure, say N.
Point 2 concerns :
menuconfig come from ? Explained:
@ alps / kernel / Makefile
% config: scripts_basic outputmakefile FORCE
$ (Q) mkdir-p include / linux include / config
$ (Q) $ (MAKE) $ (build) = scripts / kconfig $ @
Regarding the last of a command : I print out is this effect:
make-f scripts / Makefile.build obj = scripts / kconfig menuconfig
I do not know $ (build) variable is how calculated , and later found is this:
@ kernel / Makefile
329 include $ (srctree) / scripts / Kbuild.include
@ kernel / scripts / Kbuild.include
156 # # #
157 # Shorthand for $ (Q) $ (MAKE)-f scripts / Makefile.build obj =
158 # Usage:
159 # $ (Q) $ (MAKE) $ (build) = dir
160 build: =-f $ (if $ (KBUILD_SRC), $ (srctree) /) scripts / Makefile.build obj
Thus, parsing out the above things ,
@ kernel / scripts / Makefile.build
41 # The filename Kbuild has precedence over Makefile
42 kbuild-dir: = $ (if $ (filter /%, $ (src)), $ (src), $ (srctree) / $ (src))
43 kbuild-file: = $ (if $ (wildcard $ (kbuild-dir) / Kbuild), $ (kbuild-dir) / Kbuild, $ (kbuild-dir) / Makefile)
44 include $ (kbuild-file)
This will kernel / scripts / kconfig / Makefile included into it.
View file kernel / scripts / kconfig / Makefile I also do not have much to say :
@ scripts / kconfig / Makefile
xconfig: $ (obj) / qconf
$ <$ (Kconfig)
gconfig: $ (obj) / gconf
$ <$ (Kconfig)
menuconfig: $ (obj) / mconf
$ <$ (Kconfig)
config: $ (obj) / conf
$ <- Oldaskconfig $ (Kconfig)
nconfig: $ (obj) / nconf
$ <$ (Kconfig)
oldconfig: $ (obj) / conf
$ <- $ @ $ (Kconfig)
silentoldconfig: $ (obj) / conf
$ (Q) mkdir-p include / generated $ <- $ @ $ (Kconfig) cp-f include / generated / autoconf.h include / linux / autoconf.h
Point 3 concerns :
. config file will eventually be updated once : Check kernel log
[COPY] .. / mediatek/config/out/s816_bef/autoconfig/kconfig -> mediatek-configs [COPY] .. / mediatek/config/out/s816_bef/autoconfig/kconfig -> config. HOSTCC scripts / kconfig / conf.o SHIPPED scripts / kconfig / zconf.tab.c SHIPPED scripts / kconfig / lex.zconf.c SHIPPED scripts / kconfig / zconf.hash.c HOSTCC scripts / kconfig / zconf.tab.o HOSTLD scripts / kconfig / conf scripts / kconfig / conf - silentoldconfig Kconfig # # Configuration written to. Config # cp-f include / generated / autoconf.h include / linux / autoconf.h
Look kernel config program scripts / kconfig / conf inside the code are:
scripts / kconfig / confdata.c: 66: char * name = getenv ("KCONFIG_CONFIG"); And @ Makefile 240: KCONFIG_CONFIG = config?. export KCONFIG_CONFIG You can learn this information.
mediatek/config/out/s816_bef/autoconfig/kconfig: mediatek/config/mt6575/autoconfig/kconfig/platform
mediatek / config / common / autoconfig / kconfig / AEE mediatek/config/s816_bef/autoconfig/kconfig/project
mediatek/config/out/s816_bef/autoconfig
@ echo "[CONFIG] generate mediatek/config/out/s816_bef/autoconfig/kconfig"
@ cat mediatek/config/mt6575/autoconfig/kconfig/platform mediatek / config / common / autoconfig / kconfig / AEE
mediatek/config/s816_bef/autoconfig/kconfig/project | python mediatek / build / tools / config / merge-kconfig.py>
mediatek/config/out/s816_bef/autoconfig/kconfig
Should be checked :
define. mtk.config.generate-auto-merge-rules . PHONY:. Mediatek-configs $ (1) mediatek-configs:. mediatek-configs $ (1) mediatek-configs $ (1):. $ (2) $ (2): PRIVATE_FILE_LIST: = $ (3) $ ( 2 ) : $ ( 3 ) $ ( 4 ) @ echo "[CONFIG] generate $ (2)" @ cat $ (3) | $ (5)> $ (2) endef
This should be similar to the $ (call. Mtk.config.generate-auto-merge-rules, kconfig, xx.xx.xx)
More likely is this : $ (. Call mtk.config.generate-auto-rules, xx, xx, xx)
This is necessary to validate themselves .