123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474 |
- :: Copyright (C) 2018 RDA Technologies Limited and\or its affiliates("RDA").
- :: All rights reserved.
- ::
- :: This software is supplied "AS IS" without any warranties.
- :: RDA assumes no responsibility or liability for the use of the software,
- :: conveys no license or title under any patent, copyright, or mask work
- :: right to the product. RDA reserves the right to make changes in the
- :: software without notification. RDA also make no representation or
- :: warranty that such application will be suitable for the specified use
- :: without further testing or modification.
- @echo off
- ::to config task num for ninja
- ::set build_tasknum=
- set Start_at=%time%
- set curtitle=cmd: %~n0 %*
- title %curtitle% @ %time%
- set ret=0
- set def_proj=EC800GCN_GA
- set buildtype_src=%1
- set buildoption=
- set ql_ext_flash=N
- if "%buildtype_src%"=="" (
- set buildoption=r
- ) else if /i "%buildtype_src%"=="r" (
- set buildoption=r
- ) else if /i "%buildtype_src%"=="new" (
- set buildoption=new
- ) else if /i "%buildtype_src%"=="n" (
- set buildoption=new
- ) else if /i "%buildtype_src%"=="clean" (
- set buildoption=clean
- ) else if /i "%buildtype_src%"=="c" (
- set buildoption=clean
- ) else if /i "%buildtype_src%"=="h" (
- set buildoption=h
- ) else if /i "%buildtype_src%"=="-h" (
- set buildoption=h
- ) else if /i "%buildtype_src%"=="help" (
- set buildoption=h
- ) else if /i "%buildtype_src%"=="/h" (
- set buildoption=h
- ) else if /i "%buildtype_src%"=="/?" (
- set buildoption=h
- ) else if /i "%buildtype_src%"=="?" (
- set buildoption=h
- ) else (
- echo !!!unknown build type: %buildtype_src%, should be r/new/clean/h/-h!!!
- echo=
- goto helpinfo
- )
- echo=
- if /i "%buildoption%"=="h" (
- goto buildinfo
- )
- if /i "%buildoption%"=="clean" (
- goto buildstart
- )
- echo %PATH%
- echo=
- set ql_buildproj=%2
- if "%ql_buildproj%"=="" (
- set ql_buildproj=%def_proj%
- )
- if /i "%ql_buildproj%" == "EC800GCN_GA" (
- set hardware_type=UIS8850DG
- ) else if /i "%ql_buildproj%" == "EC800GCN_LD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC800GCN_MD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EG800GEU_LD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC800GCN_LB" (
- set hardware_type=UIS8850CM
- ) else if /i "%ql_buildproj%" == "EG800GCN_GB" (
- set hardware_type=UIS8850CM
- ) else if /i "%ql_buildproj%" == "EC600GCN_LC" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC600GCN_LA" (
- set hardware_type=UIS8850CM
- ) else if /i "%ql_buildproj%" == "EC600GCN_LD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC600GCN_CD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC600GCN_MD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC600GCN_GA" (
- set hardware_type=UIS8850DG
- ) else if /i "%ql_buildproj%" == "EG700GCN_LC" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EG700GCN_LD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EG700GCN_MD" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EG700GCN_ND" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC200GCN_LE" (
- set hardware_type=UIS8850BM
- ) else if /i "%ql_buildproj%" == "EC200GCN_LF" (
- set hardware_type=UIS8850CM
- ) else (
- echo !!!unknown Project: %ql_buildproj%!!!
- echo=
- goto helpinfo
- )
- if /i "%3" == "" (
- echo=
- echo we need your version label...
- echo=
- goto helpinfo
- )
- set buildver=%3
- for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set buildver=%%buildver:%%i=%%i%%
- set outputtype=%6
- if /i not "%outputtype%"=="debug" (
- set outputtype=release
- )
- set _ccsdk_build=ON
- set _OPEN_=OPEN_CPU
- set PROJECT_ROOT=%CD%
- set BUILD_TARGET=8850DG_cat1_open
- set BUILD_RELEASE_TYPE=%outputtype%
- set ql_app_ver=%buildver%_APP
- set ql_app2_ver=%buildver%_APP2
- if /i "%hardware_type%"=="UIS8850BM" (
- set BUILD_TARGET=8850XM_cat1_open
- ) else if /i "%hardware_type%"=="UIS8850CM" (
- set BUILD_TARGET=8850XM_cat1_open
- )
- if not exist "%PROJECT_ROOT%\components\ql-config\build\%ql_buildproj%\%BUILD_TARGET%" (
- echo.
- echo ******************** ERROR ***********************
- echo your target.config is not exist:
- echo %PROJECT_ROOT%\components\ql-config\build\%ql_buildproj%\%BUILD_TARGET%
- echo ****************************************************************
- echo.
- set ret=1
- goto buildinfo
- )
- set KCONFIG_CONFIG=%PROJECT_ROOT%\components\ql-config\build\%ql_buildproj%\%BUILD_TARGET%\target.config
- set target_out_dir=out\%BUILD_TARGET%_%BUILD_RELEASE_TYPE%
- set PROJECT_OUT=%PROJECT_ROOT%\%target_out_dir%
- set region=%ql_buildproj:~6,2%
- if /i "%region%" == "CN" (
- set IMS_DELTA_NV_ROOT=components\ql-kernel\modem\ims\cn
- ) else if /i "%region%" == "EU" (
- set IMS_DELTA_NV_ROOT=components\ql-kernel\modem\ims\eu
- ) else if /i "%region%" == "LA" (
- set IMS_DELTA_NV_ROOT=components\ql-kernel\modem\ims\la
- ) else if /i "%region%" == "AU" (
- set IMS_DELTA_NV_ROOT=components\ql-kernel\modem\ims\au
- ) else if /i "%region%" == "GL" (
- set IMS_DELTA_NV_ROOT=components\ql-kernel\modem\ims\gl
- ) else (
- set IMS_DELTA_NV_ROOT=components\ql-kernel\modem\ims\xx
- )
- echo %IMS_DELTA_NV_ROOT%
- set COMPILER_VERSION=gcc-arm-none-eabi-9.2.1
- call :add_path %PROJECT_ROOT%\prebuilts\win32\bin
- call :add_path %PROJECT_ROOT%\prebuilts\win32\cmake\bin
- call :add_path %PROJECT_ROOT%\prebuilts\win32\python3
- call :add_path %PROJECT_ROOT%\prebuilts\win32\gcc-arm-none-eabi\%COMPILER_VERSION%\bin
- call :add_path %PROJECT_ROOT%\prebuilts\win32\gcc-mips-rda-elf\bin
- call :add_path %PROJECT_ROOT%\prebuilts\win32\gcc-rv32-elf\bin
- call :add_path %PROJECT_ROOT%\prebuilts\win32\nanopb
- call :add_path %PROJECT_ROOT%\tools
- call :add_path %PROJECT_ROOT%\tools\win32
- ::call :add_path %PROJECT_ROOT%\tools\win32\vlrsign
- :buildstart
- set optionhelp=0
- if /i "%buildoption%"=="clean" (
- echo=
- rd /s/q out
- echo=
- echo cleaning done
- echo=
- goto doneseg
- ) else if /i "%buildoption%"=="r" (
- echo=
- goto buildseg
- ) else if /i "%buildoption%"=="new" (
- echo cleaning...
- echo=
- rd /s/q out
- echo=
- echo cleaning done
- echo=
- goto buildseg
- ) else (
- set optionhelp=1
- goto doneseg
- )
- :buildseg
- set volte_enable=%4
- set quec_dsim=%5
- set ql_dsim_cfg=n
- if /i not "%volte_enable%"=="VOLTE" (
- set volte_enable=NOVOLTE
- )
- ::set y for VSIM STD solution
- set ql_vsim_std=n
- echo %volte_enable% %quec_dsim% %build_tasknum%
- set ql_dsim_cfg=n
- set modemdir=8850XG_cat1bis_gnss_ds_ab
- set ims_delta_nv=n
- set partitionfile=components/hal/config/8850/partinfo_8850_8m_opencpu.json
- set quec_ims_feature=n
- if /i "%quec_dsim%"=="DOUBLESIM" (
- set ql_dsim_cfg=y
- )
- if /i "%hardware_type%"=="UIS8850DG" (
- if /i "%volte_enable%"=="VOLTE" (
- set partitionfile=components/hal/config/8850/partinfo_8850_8m_opencpu.json
- set modemdir=8850XG_cat1bis_volte_gnss_ds_ab
- set quec_ims_feature=y
- set ims_delta_nv=y
- ) else (
- set partitionfile=components/hal/config/8850/partinfo_8850_8m_opencpu_novolte.json
- set modemdir=8850XG_cat1bis_gnss_ds_ab
- )
- ) else if /i "%hardware_type%"=="UIS8850BM" (
- if /i "%ql_ext_flash%"=="Y" (
- set partitionfile=components/hal/config/8850/partinfo_8850_4m_4m_opencpu_novolte.json
- ) else (
- set partitionfile=components/hal/config/8850/partinfo_8850_4m_opencpu_novolte.json
- )
- set modemdir=8850XM_cat1bis_ds_ab
- ) else if /i "%hardware_type%"=="UIS8850CM" (
- set partitionfile=components/hal/config/8850/partinfo_8850_8m_opencpu_novolte.json
- set modemdir=8850CM_cat1bis_ds
- )
- if /i "%ql_vsim_std%"=="y" (
- set partitionfile=components/hal/config/8850/partinfo_8850_8m_quec_vsim_novolte.json
- if /i "%hardware_type%"=="UIS8850BM" (
- set partitionfile=components/hal/config/8850/partinfo_8850_4m_quec_vsim_novolte.json
- if /i "%ql_ext_flash%"=="Y" (
- set partitionfile=components/hal/config/8850/partinfo_8850_4m_4m_quec_vsim_novolte.json
- )
- )
- )
- call python3.exe build_check.py --partinfo %partitionfile%
- if not %errorlevel% == 0 (
- echo.
- echo ****************************************************************
- echo xxxxxxxxxxxxxxxxx flash partition error xxxxxxxxxxxxxxxxxxxxxx
- echo ****************************************************************
- set ret=1
- goto doneseg
- )
- set prepack_json_path=components/ql-config/download/prepack/ql_prepack.json
- ::if exist prebuilts\modem\8850\%modemdir%\nvitem\*.prj del /f/a prebuilts\modem\8850\%modemdir%\nvitem\*.prj
- copy /y "components\ql-config\build\%ql_buildproj%\nvitem\delta_static.nv" "components\nvitem\8850\default\deltanv\"
- copy /y "components\ql-config\build\%ql_buildproj%\nvitem\delta_rf.nv" "components\nvitem\8850\default\deltanv\"
- copy /y "components\ql-config\build\%ql_buildproj%\nvitem\delta_ims.nv" "components\nvitem\8850\default\deltanv\"
- copy /y "components\ql-config\build\%ql_buildproj%\nvitem\delta_simcard2.nv" "components\nvitem\8850\default\deltanv\"
- ::xcopy /y components\ql-config\build\%ql_buildproj%\quec_proj_config.h components\ql-kernel\inc
- ::xcopy /y components\ql-config\build\%ql_buildproj%\quec_proj_config_at.h components\ql-kernel\inc
- xcopy /y components\ql-config\build\%ql_buildproj%\ql_libs\libql_at.a components\ql-kernel\libs
- Setlocal Enabledelayedexpansion
- if not exist %PROJECT_OUT% mkdir %PROJECT_OUT%
- if not exist %PROJECT_OUT%\include mkdir %PROJECT_OUT%\include
- cd /d out\%BUILD_TARGET%_%BUILD_RELEASE_TYPE%
- echo=
- echo %PATH%
- echo=
- cmake ..\.. -G Ninja
- echo=
- if not "%build_tasknum%"=="" (
- set /a tasknumCheck=%build_tasknum%
- if "!tasknumCheck!" == "%build_tasknum%" (
- ninja -j 4
- ) else (
- cd /d %PROJECT_ROOT%
- echo.
- echo ****************************************************************
- echo xxxxxxxxxxxxxxxxxx ninja tasknum error xxxxxxxxxxxxxxxxxxxxxx
- echo ****************************************************************
- set ret=1
- goto doneseg
- )
- ) else (
- ninja -j 4
- )
- if not %errorlevel% == 0 (
- cd /d %PROJECT_ROOT%
- echo.
- echo.
- echo ******************** ERROR ***********************
- echo ******************** ERROR ***********************
- echo ****************************************************************
- echo xxxxxxxxxxxxxxxxxx build ended error xxxxxxxxxxxxxxxxxxxxxxx
- echo ****************************************************************
- echo ****************************************************************
- @echo
- @echo
- @echo
- set ret=1
- goto doneseg
- )
- echo=
- echo.
- echo ******************** PASS ***********************
- echo ************** build ended successfully ********************
- echo ******************** PASS ***********************
- @echo
- echo=
- call python3.exe ..\..\build_check.py --partinfo ..\..\%partitionfile% --splimg .\hex\spl.img --splsignimg .\hex\spl.sign.img
- if %errorlevel% NEQ 0 (
- cd /d %PROJECT_ROOT%
- echo=
- echo ******************** ERROR ***********************
- echo ******************** FILE SIZE ERROR ***********************
- set ret=1
- goto doneseg
- )
- call python3.exe ..\..\build_check.py --partinfo ..\..\%partitionfile% --coreimg .\hex\%BUILD_TARGET%.img
- if %errorlevel% NEQ 0 (
- cd /d %PROJECT_ROOT%
- echo=
- echo ******************** ERROR ***********************
- echo ******************** FILE SIZE ERROR ***********************
- set ret=1
- goto doneseg
- )
- call python3.exe ..\..\build_check.py --partinfo ..\..\%partitionfile% --appimg .\hex\examples\%ql_app_ver%.img
- if %errorlevel% NEQ 0 (
- cd /d %PROJECT_ROOT%
- echo=
- echo ******************** ERROR ***********************
- echo ******************** FILE SIZE ERROR ***********************
- set ret=1
- goto doneseg
- )
- echo=
- echo %ql_buildproj% %buildver% %BUILD_RELEASE_TYPE% %volte_enable% %quec_dsim% %build_tasknum%
- echo=
- set version_path=..\..\target\%ql_buildproj%_%buildver%\
- if exist %version_path%\ rd /s/q %version_path%\
- mkdir %version_path%\
- ::每次编译完删除out目录下生成的indeltanv,避免NV工具导致NV文件中多出一些字节
- rd /s/q %PROJECT_OUT%\vargen\%modemdir%\indeltanv
- xcopy /y .\hex %version_path%\prepack\
- move /y %version_path%\prepack\%BUILD_TARGET%.elf %version_path%\
- move /y %version_path%\prepack\%BUILD_TARGET%.map %version_path%\
- move /y %version_path%\prepack\%BUILD_TARGET%*%BUILD_RELEASE_TYPE%.pac %version_path%\
- rename %version_path%\%BUILD_TARGET%*%BUILD_RELEASE_TYPE%.pac %BUILD_TARGET%_%buildver%.pac
- xcopy .\target.cmake %version_path%\prepack\
- xcopy /y .\hex\examples\*.* %version_path%\app\
- set ql_prepack_opt=N
- if exist ql_prepack.opt (
- set ql_prepack_opt=Y
- )
- if /i "%ql_prepack_opt%"=="Y" (
- ::如果没生成merge.pac,并且报failed to copy APPIMG before PREPACK as APPIMG,或者预置文件失败等,要检查下ql_prepack.opt和prepack_json_path是否正确
- ..\..\tools\win32\dtools pacmerge --id APPIMG,CP --id PREPACK,SPL %version_path%\%BUILD_TARGET%_%buildver%.pac %version_path%\app\%ql_app_ver%.pac %version_path%\%BUILD_TARGET%_%buildver%_merge.pac
- ) else (
- ..\..\tools\win32\dtools pacmerge --id APPIMG,CP %version_path%\%BUILD_TARGET%_%buildver%.pac %version_path%\app\%ql_app_ver%.pac %version_path%\%BUILD_TARGET%_%buildver%_merge.pac
- )
- ::如果不存在APPIMG2,这里不会生成带APPIMG2的merge pac
- ..\..\tools\win32\dtools pacmerge --id APPIMG2,CP %version_path%\%BUILD_TARGET%_%buildver%_merge.pac %version_path%\app\%ql_app2_ver%.pac %version_path%\%BUILD_TARGET%_%buildver%_merge_APPIMG2.pac
- echo=
- call pythonw.exe ..\..\tools\codesize.py --map .\hex\%BUILD_TARGET%.map
- move /y .\outlib.csv %version_path%\prepack\
- move /y .\outobj.csv %version_path%\prepack\
- move /y .\outsect.csv %version_path%\prepack\
- cd /d %PROJECT_ROOT%
- :doneseg
- if "%optionhelp%"=="0" (
- echo=
- echo %date%
- echo START TIME: %Start_at%
- echo END TIME: %time%
- echo=
- goto exit
- )
- :helpinfo
- echo=
- echo ********************************************************************
- echo !!!!!!!!!!! Please input right build option !!!!!!!!!!!!!!
- echo ********************************************************************
- echo=
- :buildinfo
- echo For your information:
- echo.Usage: %~n0 r/new Project Version [VOLTE] [DSIM] [debug/release]
- echo. %~n0 clean
- echo. %~n0 h/-h
- echo.Example:
- echo. %~n0 new %def_proj% your_version_label
- echo. %~n0 new %def_proj% your_version_label NOVOLTE SINGLESIM release
- echo=
- echo Note: Optional parameter: [VOLTE] [DSIM]
- echo The previous optional parameter is required for the latter optional parameter.
- echo For example, If you need DOUBLESIM with NOVOLTE, please set [VOLTE] as NOVOLTE and [DSIM] as DOUBLESIM.
- echo=
- echo [VOLTE] option is for VoLTE feature, and NOVOLTE is default.
- echo If you want volte, you can ignore [VOLTE] with SINGLESIM or set it as VOLTE. If you want no volte, please set [VOLTE] as NOVOLTE!
- echo [DSIM] option is for single or double sim card. and SINGLESIM is default.
- echo DOUBLESIM is used for Dual SIM Dual Standby(DSDS), and SINGLESIM is used for single SIM or Dual SIM Single Standby(DSSS).
- echo furthermore, you should enable the CONFIG_QUEC_PROJECT_FEATURE_DSSS feature for DSSS.
- echo Only determine the dual sim feautre when the dual sim feature is not saved in NV,
- echo when the dual sim feature is switched through ql_sim_set_ds_feature, the DOUBLESIM build option and
- echo CONFIG_QUEC_PROJECT_FEATURE_DSSS macro will not take effect.
- echo=
- echo you can get supported [Project] at the directory components\ql-config\build,
- echo the name of folders are supported [Project], as below:
- echo=
- dir components\ql-config\build\
- echo=
- echo=
- :exit
- exit /B %ret%
- :add_path
- (echo ";%PATH%;" | find /C /I ";%1;" > nul) || set "PATH=%1;%PATH%"
- goto :eof
|