Commit Graph

97 Commits

Author SHA1 Message Date
Dan Willemsen 584e4724ba Remove --ignore_dirty=$(OUT_DIR)/% from Kati flags
We really should be re-running Kati when a file in here changes, since
it may actually affect the result. The general problem we've run into is
when there are two kati output files that are clean according to the
current rules, but if they actually ran we'd force an installclean.

This also had the side-effect of not running shell commands that touched
$OUT_DIR, like writing files using $(shell echo ... >out/...), now those
may be run.

This will cause Kati to re-read the makefiles more often -- twice when a
CleanSpec.mk changes, twice when switching products on the same device.
Basically every time we read the old state, do something about it, and
write out the new state, we need to rerun the next time so we aren't
continuously cleaning up what changed.

Bug: 30947985
Test: Manual, switching between configurations; enable --regen_debug
Change-Id: I888f9f8295f318f8214b2c79525cf94f457a5a8b
2016-12-22 22:19:19 +00:00
Dan Willemsen 04f53ed923 Split (ninja|soong).mk into config and rule portions
So that an external tool can read the configuration using
dump-many-vars, and write out the soong.variables file while only
loading config.mk.

Also remove dumpvar-% from PARSE_TIME_MAKE_GOALS, since it's only used
with CALLED_FROM_SETUP / config.mk. This provides an easy way to test
this change as well.

Test: get_build_var NINJA
Test: get_build_var ANDROID_GOALS
Test: get_build_var NINJA_GOALS
Test: get_build_var KATI_GOALS
Test: MAKECMDGOALS="droid sdk dumpvar-ANDROID_GOALS" get_build_var ANDROID_GOALS
Test: MAKECMDGOALS="droid sdk dumpvar-NINJA_GOALS" get_build_var NINJA_GOALS
Test: MAKECMDGOALS="droid sdk dumpvar-KATI_GOALS" get_build_var KATI_GOALS
Test: MAKECMDGOALS="out/build-a.ninja dumpvar-ANDROID_GOALS" get_build_var ANDROID_GOALS
Test: get_build_var SOONG_MAKEVARS_MK
Test: get_build_var SOONG_VARIABLES
Test: CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core make -f build/core/config.mk out/soong/soong.variables showcommands
Test: Compare soong.variables from above, and before/after with `m`
Test: Compare out before/after with `m doesnotexist`
Test: `m dist doesnotexist`
Change-Id: I1bc291aa165297c930fe600067edad6ce4979210
2016-11-09 17:53:33 -08:00
Dan Willemsen d4b0504f85 Update combined build.ninja to depend on Soong's build.ninja
For Soong's build.ninja regeneration to work

Bug: 32574042
Test: m -j, add globbed file, m -j
Change-Id: Ie267ea33e8de88275e99330b2d0f147d1e58fa7b
2016-11-02 16:24:52 -07:00
Guang Zhu 24dd78a2d7 Merge "remove use of CTS_TESTCASES_OUT" 2016-10-07 01:15:17 +00:00
Guang Zhu 29fe14721e remove use of CTS_TESTCASES_OUT
Bug: 31788743
Test: $ make cts dist
      # check contents of generated package and API coverage
      # report
      $ make checkbuild

Merged-In: Ieec069bafbcc6df5a5b3b06befb4a3a5678a06fd
Change-Id: Ieec069bafbcc6df5a5b3b06befb4a3a5678a06fd
(cherry picked from commit f8f0880b3b8fb6a80ed766068d5f1714625b8960)
2016-10-06 16:57:39 -07:00
Dan Willemsen 3b4d17ffe7 Use ASAN prebuilts if SANITIZE_HOST includes address
Test: SANITIZE_HOST=address m -j showcommands
Change-Id: Ifdca98d5fa32867005ace99e1eb5188e22923ac6
2016-10-05 23:26:24 -07:00
Colin Cross a5471a6723 exec makeparallel
bash doesn't kill children when it receives SIGTERM.  Since makeparallel
is the last command run by the shell, run it with exec to replace the
shell with makeparallel so make can send the signal directly to
makeparallel.

Bug: 31907490
Test: m -j & killall make; pgrep -a makeparallel
Change-Id: If8aeb51ec224234da5f05eae3382ce77f48a57e2
2016-10-03 15:33:06 -07:00
Colin Cross 647d383788 Revert "Remove -d keepdepfile from ninja command line"
This reverts commit 4aca571552.

Test: builds
Change-Id: Iddb3517a4596e84404db1738fa95eb15f435a42d
2016-10-03 15:28:58 -07:00
Dan Willemsen 5ad9ccaf2a Prevent Kati from seeing MAKEFLAGS
We never want Kati to see MAKEFLAGS, as forcefully overriding variables
is terrible. The variables in MAKEFLAGS are still available in the
environment, so if part of the build wants input from the user, it
should be explicitly checking for an environment variable or using ?=

This commit shouldn't actually change any behavior -- the version of
Kati checked into our tree doesn't actually read MAKEFLAGS (the latest
version does, which is why this change is necessary). We're also already
clearing MAKEFLAGS during makeparallel, so the USE_GOMA case already
doesn't pass through MAKEFLAGS.

Test: Manual $(warnings $(origin MYTEST) $(MYTEST)) with old and new Kati
Change-Id: I5e4ffa66b3539a539cc7a26da24645b11445c469
2016-09-08 17:14:43 -07:00
Colin Cross 5a5befb7c0 Enable goma in soong
Pass the USE_GOMA flag to soong, and export the CC_WRAPPER environment
variable after adding gomacc to it.

Bug: 31142427
Change-Id: I6de698a40817c0615b03fa17bd27075465d79ffd
2016-08-31 09:48:21 -07:00
Dan Willemsen 937cef48eb Check USE_GOMA consistently
Currently, the only way to properly disable goma is to unset USE_GOMA.
If you set USE_GOMA=false, we won't turn on goma, but we'll pass -j500
to ninja.

Test: USE_GOMA={x,false} m -j48 showcommands (inspect)
Change-Id: I6b327d08ebadbe614a3bf7646fd597054bbfaaa2
2016-08-27 18:33:11 -07:00
Dan Willemsen 9fc9cac0ac Merge "Fix GET-INSTALL-PATH to work with Soong"
am: 6b9aa6938d

Change-Id: I9f433cb383846ec6ccb8e39be4b30110d60d54fd
2016-08-15 21:17:33 +00:00
Dan Willemsen 53e3899222 Fix GET-INSTALL-PATH to work with Soong
This was printing all of the Soong modules in addition to the modules
defined in the ONE_SHOT_MAKEFILE. So replicate what we did with
MODULES-IN-* with GET-INSTALL-PATH-IN-* and update all the users.

Bug: 30191725
Change-Id: Ib1e4bf00f64d7a3e8cd91f44eaf1ff82fdfbf162
2016-08-12 05:10:51 +00:00
Alexey Polyudov 755391d77e Merge "introduce AUX build class of targets"
am: 556526bf95

Change-Id: I52b4b3a561ceb9c1fbe71ce75a4ef4aa252a9665
2016-08-02 22:50:21 +00:00
Alexey Polyudov ccdc311b33 introduce AUX build class of targets
AUX is a new class, similar to TARGET
While TARGET defines toolchain for Application Processors
AUX is defining toolchains for arbitrary utility cores (DSPs, GPUs,
MCUs, etc). This allows building of non-android sources as part
of Android tree and avoid using prebuilts if source code is avaliable

Bug: 29635686
Change-Id: Ie755ea054b16c3e86369f5fb2ba6eb0b384af77f
Signed-off-by: Alexey Polyudov <apolyudov@google.com>
2016-08-02 08:06:28 -07:00
Dan Willemsen cf771ed98f Merge \"Fix kati --no_ignore_dirty usage\"
am: a6f510c776

Change-Id: I3b33f8a4762c7f8867afb5812933c452cdfa16b2
2016-06-15 22:55:02 +00:00
Dan Willemsen 3773b45c3b Fix kati --no_ignore_dirty usage
Kati only supports a single use of --no_ignore_dirty, so we were
ignoring the SOONG_ANDROID_MK file, and only detecting changes to
SOONG_MAKEVARS_MK. Fix this by using a pattern that should apply to both
of those makefiles.

Change-Id: I46390f9887f95f1db0efe4e93339667f35ebc67c
2016-06-15 14:55:58 -07:00
Colin Cross 2a73e9280b Merge "Update default NINJA_STATUS to show finished edges" am: 27032630c0
am: 91fbe6006a

* commit '91fbe6006a1422611e7ec2956d641c18b62f1f4f':
  Update default NINJA_STATUS to show finished edges

Change-Id: Iaf65cd8a7fcccdb7e4f06a6708788161885c0dc5
2016-06-01 05:05:34 +00:00
Colin Cross b9dd243b1c Update default NINJA_STATUS to show finished edges
Update default NINJA_STATUS that includes percentage to match
6c2c2eecbf

Change-Id: I5694308abe26b71999d944c40962d59d50a73077
2016-05-31 12:38:04 -07:00
Colin Cross 44cf069b30 Merge "Remove USE_SOONG=false option" am: 5413fb4b3e
am: a36de73331

* commit 'a36de73331b92e5e75ba92e7a4707e5850e3486d':
  Remove USE_SOONG=false option

Change-Id: Iba393dadd32a55e910cf0ab980a1e82887f60bb9
2016-05-26 01:04:52 +00:00
Colin Cross a61d672529 Remove USE_SOONG=false option
Soong is always required to build now.

Change-Id: I4e310e98e912b370ebf980bf609f04212a7e9a50
2016-05-25 12:55:43 -07:00
Dan Willemsen 2697421213 Merge "Read Soong-exported configuration" am: c7b610a67e
am: bcbba61a25

* commit 'bcbba61a2500da9c51690ef8956e15020e9f6fea':
  Read Soong-exported configuration

Change-Id: Ia23208e26bae53bd74bb77b0a0ebbe63ac6f8a9c
2016-05-13 01:43:09 +00:00
Dan Willemsen 8b999ac63d Read Soong-exported configuration
This is to ensure that Make and Soong agree on configuration variables
like TARGET_GLOBAL_CFLAGS. Only a few variables are actually checked
currently until we make more actually the same.

Bug: 23566674
Change-Id: Ibede43d933ede4d470e182f9490ea6ec4ef52fbc
2016-05-12 13:36:33 -07:00
Dan Willemsen 38f44b9e9d Merge "Only pass NINJA_ARGS to the main ninja compile" am: 374c7facd5
am: 667a5fe33b

* commit '667a5fe33b8a9bb3e812a4923758e466926338cb':
  Only pass NINJA_ARGS to the main ninja compile

Change-Id: Ie713aa9cd7d0d9d10dabb8b999a8ebd2e029588c
2016-05-06 01:28:19 +00:00
Dan Willemsen 9a97ba700b Only pass NINJA_ARGS to the main ninja compile
This way commands like "-t query <target>" will work against the main
build, instead of failing to find the target during the initial soong
build and stopping.

Change-Id: I9b6bd6ac431b95e12db69ec7f272669b9d292761
2016-05-05 16:55:21 -07:00
Colin Cross 5f1660ebf4 Merge "Update prebuilt build tools path" am: 405b73ea10
am: f51ed4020f

* commit 'f51ed4020fcabe9d7a8e7f72fb3852ff2871f0a1':
  Update prebuilt build tools path

Change-Id: I99082fbc8427454265e50ae2ca4235f48c426761
2016-05-05 19:07:28 +00:00
Colin Cross facdca17d5 Update prebuilt build tools path
Build tools have been moved from prebuilts/sdk/tools to
prebuilts/build-tools.

Bug: 27857138
Change-Id: I60be42c197d420897dab77808c25818c9d2e81df
2016-05-04 16:02:02 -07:00
Julien Desprez b110d546c4 Add vts to build in ninja
am: 1287843

* commit '1287843ab714447d0fb1f6a42ce416f6cfe9db38':
  Add vts to build in ninja

Change-Id: I455ac36b239668e4cc55f683ad21c5bea4348707
2016-04-01 17:05:43 +00:00
Julien Desprez 1287843ab7 Add vts to build in ninja
Bug: 27687012
Change-Id: Icb94e3eee71a8f54f13f868fa2461b2063e7ca6d
2016-04-01 15:39:48 +01:00
Dan Willemsen ae18638b04 Handle symlinked OUT_DIRs (again)
My previous attempt at properly handling symlinked OUT_DIRs only worked
if the symlink was to a different directory, not one in the same
directory.

This time, make sure that both make and soong use the same
representation of the output directory by passing BUILDDIR to
bootstrap.bash. Soong has been updated to pick whether to use a relative
or absolute path back to the source tree depending on what makes sense.
If the BUILDDIR or the path back to the source tree change, re-run the
bootstrap.

Also, move the $OUT_DIR/Android.mk and $OUT_DIR/CleanSpec.mk generation
to before Kati runs. In the case that $TOP/out was symlinked to
$TOP/out.angler:

 1) Soong generates out.angler/soong/Android.mk
 2) Kati's find generator produces in-memory tree of the filesystem
 3) $(shell ) creates out.angler/Android.mk
 4) The emulated findleaves Android.mk search finds
    out.angler/soong/Android.mk since the in-memory tree is never updated.

This doesn't happen in the normal case, because we pass --prune=$OUT_DIR
to findleaves.

Change-Id: Ib0fdae2e80f75ddcf33a3c8c5ea0978f5308b437
(cherry picked from commit cc60f01357)
[ccross: resolved conflicts in nyc-dev]
2016-03-30 12:24:57 -07:00
Colin Cross ecc9970127 Remove -d keepdepfile from ninja command line DO NOT MERGE
am: 4aca571

* commit '4aca5715523d1b8a85abde00d7ccc2989c90a96b':
  Remove -d keepdepfile from ninja command line DO NOT MERGE

Change-Id: Ie978a4113e3098b11eb263d326ba31ec7b2275fa
2016-03-29 19:31:40 +00:00
Colin Cross 4aca571552 Remove -d keepdepfile from ninja command line DO NOT MERGE
keepdepfile is not supported by the ninja prebuilt in nyc-dev.

Bug: 27886012
Change-Id: Ia4f0b15916618b1b7caa2abb53e25f87737b5288
2016-03-29 12:10:53 -07:00
Shinichiro Hamaji 2fb7b61a2e Use KATI_DEPFILE for .P associated with object files
Also specify "-d keepdepfile" to ninja so .P files won't be
deleted by ninja.

-include for .s files are removed because GCC doesn't
generate .d files for .s files.

Bug: 26839129
Bug: 27886012
Change-Id: If00e93c7a33449ec314a5cdba438475a32979f4e
(cherry picked from commit 4037c4225a)
2016-03-29 12:10:03 -07:00
Shinichiro Hamaji a73d4297a0 Link everything in libpthread.a to ckati
With this workaround, we can delete a lot of unnecessary code
in ckati: https://github.com/google/kati/commit/8380fb8525adfb5

Bug: 26839129
Change-Id: I3de1bf4cd6f2a65ee9322e8504459621871612fc
(cherry picked from commit f4511161d5)
2016-03-25 14:01:16 -07:00
Dan Willemsen b101826b15 Merge "Handle symlinked OUT_DIRs (again)"
am: fe09018

* commit 'fe09018b39920715607a19a0807863c95e0b8372':
  Handle symlinked OUT_DIRs (again)
2016-03-24 21:08:54 +00:00
Dan Willemsen cc60f01357 Handle symlinked OUT_DIRs (again)
My previous attempt at properly handling symlinked OUT_DIRs only worked
if the symlink was to a different directory, not one in the same
directory.

This time, make sure that both make and soong use the same
representation of the output directory by passing BUILDDIR to
bootstrap.bash. Soong has been updated to pick whether to use a relative
or absolute path back to the source tree depending on what makes sense.
If the BUILDDIR or the path back to the source tree change, re-run the
bootstrap.

Also, move the $OUT_DIR/Android.mk and $OUT_DIR/CleanSpec.mk generation
to before Kati runs. In the case that $TOP/out was symlinked to
$TOP/out.angler:

 1) Soong generates out.angler/soong/Android.mk
 2) Kati's find generator produces in-memory tree of the filesystem
 3) $(shell ) creates out.angler/Android.mk
 4) The emulated findleaves Android.mk search finds
    out.angler/soong/Android.mk since the in-memory tree is never updated.

This doesn't happen in the normal case, because we pass --prune=$OUT_DIR
to findleaves.

Change-Id: Ib0fdae2e80f75ddcf33a3c8c5ea0978f5308b437
2016-03-22 20:02:18 -07:00
Dan Willemsen 313bba6576 Merge "Always run Soong"
am: a800b9a

* commit 'a800b9a83a9f855a53723880f2d71fa107ea1028':
  Always run Soong
2016-03-21 21:21:02 +00:00
Dan Willemsen a800b9a83a Merge "Always run Soong" 2016-03-21 21:09:40 +00:00
Dan Willemsen 2d12ce1d88 Always run Soong
Without switching on USE_SOONG, this lets us verify that all builds have
blueprint/soong/go, and can generate a build.ninja file without
producing errors.

Change-Id: I79451ce24c8b5b6745e41d951153265441c33e8a
2016-03-15 00:36:07 +00:00
Shinichiro Hamaji fb87a2610d Merge "Use KATI_DEPFILE for .P associated with object files"
am: b95dc31033

* commit 'b95dc310330bd59fa860ab98822529bb0d2256c6':
  Use KATI_DEPFILE for .P associated with object files
2016-03-14 22:07:10 +00:00
Shinichiro Hamaji b95dc31033 Merge "Use KATI_DEPFILE for .P associated with object files" 2016-03-14 21:59:46 +00:00
Dan Willemsen 544bff0f3f Merge "Use hermetic ckati/makeparallel prebuilts"
am: b8744a26e4

* commit 'b8744a26e45d269c8fdad98d56c5df45984a6d5d':
  Use hermetic ckati/makeparallel prebuilts
2016-03-10 07:28:56 +00:00
Dan Willemsen 1487f31d83 Use hermetic ckati/makeparallel prebuilts
Currently, we're building against the native host version of libc++ and
other headers. Instead, use prebuilts of ckati/makeparallel built with
Soong against the included libc++ and sysroot. Building ckati /
makeparallel doesn't work well in unbundled branches that don't have all
of the libc++ dependencies to do successful host builds.

KATI is default variable defined when running under Kati, don't use it
for other purposes. Use CKATI instead.

Bug: 27533820
Change-Id: I82d66f5e34e3341a3cee4c5c83cd1d9a54d057ff
2016-03-09 17:19:30 -08:00
Dan Willemsen ee49f03fe5 resolve merge conflicts of e607224349 to nyc-dev-plus-aosp
Change-Id: I659925e8169cb90eb9e6066eadd09b6789092a8d
2016-03-09 11:28:51 -08:00
Dan Willemsen 441d646c6f Fix C++ on Darwin
We've been including the system libc++ headers even if we're building
against our version of libc++. Stop doing that, and only add the headers
to our path if we're using the system libraries.

If nothing is specified, on recent OSX versions, libc++ is the default
c++ library instead of libstdc++. We've been explicitly including the
libc++ headers on all versions, but that breaks old versions. Force us
over to libc++, since the system libstdc++ does not support C++11, and
libc++ is still supported on our oldest version (10.8).

Change-Id: I1fccee8da0f425e10ccc9d3247ed40664eb6ada0
2016-03-08 20:15:21 -08:00
Julien Desprez 6cd6ed3627 Support build old version of cts
am: ffc9c52243

* commit 'ffc9c52243499d5d65edfd7f795ae44370f64a29':
  Support build old version of cts
2016-03-07 19:19:25 +00:00
Julien Desprez ffc9c52243 Support build old version of cts
Bug: 27508747
Change-Id: I3d474f6f6534e172ecf1d0a6c833a9dfa6164344
2016-03-07 17:11:14 +00:00
Shinichiro Hamaji 4037c4225a Use KATI_DEPFILE for .P associated with object files
Also specify "-d keepdepfile" to ninja so .P files won't be
deleted by ninja.

-include for .s files are removed because GCC doesn't
generate .d files for .s files.

Bug: 26839129
Change-Id: If00e93c7a33449ec314a5cdba438475a32979f4e
2016-03-03 18:19:37 +09:00
Ari Hausman-Cohen 3bbaa8a8ff Merge "Adding a brillo_tests task." 2016-03-01 22:38:07 +00:00
Ari Hausman-Cohen 746f40236b Adding a brillo_tests task.
Places whitelisted brillo tests and the whitelist itself
in a zip when run.

BUG: 27385399
Change-Id: I93c2ea8cc521292a6de811bb47bc87a727edd21f
TEST: manual make dist brillo_tests, confirmed desired files were in zip.
2016-02-29 13:48:06 -08:00