From dc06c9d93176db61ab9f979ef4d8105f99e102ad Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Tue, 9 Jun 2020 17:27:32 -0400 Subject: Update autobuild script templates Update autobuild.in files with reworked version with the following changes: - Fixes for building outside of the source tree by over-riding BUILD_DIR* (done by use of new ROOT_DIR variable). - Rules simplified by use of static pattern rules and target specific variables. - package-test rule no longer builds the full widget, only the test widget. This is a behavior change, but seems more in line with developer expectations and avoids wasting time during builds from AGL. - package-{coverage,debug}-test rules removed for lack of utility. - Variable usage switched to parentheses instead of braces to match typical usage in Makefiles in other FOSS projects. The autobuild documentation has also been updated to include the previously added targets and BUILD_DIR* variables, and the description of package-test has been updated for the behavior change mentioned above. Bug-AGL: SPEC-2049, SPEC-3300 Signed-off-by: Scott Murray Change-Id: Ifaf0d59b9ee26bde6d27b8968e68f5dc84df548c --- docs/dev_guide/autobuild.md | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'docs') diff --git a/docs/dev_guide/autobuild.md b/docs/dev_guide/autobuild.md index 7eb09dd..ec1ece2 100755 --- a/docs/dev_guide/autobuild.md +++ b/docs/dev_guide/autobuild.md @@ -1,4 +1,4 @@ -# Autobuild +# Autobuild Applications based on the AGL framework should have a full build and packaging solution that is independent of the @@ -107,22 +107,40 @@ cmake .. && make autobuild Following are the targets available from the **autobuild** script: - **clean**: Removes all the object files and target results generated by Makefile. -- **distclean**: Deletes the build directory. -- **configure**: Generates the project Makefile from the `CMakeLists.txt` files. -- **build**: Compiles all project targets. -- **package**: Builds a widget (**wgt**) package. -- **package-test**: Builds the test **wgt** package and the normal **wgt** package. +- **clean-{release,debug,coverage,test}**: Removes all the object files and target results generated by Makefile for the specified build type. +- **clean-all**: Deletes the build directories for all build types. +- **distclean**: Deletes the build directories for all build types. +- **configure**: Generates the project Makefile from the `CMakeLists.txt` files for the release build type. +- **configure-{release,debug,coverage,test}**: Generates the project Makefile from the `CMakeLists.txt` files for the specified build type. +- **build**: Compiles all project targets for the release build type. +- **build-{release,debug,coverage,test}**: Compiles all project targets for the specified build type. +- **build-all**: Compiles all project targets for all specified build types. +- **package**: Builds the widget (**wgt**) package for the release build type. +- **package-{release,debug,coverage}**: Builds the widget (**wgt**) package for the specified build type. +- **package-test**: Builds the test **wgt** package. +- **package-all**: Builds the widget (**wgt**) packages for all build types. - **install**: Installs the project into your filesystem. +Note that `aglwgt.bbclass` only will use the **package-{coverage,test}** targets (and thus the **build-{coverage,test}**, etc. targets) for service bindings by default, so **autobuild** scripts for applications may omit support for those. + Specifying the following variables lets you modify compilation behavior: - **CLEAN_ARGS**: Variable used at **clean** time. -- **DISTCLEAN_ARGS**: Variable used at **distclean** time. - **CONFIGURE_ARGS**: Variable used at **configure** time. - **BUILD_ARGS**: Variable used at **build** time. -- **DEST**: Directory in which to place the created ***wgt*** file. +- **BUILD_DIR**: Build directory for release type build. + The default value is a "build" directory in the root of the project. +- **BUILD_DIR_DEBUG**: Build directory for debug type build. + The default value is a "build-debug" directory in the root of the project. +- **BUILD_DIR_TEST**: Build directory for test type build. + The default value is a "build-test" directory in the root of the project. +- **BUILD_DIR_COVERAGE**: Build directory for coverage type build. + The default value is a "build-coverage" directory in the root of the project. +- **DEST**: Directory in which to place the created ***wgt*** file(s). The default directory is the build root directory. +Note that the values of **BUILD_DIR_{DEBUG,TEST,COVERAGE}** are defined based on the value of **BUILD_DIR**, so this needs to be kept in mind if over-riding it and building those other widget types. + When you provide a variable, use the CMake format (i.e. BUILD_ARGS="-DC_FLAGS='-g -O2'"). Following is an example: -- cgit 1.2.3-korg