@echo off rem rem Windows-friendly batch file for all flight targets rem rem ------------------------------------------------------------------- rem Help rem ------------------------------------------------------------------- if '%1' == 'build' goto Proceed if '%1' == 'clean' goto Proceed for %%F in (%0) do echo SYNTAX: %%~nF%%~xF [build / clean / help] echo - build: builds all flight targets including uavobjects, bootloaders and firmware echo - clean: cleans all flight targets including bootloaders and firmware echo - help: this help echo: echo Environment variables: echo - TARGETS_BL - list of target (default is all flight bootloader targets) echo - TARGETS_FW - list of target (default is all flight targets) echo - UAVOBJGENERATOR - path and filename override for UAVObjGenerator.exe echo: echo Example usage (from a batch file with .cmd extension): echo set PATH=D:\Work\OpenPilot\Apps\CodeSourcery\bin\;%%PATH%% echo set TARGETS_FW=ahrs openpilot echo set TARGETS_BL=%%TARGETS_FW%% echo call svn\trunk\Makefile.cmd build echo: goto Abort :Proceed rem ------------------------------------------------------------------- rem Settings and definitions rem ------------------------------------------------------------------- rem Set desired targets and paths if "%TARGETS_BL%" == "" set TARGETS_BL=ahrs openpilot pipxtreme coptercontrol if "%TARGETS_FW%" == "" set TARGETS_FW=%TARGETS_BL% if "%TARGET_BL_SUBDIR%" == "" set TARGET_BL_SUBDIR=bootloaders if "%TARGET_FW_SUBDIR%" == "" set TARGET_FW_SUBDIR=. rem Set toolset paths (if you don't have them added permanently) rem set PATH=D:\Work\OpenPilot\Apps\CodeSourcery\bin\;%PATH% set MAKE=cs-make rem Set some project path variables for %%D in (%0) do set CURDIR=%%~dpD set ROOT_DIR=%CURDIR% set BUILD_DIR=%ROOT_DIR%\build set UAVOBJ_XML_DIR=%ROOT_DIR%\shared\uavobjectdefinition set UAVOBJ_OUT_DIR=%BUILD_DIR%\uavobject-synthetics rem ------------------------------------------------------------------- rem Proceed with target rem ------------------------------------------------------------------- set TARGET=%1 if '%TARGET%' == 'clean' goto UAVObjectsDone rem ------------------------------------------------------------------- rem Searching for UAVObjGenerator executable rem ------------------------------------------------------------------- set UAVOBJGENERATOR_FILENAME=uavobjgenerator.exe rem If environment variable is set then expand it to full path and use for %%G in (%UAVOBJGENERATOR%) do set UAVOBJGENERATOR=%%~fG if exist "%UAVOBJGENERATOR%" goto UAVObjGeneratorFound rem Searching in builds for %%G in (debug release) do ( if exist %BUILD_DIR%\ground\uavobjgenerator\%%G\%UAVOBJGENERATOR_FILENAME% ( set UAVOBJGENERATOR="%BUILD_DIR%\ground\uavobjgenerator\%%G\%UAVOBJGENERATOR_FILENAME%" goto UAVObjGeneratorFound ) ) rem Searching in PATH for %%G in (%UAVOBJGENERATOR_FILENAME%) do set UAVOBJGENERATOR=%%~$PATH:G if exist %UAVOBJGENERATOR% goto UAVObjGeneratorFound rem Report error for %%G in (%ROOT_DIR%/ground/ground.pro) do set GROUND_PRO=%%~fG echo UAVObjGenerator was not found, please build it first using %GROUND_PRO% goto Abort :UAVObjGeneratorFound echo UAVObjGenerator found: %UAVOBJGENERATOR% rem ------------------------------------------------------------------- rem UAVObjects for flight build rem ------------------------------------------------------------------- mkdir %UAVOBJ_OUT_DIR% >NUL 2>&1 pushd %UAVOBJ_OUT_DIR% %UAVOBJGENERATOR% -flight %UAVOBJ_XML_DIR% %ROOT_DIR% if errorlevel 1 goto Abort2 popd :UAVObjectsDone rem ------------------------------------------------------------------- rem Bootloaders build rem ------------------------------------------------------------------- for %%G in (%TARGETS_BL%) do ( %MAKE% CODE_SOURCERY=YES USE_BOOTLOADER=NO OUTDIR="%BUILD_DIR%\%TARGET_BL_SUBDIR%\%%G" -C "%ROOT_DIR%\flight\Bootloaders\%%G" %TARGET% if errorlevel 1 goto Abort1 ) rem ------------------------------------------------------------------- rem Firmware build rem ------------------------------------------------------------------- for %%G in (%TARGETS_FW%) do ( %MAKE% CODE_SOURCERY=YES USE_BOOTLOADER=YES OUTDIR="%BUILD_DIR%\%TARGET_FW_SUBDIR%\%%G" -C "%ROOT_DIR%\flight\%%G" %TARGET% if errorlevel 1 goto Abort1 ) goto Done rem ------------------------------------------------------------------- rem Error handling rem ------------------------------------------------------------------- :Abort2 popd :Abort1 echo Error returned, build aborted :Abort pause :Done