Commit Graph

374 Commits

Author SHA1 Message Date
Dan Willemsen dd9aee166b Merge "Record module type statistics" 2016-07-29 20:47:14 +00:00
Dan Willemsen 3bf15e71d3 Record module type statistics
Creates a build_system_stats.txt build artifact that contains statistics
on how many BUILD_* modules are defined in a build. Also writes out
information about the Soong module types sent from the Soong build.

Merged-In: Iaf0c7062f542dc6942b5349854f3d49267cac4a5
Change-Id: Iaf0c7062f542dc6942b5349854f3d49267cac4a5
2016-07-29 19:58:35 +00:00
Dan Albert 4ac4231ca1 Add LOCAL_COPY_TO_INTERMEDIATE_LIBRARIES.
This allows a module to avoid being installed to the common library
directory.

Test: Prevents copying of NDK libraries with the NDK sysroot patches.
Bug: http://b/27533932
Change-Id: I24f11d5a70595bcd524ac5bd85034c226d2de211
2016-07-28 00:06:19 -07:00
Colin Cross 744d33b381 Add support for LOCAL_MODULE_SYMLINKS
Specifying LOCAL_MODULE_SYMLINKS will create symlinks to the installed
module in the same directory.

Change-Id: Idecb2b75f0c9999eb000eed9a79a989244ccf6c2
2016-07-15 12:22:39 -07:00
Evgenii Stepanov 428236614a Add LOCAL_NOSANITIZE.
This can be used to selectively disable individual sanitizers on a
target. For example, some parts of libc should be built with
SafeStack (when requested with SANITIZE_TARGET), but never with
AddressSanitizer. Current build rules specify LOCAL_SANITIZE := never
to disable AddressSanitizer; the idea is to change that to
LOCAL_NOSANITIZE := address thread.

Bug: 27729263
Change-Id: I2b770f2ce3faf6ad6798792327e96adb86fe4a4f
2016-06-30 22:49:17 +00:00
Dan Willemsen b0a08b874c Add LOCAL_LOGTAGS_FILES that prebuilts can use
Soong modules can define logtags files that need to be combined into
/system/etc/event-log-tags, so add a new LOCAL_LOGTAGS_FILES variable
that can be used to specify *.logtags file outside of LOCAL_SRC_FILES.

Bug: 28989759
Change-Id: I53c5d396dfb7c6006806758f351eb5cdde90fe74
2016-06-01 15:31:44 -07:00
Treehugger Robot c11ae6c569 Merge "Add LOCAL_CTS_GTEST_LIST_EXECUTABLE" 2016-05-23 21:18:58 +00:00
Chih-Hung Hsieh a9a55c7c7e Call clang-tidy based on WITH_TIDY* variables.
* Call clang-tidy before every C/C++ compilation if
  (1) clang-tidy is found at $(PATH_TO_CLANG_TIDY)
  (2) $(my_clang) is true
  (3) LOCAL_TIDY is 1 or true, or
      LOCAL_TIDY is undefined and WITH_TIDY is 1 or true.
* clang-tidy is called with -checks=$(my_tidy_checks),
  which has default '-*,google*,-google-readability*'
  and can be overwritten by WITH_TIDY_CHECKS.
* LOCAL_TIDY_CHECKS is appended to $(my_tidy_checks)
* Extra flags are passed to clang-tidy through
  WITH_TIDY_FLAGS or LOCAL_TIDY_FLAGS.
* To quickly find and fix clang-tidy warnings, set $(WITH_TIDY_ONLY)
  to 1 or true to skip compilation of C/C++ files.
* Add a PHONY tidy_only target,
  which includes all $(cpp_objects) and $(c_objects).
* The 'mm' and 'mmm' functions are changed to call make with
  the 'tidy_only' target when WITH_TIDY_ONLY is true or 1.
  In that case, only clang-tidy is called for C and C++ files.

Bug: http://b/27779618
Change-Id: I8adcfff217d68af49849b79aacee7d7654cafb1b
2016-04-21 12:31:13 -07:00
Yohann Roussel 6f4f2a7793 Merge "Allow to force min sdk given to Jack" 2016-04-14 21:14:38 +00:00
Yohann Roussel 109141ccc9 Allow to force min sdk given to Jack
Allows setting the min sdk version for target Jack commands,
overriding the default value obtained from LOCAL_SDK_CURRENT.

Bug: 28188420
Change-Id: I1b84ad8a7b6ae30639f8ade455c1e542af5692e4
2016-04-14 20:59:47 +00:00
Treehugger Robot 5f3b3689af Merge "Add support for LOCAL_EXPORT_*_LIBRARY_HEADERS" 2016-04-12 21:24:51 +00:00
Christopher Wiley ff1c3f2b05 Add support for LOCAL_EXPORT_*_LIBRARY_HEADERS
Listing a library in any of:

  LOCAL_EXPORT_SHARED_LIBRARY_HEADERS
  LOCAL_EXPORT_STATIC_LIBRARY_HEADERS

will cause the headers exported by that library to be exported from
the current library target as well.

This means that when library A's public headers include headers from
library B, library C which consumes A no longer has to explicitly list
A and B in its LOCAL_SHARED_LIBRARIES for the purpose of picking up B's
headers.

Bug: 27804373
Test: Introduced dependency on libbase to libbinder at the header level.
      Libraries that consume libbinder do not need to explicitly depend
      on libbase.

Change-Id: If69079f058a4a182c5ef5a3c5ba15035570da22d
2016-04-12 09:27:29 -07:00
Sebastien Hertz 74ec3f49d1 Update code coverage filtering
Replaces old LOCAL_EMMA_COVERAGE_FILTER by new variables:
- LOCAL_JACK_COVERAGE_INCLUDE_FILTER for included classes
- LOCAL_JACK_COVERAGE_EXCLUDE_FILTER for excluded classes
Both variables can contain a comma-separated list of class names,
where * and ? are accepted wildcard (like foo.?ar.*).

When code coverage is enabled, we will use these variables to
pass code coverage filters on the Jack command-line.

Bug: 28014424
Change-Id: Ic29c99b6feb7ea2251c29d659e7ea1f1c46d1ed1
2016-04-08 10:26:49 +02:00
Dan Albert 4410c29fd0 Merge "Add LOCAL_NDK_VERSION." 2016-03-31 23:11:26 +00:00
Dan Albert 13306af0c1 Add LOCAL_NDK_VERSION.
Used to select between releases of the NDK (r10, r11, etc).

Some of the libraries we use in Android come as prebuilts from
google3, which are most likely built against an older NDK than what
we have in the platform. Since things may not be ABI compatible
release to release, we need to keep legacy versions accessible for
those to keep building.

Change-Id: Ia3df42fa6f3a7bd5108ff6bbb0f2ca06239c3be9
2016-03-31 12:54:21 -07:00
Ying Wang 858657366f Remove support of disabling Jack.
We removed code and variables related to running dx on classes.jar in
this change. Also removed target emma rules (but kept the emma rules for
host java libraries), for it's now done by Jack.
We still support to build classes.jar (and javalib.jar for static Java
libraries) using javac, because tools like javadoc need class files as
input.
Removed the obsolete install-dex-debug.

Bug: 27400061
Change-Id: If0bcdfe62cb181a98754fb0dbe1c12c92e38d3e8
2016-03-30 14:03:12 -07:00
Ying Wang fbc5b9f56b Rebuild odex files in PDK fusion build.
To rebuild odex files of Java libraries and apps,
we store the jars/apks without stripping the classes.dex inside the
platform.zip. We also save the build variables that may affect how we
rebuild an odex in pdk_dexpreopt_config.mk in the platform.zip.
We store the files and configuration only for libraries/apps that get
installed to the system.img (or vendor.img).

In PDK fusion build, we auto-generate prebuilt module definitions for
the javalib.jar and package.dex.apk carried in the platform.zip, using
configuration stored in pdk_dexpreopt_config.mk.
With the prebult modules, we override the implicit rule that directly
copies the odex from the platform.zip.
To rebuild odex of javalib.jar, we added support for prebuilt shared Java
library to prebiult_internal.mk. An installable prebuilt Java library is
treated as shared Java library, i.e. with classes.dex in the jar instead
of a set of .class files.
For apks in the platform.zip, we install the stripped version from
platform files inside platform.zip, instead of the package.dex.apk,
using a new variable LOCAL_REPLACE_PREBUILT_APK_INSTALLED. We can't
strip package.dex.apk because we can't re-sign the stripped apk at this
point.

We generate prebuilt module only if it's not already defined in the
source tree.

Bug: 27543283
Change-Id: I9e146f8b713d6f57c397fd28d88c9ab700757ca1
(cherry-pick from commit 3a61eeb6cb)
2016-03-25 11:06:04 -07:00
Dan Willemsen 4fd64d06cb Add LOCAL_CTS_GTEST_LIST_EXECUTABLE
Change-Id: I9bca66d0e0ef25264b6576d907fa57997e62e8c1
2016-03-02 21:24:04 -08:00
Ying Wang 6efe88ba95 Support arch specific variants of LOCAL_STRIP_MODULE/LOCAL_PACK_MODULE_RELOCATIONS
So that we can disable only one in multilib modules.

Bug: 27442756
Change-Id: I4ca379fac997f9165c47cb93d34bf1f483f5a241
(cherry-pick from commit b6eb8ddbde)
2016-03-02 10:59:23 -08:00
Dan Willemsen 479311bc7c Remove LOCAL_ACP_UNAVAILABLE
Now that copy-file-to-target doesn't use acp, nothing in the acp build
path uses acp, so we don't need to special case it to prevent loops.

Change-Id: I12810c1b064d0c03135a80077a76bc4c9cc18b24
2016-03-01 13:16:53 -08:00
Neil Fuller dcd446e1e9 Merge "Allow java targets to support 1.8 source / target" 2016-02-09 23:01:40 +00:00
Dan Willemsen 9ecbf83259 Add 64-bit windows cross-compiles
This is mostly the same as the existing 2ND_HOST / HOST_CROSS support.

The interesting thing I did here was make x86 the 'first' architecture,
and x86_64 the second. This way LOCAL_MULTILIB := first defaults to
32-bit windows modules.

  windows-x86/bin   <- defaults to 32-bit executables
  windows-x86/lib   <- 32-bit libraries, like before
  windows-x86/lib64 <- 64-bit libraries
  windows-x86/obj   <- 32-bit intermediates
  windows-x86/obj64 <- 64-bit intermediates

Then modules are registered with the names:

  host_cross_liblog    <- 32-bit, like before
  host_cross_liblog_64 <- 64-bit

Bug: 26957718
Change-Id: I9f119411acb43e973ec1e6bca3c1dc291c91556c
2016-02-05 16:33:18 -08:00
Neil Fuller 2428bfeb88 Allow java targets to support 1.8 source / target
This change enables build rules to specify:

LOCAL_JAVA_LANGUAGE_VERSION := 1.8

to enable -source 1.8 -target 1.8 for javac and
equivalent flags for Jack.

Bug: 26753820
(cherry-picked from commit cdfbe4a852)

Change-Id: I361c99dd599e7b4a041f02c9562e461da2b0502e
2016-02-03 17:08:39 +00:00
Narayan Kamath 76c7d68ed9 Allow modules to override the default NOTICE file.
It's useful in projects where different top level modules have
different licenses associated with them.

(cherry picked from commit 3026f4daf1)

Change-Id: I71b20d6f979c0f50562f4f44b2af1f3ec2909444
2015-12-24 10:10:55 +00:00
Yohann Roussel 6528ea3086 Remove LOCAL_JACK_EXTRA_ARGS
Use of DEFAULT_JACK_EXTRA_ARGS and LOCAL_JACK_FLAGS provides all needed
support.

(cherry picked from commit d2b2983cc7)

Change-Id: I1cd76836792e7332bc3750408a860400b0957485
2015-10-21 17:22:27 +02:00
Yohann Roussel b2c5558435 Clean call-jack and its callers
This is possible now that we have the new Jack server.
Also fix dependency from dex/jack target to jack script
instead of jack.jar.

(cherry picked from commit 5e50b34221)

Change-Id: I8e7aa5087ba8d73cc93140ddfca8f4ab2f505175
2015-10-21 17:02:25 +02:00
Colin Cross a04abc8e23 Add support for LOCAL_SRC_FILES_EXCLUDE
LOCAL_SRC_FILES_EXCLUDE will be used to filter files out of
LOCAL_SRC_FILES.  A common usage will be to use
LOCAL_SRC_FILES_EXCLUDE_<arch> to remove a source file that will be
replaced with an arch-optimized version.

Change-Id: I75cc6114c47fb784bab65cae8f618c4f395f07bb
2015-10-16 17:33:01 -07:00
Ying Wang 3a3c21cafb am 094116f0: Merge "Remove the unnecessary rs_compatibility_jni_libs install rules."
* commit '094116f0374da3dcba3ff1425f0cb42caf1c6d59':
  Remove the unnecessary rs_compatibility_jni_libs install rules.
2015-09-26 01:06:38 +00:00
Ying Wang ac30b88dc4 Remove the unnecessary rs_compatibility_jni_libs install rules.
We only build rs_compatibility_jni_libs for unbundled build or when
FORCE_BUILD_RS_COMPAT is set. We don't need to install the
rs_compatibility_jni_libs to system.img in either case.

It's bad idea to install them to system.img, because when two modules
have .rs files with the same name, their installed files conflict.

Change-Id: I7524a301c59396db464f28b17b8f8bf1f15523ca
2015-09-25 16:14:57 -07:00
Dan Albert ded3f15eeb am 782b98ea: Merge changes I3ca9ed36,Ibd7eec5c
* commit '782b98eaa1c02d935b338f7317fef139067291bb':
  Revert "Default to hiding libgcc symbols in each object."
  Revert "Don't apply --exclude-libs for the host."
2015-09-23 23:47:37 +00:00
Dan Albert b77aedbf1e Revert "Default to hiding libgcc symbols in each object."
This reverts commit 021b7651a5.

Bug: http://b/24166967
Change-Id: I3ca9ed36fa3b55c7eb129c209903676879720acd
2015-09-23 16:18:18 -07:00
Dan Albert 0b8113ee08 am c496b259: Merge "Default to hiding libgcc symbols in each object."
* commit 'c496b259b8dddf0eac71a50f5e258da4a353d6bb':
  Default to hiding libgcc symbols in each object.
2015-09-23 20:15:37 +00:00
Dan Albert 021b7651a5 Default to hiding libgcc symbols in each object.
Bug: http://b/24166967
Change-Id: I3dba264ae70a2e13b3edee7575139e86ef49be71
2015-09-22 16:49:28 -07:00
Dan Willemsen c98d9a9d0f am f1c09d7f: Merge "Add HOST_CROSS_OS"
* commit 'f1c09d7fbd92a08cc51950a7d35fb5f7fc564a20':
  Add HOST_CROSS_OS
2015-09-09 18:19:13 +00:00
Dan Willemsen 057aaea54a Add HOST_CROSS_OS
Instead of using recursive make to change the HOST_OS when building the
windows SDK under linux, add the concept of cross-building to another
host os.

Bug: 23566667
Change-Id: I6dc525b601b6251d458d197c30bf4660d7485502
2015-09-09 18:12:29 +00:00
Dan Willemsen f18345af74 am 4379e2b8: Merge "Add LOCAL_MODULE_HOST_OS"
* commit '4379e2b8bbaf2a02777f189c758e251015eb7f76':
  Add LOCAL_MODULE_HOST_OS
2015-09-04 01:31:22 +00:00
Dan Willemsen 859ac34064 Add LOCAL_MODULE_HOST_OS
Instead of wrapping a host module definition in 'ifeq($(HOST_OS),...)'
in the Android.mk files, define which hosts are supported using
LOCAL_MODULE_HOST_OS.

A blank LOCAL_MODULE_HOST_OS means that linux and darwin are supported.
A non-empty LOCAL_MODULE_HOST_OS lists the supported HOST_OSs.

Change-Id: I1e342d1908cfa00aef2c39c145b4f5f81c373bc6
2015-09-03 16:40:51 -07:00
Dan Willemsen d174629951 am 57ff23b0: Merge "Add support for LOCAL_SRC_FILES_(host)_(arch)"
* commit '57ff23b0ed02affce494d14d8a0f5e9e4717baf7':
  Add support for LOCAL_SRC_FILES_(host)_(arch)
2015-08-28 03:49:02 +00:00
Dan Willemsen 399c59f3aa am d5deac8d: Merge "Add _(darwin|linux|windows)"
* commit 'd5deac8db951ec0a1c9edd806ea1758b836f8c46':
  Add _(darwin|linux|windows)
2015-08-28 03:49:01 +00:00
Dan Willemsen 85ac8d2a00 Add support for LOCAL_SRC_FILES_(host)_(arch)
For boringssl, which has architecture specific host assembly files

Bug: 23566667

Change-Id: Ia4602d28e93a1b3d1400cf95417b5e446c5fb84b
2015-08-28 03:38:43 +00:00
Dan Willemsen 7a5498568f Add _(darwin|linux|windows)
So that we can support building both linux and windows binaries at the
same time on a linux host. This replaces the ifeq($(HOST_OS),...) checks
in Android.mk files.

Bug: 23566667

Change-Id: I693e11984e36d55bb6f09fa0d49bc485463e16fb
2015-08-28 03:36:22 +00:00
Ying Wang 4270d91bbe am 8a3241e3: am 11a38e7a: Merge "Support LOCAL_INIT_RC."
* commit '8a3241e39ad541666aeff291b088e7277b5519ca':
  Support LOCAL_INIT_RC.
2015-08-20 21:00:07 +00:00
Ying Wang 8a3241e39a am 11a38e7a: Merge "Support LOCAL_INIT_RC."
* commit '11a38e7a9164bc3268344ce716c4bd12b08cb05c':
  Support LOCAL_INIT_RC.
2015-08-20 20:53:32 +00:00
Ying Wang 9fe15ac757 Support LOCAL_INIT_RC.
A module can install a companion init.rc file,
by specifying:
LOCAL_INIT_RC := <init.rc-file-path-replative-to-LOCAL_PATH>
You can also use the variant with _32 or _64 suffix.

Bug: 23186545
Change-Id: I00a96509f5707ae39361a0c5555fa59d46c90322
2015-08-20 12:15:15 -07:00
Christopher Wiley 9c49f0affa am 688b4a3d: am 4d2b79f9: Merge "Generate DBus proxies and adaptors separately"
* commit '688b4a3db72b58e8908ecdb24e6c4d64a44fdbc6':
  Generate DBus proxies and adaptors separately
2015-08-19 22:31:03 +00:00
Christopher Wiley 688b4a3db7 am 4d2b79f9: Merge "Generate DBus proxies and adaptors separately"
* commit '4d2b79f99ef34a504fe9f7e362a861d7ddee5659':
  Generate DBus proxies and adaptors separately
2015-08-19 18:37:48 +00:00
Christopher Wiley 529f176ee1 Generate DBus proxies and adaptors separately
Enable daemons exposing an interface over DBus to easily
build client libraries.  Now daemons can write rules like:

include $(CLEAR_VARS)
LOCAL_MODULE := libdbus-binding-example-client
LOCAL_DBUS_PROXY_PREFIX := dbus-example-example
LOCAL_SRC_FILES := \
    dbus_bindings/org.chromium.Example.Manager.dbus.xml \
    dbus_bindings/dbus-service-config.json
include $(BUILD_SHARED_LIBRARY)

to expose a client library.

While here, add support for generating independent adaptor header
files on a per interface basis.

Bug: 22608897
Change-Id: I011f9afc234811c31e445898321c2731c482fa77
2015-08-19 11:14:16 -07:00
Ying Wang 6c4176e2d0 am 8b4d1432: am cd7dfdb4: Merge "Cleanups."
* commit '8b4d1432395733db45e2dfaeee24fe44d3c49bbe':
  Cleanups.
2015-07-23 02:06:39 +00:00
Ying Wang 8b4d143239 am cd7dfdb4: Merge "Cleanups."
* commit 'cd7dfdb4bf3f7d431d2a37908c550a83a282bf22':
  Cleanups.
2015-07-21 23:57:42 +00:00
Ying Wang bbd4755647 Cleanups.
- Deleted unused functions in definitions.mk.
- lint is never fully functional in the platform source tree.
- Retire LOCAL_DIST_BUNDLED_BINARIES: now the build system/framework
  supports JNI embedded in apk.

Change-Id: I6314cb20d1544c704ccbc4c1f9cccb9c54fb5a51
2015-07-21 16:03:19 -07:00