MTK_android开发环境配置及编译

上传人:紫** 文档编号:242875332 上传时间:2024-09-10 格式:PPT 页数:83 大小:5.77MB
返回 下载 相关 举报
MTK_android开发环境配置及编译_第1页
第1页 / 共83页
MTK_android开发环境配置及编译_第2页
第2页 / 共83页
MTK_android开发环境配置及编译_第3页
第3页 / 共83页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,MTK_android,开发环境配置及编译开发,Android,Android Anatomy,Android,Android Source Code,|- Makefile,(全局的,Makefile, make,总入口),|- bionic,(一些基础的库的源代码),|-,bootloader,(引导加载器),|- build,(是编译和配置所需要的脚本和工具),|- cts,(,cts,测试源码),|- dalvik,(,JAVA,虚拟机有关的代码),|- development,(程序开发所需要的模板和工具),|- external,(目标机器使用的一些库),|-,frameworks,(应用程序的框架层),|-,hardware,(与硬件相关的库,供,framework,调用),|-,kernel,(,Linux,内核源代码),|-,mediatek,(,MTK,平台相关代码),|- packages,(,Android,的各种应用程序),|- prebuilt,(,Android,在各种平台下编译的预置脚本),|- recovery,(与目标的恢复功能相关),|- system,(,Android,的底层的一些库以及守护进程),Environment Requirements,OS,Linux Ubuntu,10.04,(LTS, long term support version) 64bit,Memory & Disk Space,2+ G,physical memory (Avoid “JVM run out of memory” & Speed up build performance),10+G,or more disk space is needed (to build Android tree),Compilation tool chain,arm-eabi-4.4.3 (can get from released SW package, prebuilt/linux-x86/toolchain/arm-eabi-4.4.3),gcc 4.4.3,JDK,1.6,Perl, Python interpreter,Perl 5.10.X,Python 2.6.X,Environment Requirements,Make utility,GNU make 3.81 or above,Others,wine1.1 or above,bison 2.4.X, flex 2.5.X, gperf 3.0.X,mingw32 (to build win32 executable for emulator on linux host),unix2dos/tofrodos (to build windows tool for SDK package),Install Software,Required Packages & recommend installation way,Install Software,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install Ubuntu,Install Software,Install build relative packages,1.Use the following command to get these packages to install,sudo apt-get install flex bison gperf build-essential curl zlib1g-dev g+-multilib g+-4.4-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z1-dev wine mingw32 tofrodos,2. Change default sh soft link to bash,sudo rm /bin/sh,sudo ln -s /bin/bash /bin/sh,3. Install JDK 1.6 (recommended installation way), chmod a+x jdk-6u29-linux-x64.bin,./jdk-6u29-linux-x64.bin,Install Software,Configure Build Profile,gedit /.bashrc,Add you Java folder to System Path,source /.bashrc,(Not nessary, it will also be set by,mbldenv.sh,when,makeMtk,),Install Software,Configure Build Profile,gedit mbldenv.sh,then change the,Java,eabi, and,python,path for your computer,Take mine for example:,Install Software,Check Environment,If having finished installing your environment to build ALPS,You can use this command,./makeMtk check-env,to know if the environment is prepared,Install Software,Check Environment,From the sceenshot above, we know my environment is failed for my low physical memory.,Sometime our computers may not meet the lowest hardware requriement for APLS,So we need to cheat in environment check.,gedit mediatek/build/tools/checkEnv.py,Install Software,Check Environment,Now the environment is OK,Of course, you can change “,checkEnv.py,” for other failure if necessary.,Install Software,Build a new project,Take tinnopmt73_gb for Example,./makeMtk listp,You will get all the project supported in your source code,Build the whole project tinnopmt73_gb,./makeMtk tinnopmt73_gb r,Notice: If you fail in building android, try,make update-api,in ALPS root directory,Install Software,Build a new project,Install Software,Build a new project,You can review the logs in,/out/target/product, if there are any errors.,Install Software,Build a new project,You can find all you product images in,out/target/product/tinnopmt73_gb,Build ALPS,We use “makeMtk” build ALPS,If you type ./makeMtk or ./makeMtk h, you will get how to use the,makeMtk,Build ALPS,We use “makeMtk” build ALPS,Build ALPS,We use “makeMtk” build ALPS,For example,1.Build the whole project for tinnopmt73_gb,./makeMtk tinnopmt73_gb r,2.Build the Linux Kernel for tinnopmt73_gb,./makeMtk tinnopmt73_gb r k,./makeMtk tinnopmt73_gb bootimage,3. Build the Galley.apk for tinnopmt73_gb,./makeMtk tinnopmt73_gb r dr Gallery,Notice:,mk,is a link to makeMtk, so we can use,mk,to replace,makeMtk,Build ALPS,Build Scripts Introduction,1)makeMtk,./mbldenv.sh,#mentioned above, set your build env,If the following folders or files do not exsits, makeMtk will die,mediatek,mediatek/config,mediatek/build/tools,mediatek/config/$project/ProjectConfig.mk,Mainly use the following scripts,mediatek/build/makemtk.mk,Build ALPS,Build Scripts Introduction,2)makeMtk,.mk,It executes the command sent by makeMtk, like “custgen”, “rebuild”, “clean” and so on.,It will also save the,logs,for building.,Mainly uses the following scripts,mediatek/build/Makefile,defines several globe,variables in the function,codebase-path,for use,mediatek/build/custgen.mk,most important script which used by makeMtk.mk for “custgen”,Build ALPS,Build Scripts Introduction,3)custgen.mk,custgen.mk,is used to choose the source code and config for our own project.,Mainly use the following scripts,mediatek/build/,Makefile,mediatek/build/libs/,gmsl,mediatek/build/libs/,custom.mk,mediatek/build/libs/,config.mk,-The last three scripts is included in,mediatek/build/Makefile,The contents of custgen.mk is very simple,include mediatek/build/Makefile,$(call codebase-path),all: mtk-config-files mtk-custom-files,echo done,mtk-config-files := $(strip $(call mtk.config.generate-rules,mtk-config-files),mtk-custom-files := $(strip $(call mtk.custom.generate-rules,mtk-custom-files),Build ALPS,Build Scripts Introduction,3)custgen.mk,mediatek/build/libs/,gmsl,is an Extended Library for GNU make,It defines some API for make use,For example,define,path.split,$(patsubst %/,%,$(dir $(patsubst %/,%,$1) $(notdir $(patsubst %/,%,$1),endef,Usage:,$(call path.split, kernel/imgsensor/ov7675_yuv,/,ov7675yuv_Sensor.c),output is,kernel/imgsensor/ov7675_yuv ov7675yuv_Sensor.c,define,wildcard2,$(strip $(if $(wildcard $(1),$(wildcard $(1),$(wildcard $(subst ,$(subst ,$(1),endef,Build ALPS,Build Scripts Introduction,3)custgen.mk,mediatek/build/libs/,custom.mk,is used to choose the correct source code for our project,define,mtk.custom.generate-rules,$(if $(MTK_ROOT_CUSTOM),$(strip ,$(eval _custflist_ :=) $(eval _custfmap_ :=) $(eval _custfgen :=) ,$(foreach d,$(addprefix $(MTK_ROOT_CUSTOM)/,$(MTK_CUSTOM_FOLDERS),$(eval _dirs := $(call wildcard2,$(if $(2),$(addprefix $(d)/,$(2),$(d) ,$(if $(_dirs),$(eval _files := $(filter-out $(_custflist_), ,$(patsubst $(d)/%,%,$(shell find -L $(_dirs) ( ! -name .* ) -type f) ,$(foreach f,$(_files), ,$(eval _ := $(call,.mtk.custom.map-module,$f) ,$(if $_, ,$(eval _src_ := $(firstword $_) ,$(eval _des_ := $(lastword $_) ,$(eval _custflist_ += $(_src_) ,$(eval _custfmap_ += $(MTK_ROOT_CUSTOM_OUT)/$(_des_):$(d)/$(_src_) ,) ,) ,) ,) ,Build ALPS,Build Scripts Introduction,3)custgen.mk,$(eval # TODO pre-generated files should be enforced directly by architecture ) ,$(if $(3),$(foreach f,$(filter-out $(_custflist_),$(3), ,$(eval _g_ := $(MTK_ROOT_CUSTOM_OUT)/$(patsubst $(MTK_ROOT_CUSTOM)/$(MTK_PROJECT)/%,%,$(f) ,$(if $(filter $(addprefix $(MTK_ROOT_CUSTOM_OUT)/,$(_custflist_),$(_g_), ,$(eval _custfgen += $(_g_) $(eval _custflist_ += $(f) $(eval _custfmap_ += $(_g_):$(f) ,),) ,$(if $(call wildcard2,$(MTK_ROOT_CUSTOM_OUT),$(foreach f,$(filter-out $(_custfgen) $(foreach f,$(_custfmap_),$(word 1,$(subst :, ,$f),$(shell find $(if $(2),$(addprefix $(MTK_ROOT_CUSTOM_OUT)/,$(2),$(MTK_ROOT_CUSTOM_OUT) ,! ( -name *.oas -o -name *.ko -o -name .* -o -name *.mod.c -o -name *.gcno ,-o -name modules.order ) -type f 2 /dev/null),$(eval $(call .mtk.custom.delete-rule,$(1),$(f) ,) ,$(foreach f,$(_custfmap_),$(eval $(call .mtk.custom.generate-rule,$(1),$(word 1,$(subst :, ,$(f),$(word 2,$(subst :, ,$(f) ,$(word 1,$(subst :, ,$(f) ,),),endef,Build ALPS,Build Scripts Introduction,3)custgen.mk,Take,tinnopmt73_gb for example,MTK_ROOT_CUSTOM,:=,$(MTK_ROOT)/custom =,mediatek/custom,MTK_ROOT_CUSTOM_OUT,:=,$(MTK_ROOT_CUSTOM)/out/$(FULL_PROJECT) =,mediatek/custom/out/tinnopmt73_gb,MTK_PLATFORM,= MT6573,- in ProjectConfig.mk,MTK_CUSTOM_FOLDERS,:= $(call .mtk.custom.generate-folder-list),define,.mtk.custom.generate-folder-list,$(strip $(eval _mtk_project_ :=$(subst ,$(subst , ,$(FULL_PROJECT) ,$(eval _flvlist_ := $(strip $(subst +, ,$(word 2,$(_mtk_project_) ,$(eval _prjlist_ := $(call .mtk.custom.split-project,$(subst .,/,$(word 1,$(_mtk_project_) ,$(eval _fp_list_ := $(foreach p,$(_prjlist_),$(foreach f,$(_flvlist_),$(p)$(f) $(_prjlist_) ,$(_fp_list_) $(call lc,$(MTK_PLATFORM) common),endef,_fp_list_ - tinnopmt73_gb,$(call lc,$(MTK_PLATFORM) common) - mt6573 common,so,MTK_CUSTOM_FOLDERS,is,tinnopmt73_gb mt6573 common,$(addprefix $(MTK_ROOT_CUSTOM)/,$(MTK_CUSTOM_FOLDERS) =,mediatek/custom/,tinnopmt73_gb,mediatek/custom/,mt6573,mediatek/custom/,common,Build ALPS,Build Scripts Introduction,3)custgen.mk,$(patsubst $(d)/%,%,$(shell find -L $(_dirs) ( ! -name .* ) -type f),When _dirs is,mediatek/custom/,common,find -L $(_dirs) ( ! -name .* ) -type f,will list all the files (except files begin with “.”) under,mediatek/custom/,common,(include sub folders),like,mediatek/custom/common/kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,mediatek/custom/common/kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.h,mediatek/custom/common/kernel/imgsensor/ov7675_yuv/ov7675yuv_CameraCustomized.h,mediatek/custom/common/kernel/imgsensor/ov7675_yuv/ov7675yuv_Camera_Sensor_para.h,Then we use patsubst to filter out the custom folder names, so the file list above will be changed to,kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.h,kernel/imgsensor/ov7675_yuv/ov7675yuv_CameraCustomized.h,kernel/imgsensor/ov7675_yuv/ov7675yuv_Camera_Sensor_para.h,Build ALPS,Build Scripts Introduction,3)custgen.mk,Then we meet the following fuction,define,.mtk.custom.map-module,$(strip ,$(eval _custom._ := $(call path.split,$1) ,$(eval _custom.d := $(call path.split,$(firstword $(_custom._) ,$(eval _custom.f := $(lastword $(_custom._) ,$(eval _custom.n := CUSTOM_$(call uc,$(subst /,_,$(firstword $(_custom.d) ,$(eval _custom.v := $(lastword $(_custom.d) ,$(if $(filter $($(_custom.n),$(_custom.v),$1 $(firstword $(_custom.d)/$(_custom.f),$(if $(call seq,undefined,$(origin $(_custom.n),$1 $1,$(if $(filter inc,$(_custom.v),$1 $1,$(if $(filter src,$(_custom.v),$1 $(firstword $(_custom.d)/$(_custom.f),),),) ,),endef,Build ALPS,Build Scripts Introduction,3)custgen.mk,For example, we set the first input param -,kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,_custom._ =,kernel/imgsensor/ov7675_yuv ov7675yuv_Sensor.c,_custom.d =,kernel/imgsensor ov7675_yuv,_custom.f =,ov7675yuv_Sensor.c,_custom.n =,CUSTOM_KERNEL_IMGSENSOR,_custom.v =,ov7675_yuv,Now we try to find where the,CUSTOM_KERNEL_IMGSENSOR,defined,before going on,MTK_PROJECT_CONFIGS,:= $(call wildcard2,$(foreach c,$(call reverse,$(addsuffix /,ProjectConfig.mk,$(addprefix ././config/,$(,MTK_CUSTOM_FOLDERS,),$(call relative-path,$(c),After parsing,MTK_PROJECT_CONFIGS,is,mediatek/build/libs/././config/common/ProjectConfig.mk,mediatek/build/libs/././config/mt6573/ProjectConfig.mk,mediatek/build/libs/././config/tinnopmt73_gb/ProjectConfig.mk,$(foreach p,$(,MTK_PROJECT_CONFIGS,),$(eval export MTK_PROJECT $(strip $(shell cat $p | ,grep -v s*# | sed s/s*=s*.*/g),Build ALPS,Build Scripts Introduction,3)custgen.mk,$(foreach p,$(,MTK_PROJECT_CONFIGS,),$(eval export MTK_PROJECT $(strip $(shell cat $p | ,grep -v s*# | sed s/s*=s*.*/g),When $p is,mediatek/build/libs/././config/tinnopmt73_gb/ProjectConfig.mk,grep -v s*#,will filter out the contents after “#”, and,sed s/s*=s*.*/g,will filter out the contents on the righter of “=”,For example,# temp solution for custom folder,CUSTOM_HAL_IMGSENSOR = imx073_mipi_raw ov7675_yuv,CUSTOM_KERNEL_IMGSENSOR = imx073_mipi_raw ov7675_yuv,CUSTOM_HAL_LENS = fm50af dummy_lens,CUSTOM_KERNEL_LENS = fm50af dummy_lens,When we use the following filter rule, the text will turn to,CUSTOM_HAL_IMGSENSOR,CUSTOM_KERNEL_IMGSENSOR,CUSTOM_HAL_LENS,CUSTOM_KERNEL_LENS,Build ALPS,Build Scripts Introduction,3)custgen.mk,So,(shell cat $p | grep -v s*# | sed s/s*=s*.*/g),will return all the variables defines in $p,After using “export”, we can get the variables value in Makefiles,From,mediatek/build/libs/././config/tinnopmt73_gb/ProjectConfig.mk,We know,CUSTOM_KERNEL_IMGSENSOR = imx073_mipi_raw ov7675_yuv,Now go back to,.mtk.custom.map-module,$(if $(filter $($(_custom.n),$(_custom.v),$1 $(firstword $(_custom.d)/$(_custom.f),$(if $(call seq,undefined,$(origin $(_custom.n),$1 $1,$(if $(filter inc,$(_custom.v),$1 $1,$(if $(filter src,$(_custom.v),$1 $(firstword $(_custom.d)/$(_custom.f),),),),Build ALPS,Build Scripts Introduction,3)custgen.mk,So, there maybe five possibilities for all the files,If we set,$1 kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,output :,kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c kernel/imgsensor/ov7675yuv_Sensor.c,$1 kernel/btwlanem/btwlanem/btwlanem.c,COSTOM_KERNEL_BTWLANEM,not defined, no change,output :,kernel/btwlanem/btwlanem/btwlanem.c kernel/btwlanem/btwlanem/btwlanem.c,$1 kernel/imgsensor/inc/kd_imgsensor.h,output:,kernel/imgsensor/inc/kd_imgsensor.h kernel/imgsensor/inc/kd_imgsensor.h,$1 kernel/imgsensor/src/kd_sensorlist.h,output:,kernel/imgsensor/src/kd_sensorlist.h kernel/imgsensor/kd_sensorlist.h,$1 kernel/imgsensor/ov5642_raw/ov5642raw_Sensor.c,output,:,Null,Build ALPS,Build Scripts Introduction,3)custgen.mk,Having .mtk.custom.map-module reviewed, We go back to,mtk.custom.generate-rules,$(foreach f,$(_files), ,$(eval _ := $(call .mtk.custom.map-module,$f) ,$(if $_, ,$(eval _src_ := $(firstword $_) ,$(eval _des_ := $(lastword $_) ,$(eval _custflist_ += $(_src_) ,$(eval _custfmap_ += $(,MTK_ROOT_CUSTOM_OUT,)/$(_des_):$(d)/$(_src_) ,),MTK_ROOT_CUSTOM_OUT := $(MTK_ROOT_CUSTOM)/out/$(FULL_PROJECT) = mediatek/custom/out/tinnopmt73_gb,if $(f) is,kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,$(_src_) is,kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,$(_des_) is,kernel/imgsensor/ov7675yuv_Sensor.c,Then add,kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,to $(_custflist_),and,mediatek/custom/out/tinnopmt73_gb / kernel/imgsensor/ov7675yuv_Sensor.c :,mediatek/custom/common/kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,to $(_custfmap_) = $(d) is,mediatek/custom/common,here,Build ALPS,Build Scripts Introduction,3)custgen.mk,$(foreach f,$(_custfmap_),$(eval $(call .mtk.custom.generate-rule,$(1),$(word 1,$(subst :, ,$(f),$(word 2,$(subst :, ,$(f) ,$(word 1,$(subst :, ,$(f) ,),$(_custfmap_),is the output file list we have just generated,define,.mtk.custom.generate-rule,$(1): $(2),$(2): $(3),echo CUSTOM copy $(3),echo to $(2),mkdir -p $(dir $(2),cp -f $(3) $(2),endef,When $(f) is,mediatek/custom/out/tinnopmt73_gb / kernel/imgsensor/ov7675yuv_Sensor.c : mediatek/custom/common/kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,$(2) is mediatek/custom/out/tinnopmt73_gb / kernel/imgsensor/ov7675yuv_Sensor.c,$(3) is mediatek/custom/common/kernel/imgsensor/ov7675_yuv/ov7675yuv_Sensor.c,Build ALPS,Build Scripts Introduction,3)custgen.mk,$(dir $(2),= mediatek/custom/out/tinnopmt73_gb / kernel/imgsensor,mkdir p $(dir $(2),= create the above folder (and the parent folder if necessary , replay no error even if the folder exsits),cp -f $(3) $(2),=copy the file to the “out” folder,Build ALPS,Build Scripts Introduction,3)custgen.mk,mediatek/build/libs/,config.mk,is used to choose the correct configs for our project,define,mtk.config.generate-rules,.,$(foreach c,$(MTK_AUTOCONFIG_LIST),$(call .mtk.config.generate-auto-rules,$c) ,$(if $(MTK_ROOT_CONFIG),$(strip ,$(eval _confflist_ :=) $(eval _conffmap_ :=) ,$(foreach d,$(addprefix $(MTK_ROOT_CONFIG)/,$(MTK_CUSTOM_FOLDERS),$(eval _dirs := $(d) ,$(info $(_dirs) ),$(if $(_dirs),$(eval _files := $(filter-out $(_confflist_), ,$(patsubst $(d)/%,%,$(shell find -L $(_dirs) ( ! -name .* ) -type f | ,grep -v autoconfig/|ProjectConfig.mk) ,$(foreach f,$(_files), ,$(eval _confflist_ += $(f) ,$(eval _conffmap_ += $(MTK_ROOT_CONFIG_OUT)/$(f):$(d)/$(f) ,) ,) ,) ,Build ALPS,Build Scripts Introduction,3)custgen.mk,$(if $(call wildcard2,$(MTK_ROOT_CONFIG_OUT),$(foreach f,$(filter-out $(MTK_ROOT_CONFIG_OUT)/ProjectConfig.mk ,$(call wildcard2,$(MTK_ROOT_CONFIG_OUT)/autoconfig/*) ,$(foreach f,$(_conffmap_),$(word 1,$(subst :, ,$f),$(shell find $(if $(2),$(addprefix $(MTK_ROOT_CONFIG_OUT)/,$(2),$(MTK_ROOT_CONFIG_OUT) ,-type f 2 /dev/null),$(eval $(call .mtk.config.delete-rule,$(1),$(f) ,) ,$(foreach f,$(_conffmap_),$(eval $(call .mtk.config.generate-rule,$(1),$(word 1,$(subst :, ,$(f),$(word 2,$(subst :, ,$(f) ,$(word 1,$(subst :, ,$(f) ,),),endef,Build ALPS,Build Scripts Introduction,3)custgen.mk,(foreach c,$(,MTK_AUTOCONFIG_LIST,),$(call,.mtk.config.generate-auto-rules,$c),MTK_AUTOCONFIG_LIST,:= $(patsubst $(call relative-path,././config/common/autoconfig/)%,%,$(call wildcard2,$(call relative-path,././config/common/autoconfig/*),We meet the fuction below,define,.mtk.config.generate-auto-rules,$(eval include $(MTK_ROOT_CONFIG)/common/autoconfig/$1/config.mk) ,$(eval _merge_order_ := $(call wildcard2,$(foreach m,$(merge-order),$(foreach p,$(call reverse,$(MTK_CUSTOM_FOLDERS),$(MTK_ROOT_CONFIG)/$(p)/autoconfig/$1/$(m) ,$(eval _target_file_ := $(MTK_ROOT_GEN_CONFIG)/$1) ,$(if $(call seq,auto-merge,$(config-type),$(eval ,$(call .mtk.config.generate-auto-merge-rules,$1,$(_target_file_),$(_merge_order_),$(MTK_ROOT_GEN_CONFIG),$(merge-command),),$(eval # add your own config file parsing rule here # ),)$(_target_file_),endef,Build ALPS,Build Scripts Introduction,3)custgen.mk,When $1 is,kconfig,$(MTK_ROOT_CONFIG)/common/autoconfig/$1/config.mk,is,me
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!