Commit graph

17 commits

Author SHA1 Message Date
Dan Willemsen
8dae49c5e1 Add Header Library support to Make
We currently use static libraries without any source files to represent
header libraries, but Soong actually has cc_library_headers. So to
export those in a separate namespace from static libraries, implement
them in Make as well.

This also adds a nice pretty-warning / pretty-error macro that can be
used to print out standard warning messages pointing to the real source
file having the problem.

Test: Use a header library exported by Soong in a Make module
Change-Id: I3486539e247524cb82a20620745fc7be03014e14
2017-02-15 16:04:49 -08:00
Dan Willemsen
e0bba6fa12 Fix PDK dupbuild issues
The PDK uses pattern rules in order to install files from the PDK. When
those files already have build rules, the explicit rules override the
pattern rules, and everything works. But because Make (and Kati) doesn't
attempt to clean the file paths, if one of the rules has a redundant /,
we'll export two ninja rules, and ninja will error out with a dupbuild
error.

The PDK pattern rules are clean, but the explicit notice file creation
was not, it was always adding a double // in between NOTICE_FILES/src
and the module path.

Some modules were also setting a LOCAL_MODULE_PATH with a trailing /,
which is redundant, and also hits the above problem. Instead of fixing
all of the modules, just strip a trailing / from my_module_path.

Bug: 33451638
Test: Build with a PDK
Change-Id: Iff3e98fd191ea90626b9b89f179537e8a75f5ef2
2016-12-09 21:15:41 -08: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
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
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
Yohann Roussel
f09e59eb52 [DO NOT MERGE] Compile using Jack.
This allows to compile dex targeted java sources using Jack and Jill.
Default is still to compile with the legacy toolchain. Default can be
switched to the new toolchain by setting environement variable:
export ANDROID_COMPILE_WITH_JACK=true
Toolchain can also be forced for one module by defining
LOCAL_JACK_ENABLED:=full # disabled, full, incremental
in the mk portion defining the module.

Jack execution environement can be controlled with:

Global variable ANDROID_JACK_VM allow to change the jvm executing Jack.
Global variable ANDROID_JACK_VM_ARGS allows to change default args given
to the jvm.
Global variable ANDROID_JACK_EXTRA_ARGS allows to define some default args
to give to Jack

LOCAL_JACK_VM_ARGS allows to override default args given to the jvm for
the module.
LOCAL_JACK_EXTRA_ARGS allows to override default args passed to Jack.

This includes cherry-picks of the following changes:
b4c49cba57
22c3fa6d73
138768c1bb
5dd3e1d312
83d5d04047
8bc90fd2d6
140274707e
0fbc9ff2a2
833b427d72
f9a27f45b4
2809666941
37822c443d
c6b44d43c3
d2a76c14bf
06744f60fc
95573d5036
b821391614
2794e7b582
801f2c44d0
c76d99dca1
f528e132d6
76a5e0bd1a
e25b3984ff Partially, only Jack related parts werekept
ec46a3b71f
abee3a9f41
77cbe10fd9
daf07db4cd
b6bfb5893a

Ie all Jack related changes untill
b6bfb5893a
except
a96cc59ab5 "Use Jack by default"

Change-Id: If9d47ef1c4fd1e6765ad2a47d816c1ad3cfab0e3
2015-05-19 18:31:05 +02:00
Ying Wang
6ef6519170 Set up rules to build static libraries for TARGET_2ND_ARCH
The rules for the 2nd arch are set up in the second inclusion
of static_library_internal.mk.
libfoo of the 2nd arch will be built into
$(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)/libfoo_intermediates/libfoo.a.

Bug: 11654773
Change-Id: I1d92733968fc442e9225b4df5bd1b551a81d89f7
2014-01-24 13:35:09 -08:00
Ying Wang
62c81f821f Collect NOTICE files for apps_only build.
In apps_only build (after running tapas or exporting TARGET_BUILD_APPS),
run "make notice_files" to collect and combine the NOTICE files of
modules that are needed by the apps.

Bug: 10445634
Change-Id: I6555bba1104e43b48c723c82143c46d444a75e80
2013-08-24 13:55:59 -07:00
Torne (Richard Coles)
278bbf1263 Don't concatenate the NOTICE file for a single module.
When the NOTICE file for a module changed, the new NOTICE was being
concatenated onto the end of the old one in non-clean builds, taking up
more and more space and presumably duplicating most of the content. Only
one set of rules for a given file can exist in make, so there cannot be
a case where more than one $(notice_file) was intentionally being
concatenated together as this would be an error.

Change-Id: I0f5fae498225eaee5cc75d854223b5ba790fcebe
2013-04-30 16:26:58 +01:00
Ying Wang
13d6950ef8 NOTICE file only module
To pick up a NOTICE file in LOCAL_PATH and attach it to
/system/lib/libfoo.so, use the following syntax:

include $(CLEAR_VARS)
LOCAL_MODULE_CLASS := NOTICE_FILES
LOCAL_INSTALLED_MODULE := $(PRODUCT_OUT)/system/lib/libfoo.so
include $(BUILD_NOTICE_FILE)

Bug: 7460213
Change-Id: Ie692be72deab37be04d1b578578c131a0885a090
2012-11-01 17:29:10 -07:00
Torne (Richard Coles)
63afdc12d5 Use GYP instead of NONE as the module class for gyp.
The Chromium makefile generator used to use module class NONE for the
meta-targets in the gyp files; this was changed to GYP in order to make
it more obvious where they come from in the build. Update the build
system's handling of NOTICE files to reflect this change.

Change-Id: Iff7d4487f3024ec83db0c2a896ec0caf8fb18b24
2012-10-25 15:49:39 +01:00
Steve Block
f55aeb0668 Don't fail if a target of type NONE has a NOTICE file present
Targets of type NONE are used extensively in Android makefiles which have been
auto-generated from gyp build files. The gyp generator uses such targets to
represent gyp targets which don't produce an output file. Typically, many such
targets exist in a single Android makefile.

We use a generated Android makefile for Chromium. This project has a NOTICE
file, intended to be installed with a SHARED_LIBRARY target. However, the build
fails when processing the targets of type NONE, as it does not know where
to install the NOTICE file.

This change causes the NOTICE to be ignored in this case, rather than failing
the build.

Change-Id: I70cf9a406e4a1c932f8a734f53491f7c5281ee17
2012-06-27 16:48:31 +01:00
David 'Digit' Turner
3e0e611e76 build speedup: Do not use shell 'find' function to look for NOTICE files.
The GNU Make wildcard function can be used to look for a specific file and
is _much_ faster than invoking the find command through $(shell ...).

Since notice_files.mk is included by base_rules.mk for each and every module
in the build tree, this represents a considerable speed-up. For example, when
building the full-eng product from the AOSP tree, the no-op "make" goes from
21 seconds to 16 seconds with this patch applied.

Change-Id: Ideb1bb74d5bfbb650834fa4b6e151ff24dcd0150
2011-03-29 14:27:27 +02:00
Joe Onorato
681925681a Fix the warning about NOTICE files overriding previous targets.
Use a different name for prebuilt libraries based on their LOCAL_MODULE --
they were all colliding using the same name, javalib.jar.  These names
are synthetic, since the libraries don't actually exist on the device
as such.
2009-04-13 12:51:43 -04:00
The Android Open Source Project
88b607994a auto import from //depot/cupcake/@135843 2009-03-03 19:28:42 -08:00
The Android Open Source Project
05806d7af6 auto import from //depot/cupcake/@135843 2009-03-03 18:28:14 -08:00
The Android Open Source Project
b6c1cf6de7 Initial Contribution 2008-10-21 07:00:00 -07:00