<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=ROM_Android%3A_Compile_Kernel_untuk_MediaTek</id>
	<title>ROM Android: Compile Kernel untuk MediaTek - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=ROM_Android%3A_Compile_Kernel_untuk_MediaTek"/>
	<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;action=history"/>
	<updated>2026-04-26T16:23:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;diff=41715&amp;oldid=prev</id>
		<title>Onnowpurbo at 22:50, 30 December 2014</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;diff=41715&amp;oldid=prev"/>
		<updated>2014-12-30T22:50:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;amp;diff=41715&amp;amp;oldid=41714&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;diff=41714&amp;oldid=prev</id>
		<title>Onnowpurbo: /* Referensi */</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;diff=41714&amp;oldid=prev"/>
		<updated>2014-12-30T22:47:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Referensi&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:47, 30 December 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MTK Kernel Builder   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MTK Kernel Builder   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l166&quot;&gt;Line 166:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 165:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* http://hubeihuyanwei.blog.163.com/blog/static/28205284201282444441662/&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* http://hubeihuyanwei.blog.163.com/blog/static/28205284201282444441662/&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* https://www.facebook.com/androidevn/posts/823618704330578&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;diff=41713&amp;oldid=prev</id>
		<title>Onnowpurbo: New page:  MTK Kernel Builder    2012-09-24 16:44:41|  分类： Android |  标签：kernel  android  makefile   |举报 |字号 订阅 KConfig 流程 关心点1： kernel builder: @makeMtk    make ...</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=ROM_Android:_Compile_Kernel_untuk_MediaTek&amp;diff=41713&amp;oldid=prev"/>
		<updated>2014-12-30T22:45:01Z</updated>

		<summary type="html">&lt;p&gt;New page:  MTK Kernel Builder    2012-09-24 16:44:41|  分类： Android |  标签：kernel  android  makefile   |举报 |字号 订阅 KConfig 流程 关心点1： kernel builder: @makeMtk    make ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
MTK Kernel Builder  &lt;br /&gt;
&lt;br /&gt;
2012-09-24 16:44:41|  分类： Android |  标签：kernel  android  makefile   |举报 |字号 订阅&lt;br /&gt;
KConfig 流程&lt;br /&gt;
关心点1：&lt;br /&gt;
kernel builder:&lt;br /&gt;
@makeMtk&lt;br /&gt;
   make -f mediatek/build/makemtk.mk kernel&lt;br /&gt;
&lt;br /&gt;
@mediatek/build/makemtk.mk&lt;br /&gt;
  kernel/build.sh &lt;br /&gt;
&lt;br /&gt;
@kernel/build.sh &lt;br /&gt;
  make mediatek-configs&lt;br /&gt;
  nice make ${makeflags} ${makedefs} silentoldconfig&lt;br /&gt;
  make ${makeflags} ${makejobs} ${makedefs}&lt;br /&gt;
   &lt;br /&gt;
mediatek-configs 目标是怎么回事? 原来：&lt;br /&gt;
    @kernel/Makefile  &lt;br /&gt;
include $(srctree)/arch/$(SRCARCH)/Makefile&lt;br /&gt;
    @kernel/arch/arm/Makefile&lt;br /&gt;
include ../mediatek/build/kernel/Makefile&lt;br /&gt;
    @mediatek/build/kernel/Makefile&lt;br /&gt;
.config mediatek-configs: $(MTK_ROOT_GEN_CONFIG)/kconfig $(MTK_ROOT_GEN_CONFIG)&lt;br /&gt;
        @echo &amp;quot;[COPY] $&amp;lt; --&amp;gt; $@&amp;quot;&lt;br /&gt;
        @cp $&amp;lt; $@&lt;br /&gt;
        @echo &amp;quot;[COPY] $&amp;lt; --&amp;gt; .config&amp;quot;&lt;br /&gt;
        @cp $&amp;lt; .config&lt;br /&gt;
&lt;br /&gt;
@kernel/Kconfig&lt;br /&gt;
  source &amp;quot;arch/$SRCARCH/Kconfig&amp;quot;&lt;br /&gt;
@alps/kernel/arch/arm/Kconfig&lt;br /&gt;
source &amp;quot;../mediatek/source/kernel/Kconfig&amp;quot;&lt;br /&gt;
@alps/mediatek/source/kernel/Kconfig&lt;br /&gt;
 31 if ARCH_MT6573&lt;br /&gt;
 32 source &amp;quot;../mediatek/platform/mt6573/kernel/Kconfig/Kernel&amp;quot;&lt;br /&gt;
 33 source &amp;quot;../mediatek/platform/mt6573/kernel/Kconfig/Board&amp;quot;&lt;br /&gt;
 34 source &amp;quot;../mediatek/platform/mt6573/kernel/Kconfig/Drivers&amp;quot;&lt;br /&gt;
 35 endif&lt;br /&gt;
&lt;br /&gt;
@mediatek/platform/mt6573/kernel/Kconfig/Drivers&lt;br /&gt;
 34 # Frame Buffer Related&lt;br /&gt;
 35 menuconfig MTK_FB # FB_MT6516 FB_MT6573&lt;br /&gt;
 36         bool &amp;quot;MediaTek Framebuffer Driver&amp;quot;&lt;br /&gt;
 37         depends on FB&lt;br /&gt;
 38         select FB_CFB_FILLRECT&lt;br /&gt;
 39         select FB_CFB_COPYAREA&lt;br /&gt;
 40         select FB_CFB_IMAGEBLIT&lt;br /&gt;
 41         select FB_SOFT_CURSOR&lt;br /&gt;
 42         ---help---&lt;br /&gt;
 43           This selects the MediaTek(R) frame buffer driver.&lt;br /&gt;
 44           If you want to use MediaTek(R) frame buffer diver, say Y here.&lt;br /&gt;
 45           If unsure, say N.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
关心点2：&lt;br /&gt;
menuconfig是从哪里来？这样解释：&lt;br /&gt;
&lt;br /&gt;
@alps/kernel/Makefile&lt;br /&gt;
%config: scripts_basic outputmakefile FORCE&lt;br /&gt;
        $(Q)mkdir -p include/linux include/config&lt;br /&gt;
        $(Q)$(MAKE) $(build)=scripts/kconfig $@&lt;br /&gt;
&lt;br /&gt;
关于最后的一条命令： 我打印出来是这样的效果:&lt;br /&gt;
make -f scripts/Makefile.build obj=scripts/kconfig menuconfig&lt;br /&gt;
&lt;br /&gt;
不知道$(build)变量是怎么计算出来的，后来发现是这样的：&lt;br /&gt;
@kernel/Makefile &lt;br /&gt;
329 include $(srctree)/scripts/Kbuild.include&lt;br /&gt;
&lt;br /&gt;
@kernel/scripts/Kbuild.include&lt;br /&gt;
156 ###&lt;br /&gt;
157 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=&lt;br /&gt;
158 # Usage:&lt;br /&gt;
159 # $(Q)$(MAKE) $(build)=dir&lt;br /&gt;
160 build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj&lt;br /&gt;
&lt;br /&gt;
这样，就解析出来了上面的东西，&lt;br /&gt;
&lt;br /&gt;
@kernel/scripts/Makefile.build&lt;br /&gt;
 41 # The filename Kbuild has precedence over Makefile&lt;br /&gt;
 42 kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))&lt;br /&gt;
 43 kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)&lt;br /&gt;
 44 include $(kbuild-file)&lt;br /&gt;
这样就将 kernel/scripts/kconfig/Makefile 包含进去了。&lt;br /&gt;
查看文件 kernel/scripts/kconfig/Makefile 也就不用我多说了：&lt;br /&gt;
@scripts/kconfig/Makefile&lt;br /&gt;
xconfig: $(obj)/qconf&lt;br /&gt;
        $&amp;lt; $(Kconfig)&lt;br /&gt;
&lt;br /&gt;
gconfig: $(obj)/gconf&lt;br /&gt;
        $&amp;lt; $(Kconfig)&lt;br /&gt;
&lt;br /&gt;
menuconfig: $(obj)/mconf&lt;br /&gt;
        $&amp;lt; $(Kconfig)&lt;br /&gt;
&lt;br /&gt;
config: $(obj)/conf&lt;br /&gt;
        $&amp;lt; --oldaskconfig $(Kconfig)&lt;br /&gt;
&lt;br /&gt;
nconfig: $(obj)/nconf&lt;br /&gt;
        $&amp;lt; $(Kconfig)&lt;br /&gt;
&lt;br /&gt;
oldconfig: $(obj)/conf&lt;br /&gt;
        $&amp;lt; --$@ $(Kconfig)&lt;br /&gt;
&lt;br /&gt;
silentoldconfig: $(obj)/conf&lt;br /&gt;
        $(Q)mkdir -p include/generated&lt;br /&gt;
        $&amp;lt; --$@ $(Kconfig)&lt;br /&gt;
        cp -f include/generated/autoconf.h include/linux/autoconf.h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
关心点3：&lt;br /&gt;
.config 文件最终还会被更新一次：查看kernel log&lt;br /&gt;
[COPY] ../mediatek/config/out/s816_bef/autoconfig/kconfig --&amp;gt; mediatek-configs&lt;br /&gt;
[COPY] ../mediatek/config/out/s816_bef/autoconfig/kconfig --&amp;gt; .config&lt;br /&gt;
  HOSTCC  scripts/kconfig/conf.o&lt;br /&gt;
  SHIPPED scripts/kconfig/zconf.tab.c&lt;br /&gt;
  SHIPPED scripts/kconfig/lex.zconf.c&lt;br /&gt;
  SHIPPED scripts/kconfig/zconf.hash.c&lt;br /&gt;
  HOSTCC  scripts/kconfig/zconf.tab.o&lt;br /&gt;
  HOSTLD  scripts/kconfig/conf&lt;br /&gt;
scripts/kconfig/conf --silentoldconfig Kconfig&lt;br /&gt;
#&lt;br /&gt;
# configuration written to .config&lt;br /&gt;
#&lt;br /&gt;
cp -f include/generated/autoconf.h include/linux/autoconf.h&lt;br /&gt;
&lt;br /&gt;
看kernel config 的程序 scripts/kconfig/conf 里面的代码有：&lt;br /&gt;
scripts/kconfig/confdata.c:66:  char *name = getenv(&amp;quot;KCONFIG_CONFIG&amp;quot;);&lt;br /&gt;
而@Makefile&lt;br /&gt;
240:KCONFIG_CONFIG     ?= .config&lt;br /&gt;
export KCONFIG_CONFIG&lt;br /&gt;
可以获知这样的信息。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
mediatek/config/out/s816_bef/autoconfig/kconfig: mediatek/config/mt6575/autoconfig/kconfig/platform &lt;br /&gt;
&lt;br /&gt;
mediatek/config/common/autoconfig/kconfig/AEE mediatek/config/s816_bef/autoconfig/kconfig/project &lt;br /&gt;
&lt;br /&gt;
mediatek/config/out/s816_bef/autoconfig&lt;br /&gt;
@echo &amp;quot;[CONFIG] generate mediatek/config/out/s816_bef/autoconfig/kconfig&amp;quot;&lt;br /&gt;
@cat mediatek/config/mt6575/autoconfig/kconfig/platform mediatek/config/common/autoconfig/kconfig/AEE &lt;br /&gt;
&lt;br /&gt;
mediatek/config/s816_bef/autoconfig/kconfig/project  | python mediatek/build/tools/config/merge-kconfig.py &amp;gt; &lt;br /&gt;
&lt;br /&gt;
mediatek/config/out/s816_bef/autoconfig/kconfig&lt;br /&gt;
&lt;br /&gt;
查了一下应该是：&lt;br /&gt;
define .mtk.config.generate-auto-merge-rules&lt;br /&gt;
.PHONY: mediatek-configs.$(1)&lt;br /&gt;
mediatek-configs: mediatek-configs.$(1)&lt;br /&gt;
mediatek-configs.$(1): $(2)&lt;br /&gt;
$(2): PRIVATE_FILE_LIST := $(3)&lt;br /&gt;
$(2): $(3) $(4)&lt;br /&gt;
        @echo &amp;quot;[CONFIG] generate $(2)&amp;quot;&lt;br /&gt;
        @cat $(3) | $(5) &amp;gt; $(2)&lt;br /&gt;
endef&lt;br /&gt;
&lt;br /&gt;
应该是这样类似的$(call .mtk.config.generate-auto-merge-rules,kconfig,xx.xx.xx)&lt;br /&gt;
更有可能是这样的：$(call .mtk.config.generate-auto-rules,xx,xx,xx)&lt;br /&gt;
这个就要自己去验证了。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Referensi==&lt;br /&gt;
&lt;br /&gt;
* http://hubeihuyanwei.blog.163.com/blog/static/28205284201282444441662/&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>