Commit Graph

41 Commits

Author SHA1 Message Date
Colin Cross 7f19f37443 Move globbing to Blueprint
Move Soong's globbing-with-dependencies support into Blueprint so it can
be used for subdirs= lines in Android.bp files.

Blueprint has a slight change in behavior around subname= lines, it now
always uses the subname and doesn't fall back to Blueprints.  To support
the Blueprints files in build/blueprint, use them directly with build=.

Test: build, add source file that matches glob, rebuild
Change-Id: Ifd0b0d3bc061aae0a16d6c7ca9a1cd8672656b4d
2016-11-04 04:54:16 +00:00
Dan Willemsen 627803256f Update build.ninja.in for blueprint upgrade
Bug: 32574042
Test: m -j
Change-Id: I34a3180a34b156955baf49c87fa985583083687e
2016-11-02 16:21:56 -07:00
Dan Willemsen 11fa52208d Update build.ninja.in
This was causing extra rebuilds for fresh builds. Update with the latest
blueprint changes.

Test: m blueprint_tools, fewer rebuilds
Change-Id: I6b82e9cafa6e84f4089c6f90372bddcd6f85b0ea
2016-10-25 16:08:37 -07:00
Dan Willemsen 79d2f256d4 Simplify bootstrapping
Follow changes from https://github.com/google/blueprint/pull/121

Change-Id: Icc5003f6e8592a667e1ce5e58361c03997078763
2016-08-31 01:20:29 -07:00
Colin Cross 6debdbad42 Update build.ninja.in for blueprint fs.go changes
Change-Id: I05bca49a563b13731ccb89d6f073edd59fee7049
2016-08-09 13:40:08 -07:00
Colin Cross d20b36be5d Update androidmk to match blueprint changes
blueprint/parser.Value is now an Expression interface, update androidmk
to match.

Change-Id: I01e0b2a83cf430c1981b450d35c8ab0aab6975f1
2016-06-08 14:50:11 -07:00
Colin Cross 6ba99aa281 Update build.ninja.in for bootstrap changes
Change-Id: I5c2c210c884fe4d4b3b23ccba6f2239ac082cd2c
2015-11-23 14:18:26 -08:00
Colin Cross 7449857325 Update build.ninja.in for blueprint changes
Change-Id: I54da2f7802dcb06c6c40ca496c9efbb1d749361f
2015-11-03 14:49:06 -08:00
Dan Willemsen e9862da7dd Update build.ninja.in for blueprint update
Change-Id: I71df8cd5f628855072f1a07e2be150d3e022344a
2015-09-18 12:48:44 -07:00
Dan Willemsen 87b17d1ff4 Use SRCDIR as a working directory
The existing behavior of using the build directory as the working
directory is useful if you want to move/copy the output directory around
and SRCDIR still refers the the source. But, it's more useful to have
the source directory be the working directory. Tools like cpp(__FILE__)
and other debug prints embed relative paths from the working directory.
We also have tools that expect the working directory to be $TOP.

Change-Id: Ia0f1d3c6b7df72d61cf5628efa2baa98bd19775b
2015-09-17 23:42:25 -07:00
Dan Willemsen 550eb33aa5 Update build.ninja.in for go 1.5
Change-Id: I7a5b3cba2335fbc61b308ad4acc5148b4bd0a97f
2015-09-17 14:16:32 -07:00
Dan Willemsen 98b26c576a Use the blueprint plugin infrastructure
Instead of using this hardcoded list, use the blueprint plugin
infrastructure to find them at build time and load them.

Bug: 23567252
Change-Id: Iae87e8c9bf020f4beb42c418b9a6bf8b0fe8b601
2015-09-15 00:31:30 +00:00
Colin Cross cbac5fbe78 Update build.ninja.in for blueprint go 1.5 support
Change-Id: I2f13e34e25bf708260dba7ad384c609a8ee4bd13
2015-08-24 15:41:17 -07:00
Dan Willemsen 24f2f8df87 Update to new blueprint api for bootstrap.BinDir
And regenerate build.ninja.in

Change-Id: I35e8b0362799f94b33309d3944b411de5dbcf40a
2015-08-24 15:40:44 -07:00
Colin Cross 463a90e587 use init functions to register module types, etc.
Instead of putting all the blueprint registrations in soong_build,
put them all in init() functions.  This puts the registration next
to the implementation.

Change-Id: Ide1a749518f5e9d1367a18ab3bb1d91da3310c76
2015-07-09 17:57:18 -07:00
Dan Willemsen 2701212d05 androidbp: Implement static/shared property copying
During mutation, make deep copies of the blueprint modules, then start
modifying the property lists to apply the static/shared properties.

Change-Id: Idc7063f4d1cf7d173ae10418e3437f3e2b914f59
2015-07-06 13:52:26 -07:00
Colin Cross b3245e9cf6 androidbp: simplify translation by evaluating all expressions in Blueprint
Translation is getting complicated because the expressions supported
by Blueprint are difficult to support in Make.  Modify androidbp
to use context aware parsing so it can evaluate all expressions at
parse time, so it only needs to deal with constant values.

Change-Id: I57047645fb48475baecd0361f78a93ec0a26011e
2015-06-30 17:51:25 -07:00
Dan Willemsen f33877b0e9 androidbp: Test valueToString
Change-Id: I358cf4bb020fc4db14792e2cdffc18bc2f89f4d4
2015-06-29 21:46:22 +00:00
Colin Cross 0bc42685ee Update build.ninja.in for blueprint doc changes
Change-Id: I6244bc5d4f30643faabd151ef34af01e30295701
2015-06-26 19:43:42 -07:00
Dan Willemsen e5e2033146 Build and run tests during bootstrap
Change-Id: If40489d74136af4d15d4ff26210a50975a462497
2015-06-26 11:51:03 -07:00
Colin Cross 1f8c52be73 Add per-directory build targets
Build a map of blueprint directory to modules built from that
directory, and then add phony rules to build.ninja that emulate
the behavior of mma in the current build system.

Also fixes checkbuild to depend on checkbuild files and installable
files, but not installed files.

Change-Id: I8bad6e93387940df7439dbd4554f6d79f924c65f
2015-06-17 10:18:35 -07:00
Colin Cross e5ee41274a Rename Blueprints to Android.bp
Rename module definition files to Android.bp to avoid conflicts
with another project called Blueprint.

Change-Id: I105a07555eb7890f56120deab9036cf9ae5d8525
2015-05-20 13:10:32 -07:00
Colin Cross 0af4b8468b Add support for building on Darwin hosts
Add toolchain and build rules for building on Darwin.

Change-Id: I78e21f4051b2941182121b28c9ddfa24396ada41
2015-05-07 14:09:48 -07:00
Colin Cross 5e1efb5812 Update build.ninja.in
Update build.ninja.in after Ib4bd1e0abc58ab514a7dd4a01008af645d6a3d13

Change-Id: I069a1334097966a748deacfc58d716d3ae554fef
2015-05-05 17:20:37 -07:00
Andres Morales da8706fed8 Initial androidbp translator.
Translates Android.bp files back to Android.mk

Change-Id: Ib4bd1e0abc58ab514a7dd4a01008af645d6a3d13
2015-04-30 18:51:10 -07:00
Colin Cross 6f23ef6bf3 Move globbing on top of pathtools.GlobWithExcludes
pathtools.GlobWithExcludes contains all the features of
glob.GlobWithDepFile now, make GlobWithDepFile a wrapper
around GlobWithExcludes that writes the results to a file.

Change-Id: Ie75d9042845505f499aac7fa00d3c90f8ecab4f7
2015-04-29 14:59:23 -07:00
Colin Cross 0607cf7daa java: add genrule support to java builds
Add support for source files generated by genrule or gensrcs to
java builds.

Change-Id: I39762b2ab65fa4cf92724300edc4ba995845ce92
2015-04-29 14:59:07 -07:00
Colin Cross 30e076af2e Add support for building android apps
Add support for running aapt to generate R.java and Manifest.java,
compiling java into jar, adding resources to the jar to convert it
into an apk, signing the apk, and zipaligning the apk.

Change-Id: I7a73fef590d07f35b3d0b56a8571780c09bb10ae
2015-04-20 14:12:30 -07:00
Colin Cross c215ca203e Update build.ninja.in for blueprint changes
Change-Id: Ibc2bf4919f780b1fefefa9c5a2a02166b326b57a
2015-04-15 10:57:34 -07:00
Colin Cross c0b06f191f Add aidl file support to java builds
Add support for aidl files listed in srcs for java builds, and
an aidl_preprocess module type for framework and sdk aidls.

Change-Id: I3aa537f4483822e5b534c74d0b35f13a938f8947
2015-04-08 16:37:31 -07:00
Colin Cross 1332b0035c Move config into common and provide helper
Using ctx.Config().(Config) everywhere is a mouthful, and it is
inefficient to do the type assertion.  Put the Config interface into
the context, and provide an AConfig() to return the Config already
converted to the right type.

Change-Id: I301a1fd7d2a005580aabca7866a37c5d42ad8c69
2015-04-08 15:19:24 -07:00
Colin Cross 581c189988 Add yacc and lex support
Add support for yacc (.y or .yy) and lex (.l or .ll) files.  Also
tweak locations of .o files for normal and generated sources to
makes sure they don't collide.

Change-Id: I03172cddbdc022525bf392a81d72050406b8cdb3
2015-04-08 15:17:45 -07:00
Colin Cross 2fe6687847 Support java libraries, binaries, and prebuilts
Add support for compiling java libraries (.jar files with
or without .dex), java binaries (.jar files with a wrapper
script to run them), and java prebuilts (for the SDK .jars)

Change-Id: Id624da64c92cf20c6d9577c6bb06e5b212af0d1b
2015-04-03 16:24:44 -07:00
Colin Cross 68f55102da Support dependencies on environment variables
Ninja can't depend on environment variables, so modifying build
behavior based on environment variables requires coordinating
between the soong script that invokes ninja and the soong_build
manifest generator.

Allow any module to call Config.Getenv to get the contents of an
environment variable while registering a dependency on it.
After all modules have been processed write out the state of
all used environment variables to a JSON file called
.soong.environment.  During the next build the soong script
will use the soong_env tool to compare the contents of
.soong.environment to the current environment, and force a
build manifest regeneration by deleting the .soong.environment
file if any variables have changed.

Change-Id: Id0d81933a857bc2fc1cd7a393a3c6cec73dc4824
2015-03-26 14:13:49 -07:00
Colin Cross 82df943c5a Add art_cc_library module type
Change-Id: I7aba376b755f3ce431f7b2f555a85a0ef5323453
2015-03-25 13:49:24 -07:00
Colin Cross 70b4059e3f Update import paths for changes to blueprint
Blueprint has been modified to include a canonical import path,
update soong to match.

Change-Id: If29d31afbf3bf2e6364961a66456fa5f8f738455
2015-03-23 12:57:34 -07:00
Colin Cross 5049f02e60 Add gensrcs module type
gensrcs allows sources to be generated by a specified command.

Change-Id: I725086fcdcd72bfe6c07fb8903e7b520678a247f
2015-03-19 10:51:41 -07:00
Colin Cross 9454bfafcb Add support for checkbuild target
Modules can choose to add "installed files", which are files that
a product can depend on to cause the module to build, and "checkbuild
files", which will only be built if another module that needs to build
depends on them.  For every target, add a module-install and a
module-checkbuild target that create dependencies on those files,
and then add a global checkbuild target that depends on all the
module-checkbuild targets.  Also add a module target for each module
that depends on module-install and module-checkbuild.

Change-Id: I801389ad6ab9806b71d92cd327a0f9cb7582e0df
2015-03-17 13:24:18 -07:00
Colin Cross 8003131d5a Add androidmk to Blueprints
Change-Id: I2c8f17bda7ff0b5fc95a80e5bf72776f6e23be05
2015-03-14 14:28:49 -07:00
Colin Cross 3f40fa460d Add soong_build primary builder
Initial build logic for building android with soong.  It can build
a variety of C and C++ files for arm/arm64 and host.

Change-Id: I10eb37c2c2a50be6af1bb5fd568c0962b9476bf0
2015-03-13 20:28:16 -07:00
Colin Cross e441b9df9a Initial soong
This creates the infrastructure that will be used to bootstrap the
soong primary builder through blueprint and ninja.

Change-Id: Iebed8f369e4db41b207d0b2a48a7a54a4dd7d45d
2015-03-04 16:13:27 -08:00