Commit graph

170 commits

Author SHA1 Message Date
Narayan Kamath
40dae1fefa Rework the generation of host java libraries.
We currently have two types of host libraries, those
meant for the host VM (Sun, OpenJDK etc.) and those meant
for a host dalvik build. The former need to be compiled
against the host standard libraries and the latter need
to be compiled against libcore. This change introduces
two new build rules to complement the existing the existing
host rules.

BUILD_HOST_DALVIK_JAVA_LIBRARY : Build a java library for
a host build of dalvik. Bootclasspath will be set to a host
build of libcore.
BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY : Build a static java
library for a host build of dalvik. Bootclasspath will be set
to a host build of libcore.

This change also removes support for the LOCAL_BUILD_HOST_DEX
flag, which is now unnecessary.

bug: 8992787

(cherry picked from commit 0dd273a3f6)

Change-Id: I3569fff8eaa4d26d55fcc317bd98471f55d74c14
2013-11-25 10:17:53 +00:00
The Android Open Source Project
b9041a45b1 Merge commit 'c73341006286c391ae4d268a77f5e008045d5308' into HEAD
Change-Id: I4bf7d32d65e19dfa1f0533fdd3b2295c50b13005
2013-11-22 11:06:11 -08:00
Elliott Hughes
32bfd70333 Remove the hacks needed to support ash and mksh concurrently.
We no longer have ash, and we'd rather not have unnecessary symbolic links
on the system.

Change-Id: Icfb1a51f1baaf1861c203f6ed93843b094deb65d
2013-11-05 11:13:49 -08:00
Elliott Hughes
17753f5c6a Remove shell_ash; ash is but ashes.
Change-Id: I88040e39c51986b14e3a764e7bb9e2c8c05ed86b
2013-11-05 09:05:50 -08:00
Ying Wang
d74b538d9a Add the FRAMEWORKS_BASE_JAVA_SRC_DIRS to aidl includes
only if the module is built against the platform, not the SDK.
Previously it added it if it's doing a platform build.
But we can do an apps_only build inside the platform source tree and
such a build may build modules against the platform.
This fixes the apps build in the platform source tree.

Change-Id: I73e32a8f0e505349790a102321f88e77fba472cd
2013-10-01 18:16:45 -07:00
Ying Wang
392d042c21 am b6da30c3: am 2408479c: Allow module to specify LOCAL_INSTALLED_MODULE_STEM
* commit 'b6da30c3724cc2a452be2c1ae425eff4f7d55944':
  Allow module to specify LOCAL_INSTALLED_MODULE_STEM
2013-09-25 12:37:19 -07:00
Ying Wang
b6da30c372 am 2408479c: Allow module to specify LOCAL_INSTALLED_MODULE_STEM
* commit '2408479cf9cf9cfe87e464e9b5d2f36143818d37':
  Allow module to specify LOCAL_INSTALLED_MODULE_STEM
2013-09-25 12:35:04 -07:00
Ying Wang
2408479cf9 Allow module to specify LOCAL_INSTALLED_MODULE_STEM
With this change, you can install a shared library with module name foo
as bar.so to the system.img with:
LOCAL_INSTALLED_MODULE_STEM := bar.so
Note that we in general still disallow a static/shared library to
specify LOCAL_MODULE_STEM or LOCAL_BUILT_MODULE_STEM, because the build
system uses LOCAL_MODULE to compute build time dependencies, such as
export_includes, the -l linker flag etc.
Also, if you use LOCAL_INSTALLED_MODULE_STEM to change the installed
file name and if any other module links against this library, you may
run into runtime error: the library name baked in to the binary is not
the same as file name in the system image.

Change-Id: I55b571c8139c3bda07a4a0e50cea0f20d8d6c168
2013-09-25 12:30:59 -07:00
Ying Wang
990cf5e57d Better handle of need_compile_java.
Change-Id: I609a27e2b35b08962243b6516c6c525c0c938d3c
2013-08-28 14:05:20 -07:00
Ying Wang
576e0146a9 Make it a fatal error if no source files for Java module.
Change-Id: Ia04158c11381b6b1687b9d5c699a9ea8ae3cb317
2013-08-28 11:19:36 -07:00
Ying Wang
27f2cfb72e am 29695daa: am 653a037d: am 638ce57a: Treat LOCAL_APK_LIBRARIES like shared Java libraries.
* commit '29695daa9734a8dfb516b7ff2e35b2b263e6b37b':
  Treat LOCAL_APK_LIBRARIES like shared Java libraries.
2013-08-23 12:10:20 -07:00
Ying Wang
29695daa97 am 653a037d: am 638ce57a: Treat LOCAL_APK_LIBRARIES like shared Java libraries.
* commit '653a037d70d770d2fc03d4f205a9c626af5f5c76':
  Treat LOCAL_APK_LIBRARIES like shared Java libraries.
2013-08-23 12:07:45 -07:00
Ying Wang
638ce57a58 Treat LOCAL_APK_LIBRARIES like shared Java libraries.
This fix proguard build.
Bug: 10307372

Change-Id: Id99d6e903077b4bacdea2e68cbb78e46a4a6afb8
2013-08-23 11:59:49 -07:00
Ying Wang
c5b72527d3 am ec3c15e5: am 04c4d34d: am 7311a344: Make it easier to enable obfuscation and optimization.
* commit 'ec3c15e5c7c11cf3a831898f286c7eb7c216e50f':
  Make it easier to enable obfuscation and optimization.
2013-08-23 10:12:26 -07:00
Ying Wang
ec3c15e5c7 am 04c4d34d: am 7311a344: Make it easier to enable obfuscation and optimization.
* commit '04c4d34d4fdb56c824abf39239d2c87806706b7e':
  Make it easier to enable obfuscation and optimization.
2013-08-23 10:09:27 -07:00
Ying Wang
7311a344be Make it easier to enable obfuscation and optimization.
With this change, use:
* LOCAL_PROGUARD_ENABLED := obfuscation  # to enable obfuscation
* LOCAL_PROGUARD_ENABLED := optimization # to enable optimization
* LOCAL_PROGUARD_ENABLED := obfuscation optimization # to enable both

Now the meaning of the LOCAL_PROGUARD_ENABLED options:
* full:
    Use the build system's default configurations:
    with shrink but no obfuscation or optimization,
    global proguard flags in build/core/proguard.flags
    are applied.
* custom:
    The same as "full" except no aapt-generated resource-related
    proguard flags.
* nosystem:
    Don't use any build system's default configurations; but
    aapt-generated proguard flags are still applied. You are
    responsible for any other flags.
* disabled:
    Disable proguard.
* obfuscation:
    The same as "full" but with obfuscation enabled.
* optimization:
    The same as "full" but with optimization enabled.
* no value (the default):
    The build system chooses the proper value: "full" if it's an
    app; "disabled" if it's a library.

You can use more than 1 of them in a meaningful combination,
for example:
LOCAL_PROGUARD_ENABLED := obfuscation optimization

Bug: 10307372
Change-Id: Id248caca3048e99547f16559fae74f4afe85c354
2013-08-22 17:12:38 -07:00
Ying Wang
5efaa72ac1 am 51aab877: am 5d1db8b4: Merge "Allow proto builds to pass in java proto params."
* commit '51aab8775ab86990abef411d00f5686e41022eee':
  Allow proto builds to pass in java proto params.
2013-07-25 17:04:20 -07:00
Ulas Kirazci
6e485b545a Allow proto builds to pass in java proto params.
Change-Id: I65fe0cd96f818f59267da6159e6bd2ad28f07a11
2013-07-25 13:40:53 -07:00
Ulas Kirazci
24c7289d24 Revert "Allow proto builds to pass in java proto params."
This reverts commit 28b46fc16c.

Change-Id: Iaca9fa749c6f460911cc46e08e6b3ae2555b8bcc
2013-07-25 19:35:28 +00:00
Ben Murdoch
fc2bad5c36 Revert "Allow proto builds to pass in java proto params."
This reverts commit 28b46fc16c.

Speculative fix for master builds. I cannot repro the break the bots
are seeing locally, but it seems related to building protobufs and this
CL was in the first broken build.
2013-07-25 11:44:53 +01:00
Ulas Kirazci
dd3d8f4ca9 am 6a5fc54f: am a825aa13: Merge "Allow proto builds to pass in java proto params."
* commit '6a5fc54fe9904214a7df1d34c9d48ad0310d867e':
  Allow proto builds to pass in java proto params.
2013-07-25 00:47:09 -07:00
Ulas Kirazci
28b46fc16c Allow proto builds to pass in java proto params.
Also source files which have dependencies need to be bundled together
(at least the way the build system is set up now). Move
--proto_path=$(TOP) to the end so that it does not take precedence
over user-supplied --proto_path flags.

Change-Id: Ia532647fe8811d39230a23ba3671685b0388cbe0
2013-07-24 18:02:57 -07:00
Ying Wang
5338fbfaca Install to TARGET_OUT_APPS_PRIVILEGED if LOCAL_PRIVILEGED_MODULE is true
Change-Id: I268b8652f18034aa3fdd3126ebf6196f78c4bbb2
2013-05-08 15:49:08 -07:00
Ying Wang
c5cd2c6ddb am b1578404: Merge "Fix /system/app/.odex not updated issue"
* commit 'b1578404624f2369bb92a1e69c02f2ef15372002':
  Fix /system/app/$app.odex not updated issue
2013-04-17 10:30:42 -07:00
Chih-Wei Huang
868e0c5a00 Fix /system/app/$app.odex not updated issue
$(built_odex) depends on $(LOCAL_BUILT_MODULE) but doesn't have any build
recipe. It is built by the rules of $(LOCAL_BUILT_MODULE) that results in
a subtle bug: $(built_odex) is always newer than $(LOCAL_BUILT_MODULE)
if $(LOCAL_BUILT_MODULE) rebuilt. Therefore 'make' thinks the targets
(/system/app/$app.odex) depending on $(built_odex) don't need to be updated.
It seems an allegedly optimization bug of 'make'.

The simple fix is to explicitly add $(LOCAL_BUILT_MODULE) as a dependency
of $(installed_odex).
2013-04-17 16:00:40 +08:00
Ulas Kirazci
bde274ef83 Add a "nano" option to LOCAL_PROTOC_OPTIMIZE_TYPE.
Change-Id: I7429015b3c5f7f38b7be01eb2d4927f7a9999c80
2013-04-03 13:37:07 -07:00
Wink Saville
061604bdad am 0262d0f7: Merge "Add a "nano" option to LOCAL_PROTOC_OPTIMIZE_TYPE."
* commit '0262d0f74725f8a165b20eeac323cdd8ca31df03':
  Add a "nano" option to LOCAL_PROTOC_OPTIMIZE_TYPE.
2013-04-01 18:02:06 -07:00
Ulas Kirazci
76e3a39061 Add a "nano" option to LOCAL_PROTOC_OPTIMIZE_TYPE.
Change-Id: I7429015b3c5f7f38b7be01eb2d4927f7a9999c80
2013-03-28 16:28:09 -07:00
Ying Wang
b2c7917463 am ca983c08: am 97c280ec: Merge "We have to use := instead of +="
* commit 'ca983c08fbc49b36eb0d71476842a86afbdcb8ed':
  We have to use := instead of +=
2013-03-22 19:50:09 -07:00
Ying Wang
4d063410a3 We have to use := instead of +=
If we use +=, the right side may be deferred to evaluate,
if that target-specific variable is not defined yet.
That's a mistke.

Change-Id: I1635ee4791473f407866e010d612948c02cdebf6
2013-03-22 18:52:57 -07:00
Dianne Hackborn
a1fece009f Add LOCAL_APK_LIBRARIES argument.
This allows you to build apks that link against other
apks using the framework's new shared library apk feature.

Also if you are using LOCAL_APK_LIBRARIES, then LOCAL_DEX_PREOPT
will not be allowed.  This is because using preopt means the
apk is stripped of its dex file, so the pre-installed apk can't
be redexed if its associated library changes.  (Even if the build
system didn't strip the dex, Dalvik still has issues because it
assumes a pre-odex file is always valid.)

Change-Id: I952c0d24f8975f75aff67f78b5faeec91144c3e7
2013-03-12 10:50:28 -07:00
Ying Wang
2e65cd5510 Don't install all host modules by default.
Instead we should explicitly set up the dependency, if the module will
be used in the build process; Use LOCAL_MODULE_TAGS with eng, debug or
tests if the module is for testing; or add to PRODUCT_PACKAGES if it's
required by a product.

Change-Id: Ic26319c26c1166bc1062dfbcfb4e006af185249a
2013-03-06 11:47:36 -08:00
Ying Wang
e56605ada2 Add LOCAL_POST_INSTALL_CMD
With this support, you can piggy-back some symlinks when a module gets
installed.
This is especially helpful if the target of the symlink doesn't exist on
the build machine.

Change-Id: I48af7a90ce67475bc49b72f94a8753b94da98edd
2013-02-06 11:44:41 -08:00
Ying Wang
5a8d3450b9 Check build even if a module it's built against SDK.
Change-Id: I2466620e52541bb938721772ce9f63c12bc212db
2013-01-30 14:43:05 -08:00
Ying Wang
1d977e3183 Refactor calculation LOCAL_CHECKED_MODULE
To remove dup code;
Also added two more umbrella targets: host, target.

Change-Id: Ia6deed2940a26a31ad823fe54816840861f3fb72
2013-01-30 14:23:58 -08:00
Ying Wang
ef1a9613cb Revert "Refactor calculation LOCAL_CHECKED_MODULE"
This reverts commit ba99e69424

Change-Id: I3c42dea56376d26a5bb77b4944ae17a6875aadbb
2013-01-30 20:44:49 +00:00
Ying Wang
ba99e69424 Refactor calculation LOCAL_CHECKED_MODULE
To remove dup code;
Also added two more umbrella targets: host, target.

Change-Id: Ic82db571435cdbd10fd9e70e6c4195f4ca9ecd99
2013-01-30 11:22:06 -08:00
Ying Wang
ef4d82f283 Umbrella build targets to help engineers verify build
With this change, by choosing the right build target, you can reduce
significant verification build time:
If you are working on the framework, "make target-java" sounds enough;
if you are working on native target code, "make target-native" saves
your time by not building the Java code.
This will help reduce uncaught breakges for by default not everything
is built now.

Change-Id: I5a7c82d3f6372db03bea76155c8d6cc63d988eae
2013-01-29 17:08:40 -08:00
Ying Wang
e79c71ff8a am 46fa45ad: am cf0a9042: am 9e808ff7: Merge "Use += to append to target-specific PRIVATE_CLEAN_FILES"
# Via Android Git Automerger (2) and others
* commit '46fa45ad76ff63978bd35a07aa5e1d743657bf55':
  Use += to append to target-specific PRIVATE_CLEAN_FILES
2013-01-28 11:39:39 -08:00
Ying Wang
eda6ac2487 Use += to append to target-specific PRIVATE_CLEAN_FILES
Instead of incorrectly including global variable PRIVATE_CLEAN_FILES

Change-Id: I9b5e12448dad5001de051a566d8a94a89b20ecac
2013-01-28 10:58:01 -08:00
Ying Wang
95221cac12 Collapse multiple --extra-packages into one.
Change-Id: Icbdd56fa104c03e0a6cc58e441e60286a7f25bb2
2012-11-08 10:46:49 -08:00
Ying Wang
0138951eaf Collapse multiple --extra-packages into one.
Change-Id: Icbdd56fa104c03e0a6cc58e441e60286a7f25bb2
2012-11-07 14:07:34 -08: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
Ying Wang
9f31a2bc1b am 57dfd515: am 6a44471c: am abc9d6f2: Merge "Delete the unused LOCAL_POST_PROCESS_COMMAND." into jb-mr1-dev
* commit '57dfd515c33bbab26c820c812ebb4bc69c36a38f':
  Delete the unused LOCAL_POST_PROCESS_COMMAND.
2012-10-12 11:10:16 -07:00
Ying Wang
c58b194e78 Delete the unused LOCAL_POST_PROCESS_COMMAND.
Change-Id: I77785dff6c7b2236880232522d6ed5bc01d5f0ce
2012-10-11 17:26:07 -07:00
Ying Wang
4d19d2a35d am 195b0653: am 25f77e39: am af4299c5: Merge "Store vendor module owner info on the build server." into jb-mr1-dev
* commit '195b0653a23545c22bf506ab67bc0674e885b936':
  Store vendor module owner info on the build server.
2012-10-04 10:07:04 -07:00
Ying Wang
fb03fb3ec0 Store vendor module owner info on the build server.
Bug: 7048854
Change-Id: I5f0653c71a77774978655f8b5570e170b4a9c4ec
2012-10-03 17:52:51 -07:00
Ying Wang
54fa8c3ff9 Load only the current product config makefile.
To reduce the start time.
With the change and previous change of doing clean step in only given paths,
start time of mm/mmm is reduced from ~5s to about 1s;
lunch time is reduced from ~40s to 3.5s.

Bug: 7186768,7169854
Change-Id: Ifd72ba1c6362a5e1125a23c505fd47947ab56675
2012-09-28 15:08:12 -07:00
Ying Wang
157a5e1695 Load only the current product config makefile.
To reduce the start time.
With the change and previous change of doing clean step in only given paths,
start time of mm/mmm is reduced from ~5s to about 1s;
lunch time is reduced from ~40s to 3.5s.

Bug: 7186768,7169854
Change-Id: Ifd72ba1c6362a5e1125a23c505fd47947ab56675
2012-09-27 15:17:41 -07:00
Ying Wang
b301817223 Don't install all host modules by default.
Instead we should explicitly set up the dependency, if the module will
be used in the build process; Use LOCAL_MODULE_TAGS with eng, debug or
tests if the module is for testing; or add to PRODUCT_PACKAGES if it's
required by a product.

Change-Id: I326e97df6630dee4acc6582ce6cef2dec8289155
2012-09-24 18:17:26 -07:00