Commit graph

79 commits

Author SHA1 Message Date
Jeff Gaston
f3ccfa9b99 Fix crash when running androidmk against frameworks/base/Android.mk
The was a variable on the right-hand side of the assignment to
LOCAL_MODULE_CLASS , which wants a non-nil scope

Bug: 64266643
Test: androidmk frameworks/base/Android.mk
Test: androidmk prebuilts/misc/common/ddmlib/Android.mk

Change-Id: I52d33f5e5cb1179f84d4df149ef804268d67f7fb
2017-08-24 22:59:50 +00:00
Jeff Gaston
21c21b7a75 Consolidate localIncludeDirs and exportIncludeDirs
in preparation to have LOCAL_AIDL_INCLUDES work similarly

Bug: 62882283
Test: m -j
Change-Id: I5df3d5ac2eac43d839440c291d4cdc0e26172dfa
2017-08-24 13:38:50 -07:00
Jeff Gaston
15e8e75a05 Fix androidmk crash if no CLEAR_VARS is detected
Bug: 38459493
Test: make blueprint_tools
Change-Id: I968a2e46160c6c04091412e6d5450f9917ec8b67
2017-08-17 15:08:06 -07:00
Jeff Gaston
fd4ce1bb68 androidmk no longer escaping escaped quotes in CFLAGS
Bug: 37547491
Test: m -j

Change-Id: I2f406be477f3990bf109778eb9adc9c33db2f2ad
2017-08-15 22:05:39 +00:00
Colin Cross
e8dc34a372 Rename java module and property names for consistency
prebuilt_java_library -> java_prebuilt_library
prebuilt_sdk -> android_prebuilt_sdk
java_resource_dirs -> resource_dirs
exclude_java_resource_dirs -> exclude_resource_dirs
java_libs -> libs
java_static_libs -> static_libs

Test: java_test.go
Change-Id: Icb0eefa6663844e20ad0a8729fb2c90ec916c3eb
2017-07-19 23:19:58 +00:00
Jeff Gaston
c381fd0282 Revert "Revert "Run bpfix at the end of androidmk""
Bug: 38351765
Test: androidmk Android.mk > Android.bp

This reverts commit eb3186abbe.

Change-Id: I0b67e89f5096aae60c97eb6af4fd205509aac5c9
2017-06-19 15:52:25 -07:00
Jeff Gaston
eb3186abbe Revert "Run bpfix at the end of androidmk"
This reverts commit 7fd905ae26.

Reason for revert: postsubmit build broken

Change-Id: Iddff17616c7307918380e15c1ed69ee5625a6c8e
2017-05-26 00:30:01 +00:00
Jeff Gaston
7fd905ae26 Run bpfix at the end of androidmk
Bug: 38351765
Test: androidmk Android.mk > Android.bp
Change-Id: Iefcae1b01f4e915ec20782b302ba4350a20d0f1a
2017-05-24 13:06:35 -07:00
Jeff Gaston
fa833bb6d5 Support for LOCAL_AIDL_INCLUDES in androidmk
Now it converts to:
aidl: {
  include_dirs: [
    "...",
  ]
}

Bug: 37747936
Test: run androidmk against an Android.mk file having LOCAL_AIDLE_INCLUDES
Change-Id: If9f4c3ee9969610f1e0e0f147ee6a70102b63edc
2017-05-15 11:46:04 -07:00
Colin Cross
254514eb73 androidmk: support cfi, diag, and misc_undefined properties
Support more sanitize related properties.  Also remove integer,
since it isn't a supported property, and rewrite it to be
deterministic by not going through splitBpList.

This reapplies Ie8fba06c36fc121912c65a77ee495ceef4962df0.

Bug: 37547301
Test: androidmk_test.go
Change-Id: Id637ffdb7d36bed8a2c2fe76bd6f54662709e3b3
2017-05-08 16:03:17 -07:00
Colin Cross
0fdee74f5b Revert "androidmk: support cfi, diag, and misc_undefined properties"
This reverts commit a8688c4652.

Change-Id: Ida4050f3ddc8303d614f2bd2a01470ed5459fe2c
2017-05-08 22:10:25 +00:00
Colin Cross
a8688c4652 androidmk: support cfi, diag, and misc_undefined properties
Support more sanitize related properties.

Bug: 37547301
Test: androidmk_test.go
Change-Id: Ie8fba06c36fc121912c65a77ee495ceef4962df0
2017-05-08 19:36:57 +00:00
Colin Cross
b2123aa1df Add a variable to disable modules in the PDK
Not plumbed through yet, but will at least prevent us from losing
track of which modules will not build in the PDK.

Test: builds
Change-Id: I4c1a0e39104b104dc1ff23c4391d5e83b3002d3a
2017-05-05 18:22:30 -07:00
Colin Cross
2a252bef50 Support .rs and .fs files in cc_* module srcs lists
Translate .rs and .fs files to .cpp files using llvm-rs-cc.

Test: builds
Change-Id: I242cea0d09c9985730a512cec7705c3f1479f4ed
2017-05-05 18:22:30 -07:00
Dan Willemsen
aa118f95a6 Implement vendor as a synonym of proprietary
The vendor image will have more than just proprietary modules in it
under Treble, so let's stop marking open source code as proprietary just
to move it to vendor.

Bug: 36452052
Bug: 37134596
Test: compare build.ninja before/after, no changes.
Test: Set vendor: true, ensure it works.
Change-Id: I44b0ec7007d0e311bdcbd44b238b1ef2d05cc6ff
2017-04-07 14:59:18 -07:00
Po Hu
a2226b960a Support prebuilt module types
Now BUILD_PREBUILT should be converted into corresponding types
like cc_prebuilt_library_shared/cc_prebuilt_library_static ...
So change to check LOCAL_MODULE_CLASS in Android.mk to determine
module types, and eliminate class property from Android.bp which
will cause a build break.

Change-Id: If865cc865f360eac7cc77f060df5a310bada6900
Test: out/soong/host/linux-x86/bin/androidmk prebuilts/misc/common/ddmlib/Android.mk
2017-03-31 01:27:14 +00:00
Dan Willemsen
11b261472a Rework vndk detection
Instead of having a module define `use_vndk: true`, assume that we're
building with the VNDK if we're installed on the vendor partition, and
BOARD_VNDK_VERSION==current. This now matches our behavior in Make.

Once BOARD_VNDK_VERSION!=current, we'll need to disable modules that
need to otherwise compile against the VNDK, since we can only compile
against the current VNDK.

Test: build.ninja for aosp_arm is the same before/after
Test: Ensure there are no boards that set BOARD_VNDK_VERSION
Change-Id: If937fa7bdb119648137af52daebadf486163484b
2017-03-29 04:33:25 +00:00
Colin Cross
a929db05b3 Add support for test_suites property on cc_test modules
Add a test_suites property that is passed through to make as
LOCAL_COMPATIBILITY_SUITES.

Test: m -j checkbuild, examine out/soong/Android-${TARGET_PRODUCT}.mk
Bug: 35394669
Change-Id: If05b0f5f7d6dd85228546123bebe32859bcc8186
2017-03-27 16:27:50 -07:00
Colin Cross
55708f3fb3 Support owner property
Support owner properties in Android.bp files and propagate the value
to make using LOCAL_MODULE_OWNER.

Bug: 36413696
Test: builds
Change-Id: Iac1cf7f2a14c9e3e6d85d6e09d5adb08a7078d00
2017-03-20 13:33:45 -07:00
Jeff Gaston
4f2feeee50 Have AndroidMk skip emitting LOCAL_MODULE_TAGS="optional"
Also somewhat consolidate the way in which properties are converted

Bug: 34671474
Test: make blueprint_tools

Change-Id: Idf0d6d63b8539ab6e514a6043d1f88836899864b
2017-03-08 16:00:14 -08:00
Dan Willemsen
d5781347e0 Export cc_library_headers as BUILD_HEADER_LIBRARY
And support the reverse translation in androidmk.

Test: Use a cc_library_headers using LOCAL_HEADER_LIBRARIES in make
Test: androidmk with LOCAL_HEADER_LIBRARIES
Test: androidmk with soong's Android-*.mk file for BUILD_HEADER_LIBRARIES
Change-Id: I17adedb62151f62e67e2168b09ad87f1d5648df6
2017-02-16 10:58:26 -08:00
Nan Zhang
62ea583316 Fixed androidmk crash when parsing external/aac/Android.mk
Catched the error when bpparser encountered the non-standard make variables.

Bug: b/34454142
Test: Manual + (m -j blueprint_tools) command
Change-Id: I0766082baa2c2c4020317f975012a476133f4f77
2017-01-27 14:07:38 -08:00
Dan Willemsen
7ed1ae3fa4 Import/Export LOCAL_PROPRIETARY_MODULE
Test: androidmk hardware/broadcom/libbt/Android.mk
Test: m -j vulkan.default, inspect out/soong/Android-aosp_flounder.mk
Change-Id: I8a9553f772a1d434eb0069c1575e1b0d6db36bc9
2016-12-05 17:20:57 -08:00
Dan Willemsen
d2ede879b5 Add basic VNDK support in Soong
Export a list of libraries in the VNDK, which is currently empty.

Take in Make's global BOARD_VNDK_VERSION, and use that as the SDK
version for modules that specify use_vndk: true.

Modules that use the vndk have some configuration as if they were
building against the NDK (the absence of globally defined headers), but
in other cases look like platform modules (using the platform libc++,
for now).

This change does not attempt to enforce any linking constraints, that
will come in a later patch.

Test: out/soong/build.ninja doesn't change
Change-Id: I3be206b67015ac5177b7eef4a451c579e3dc903f
2016-11-28 13:45:24 -08:00
Dan Willemsen
a03cf6d322 Add clang-tidy support
For every file which we can run clang-tidy (C/C++ clang-built), we add a
new build node that depends on the object file (since clang-tidy does
not export a depfile), and is depended on by the link step. This is
better than how we're doing it in make, since calling tidy can be turned
on or off without needing to rebuild the object files.

This does not attempt to port WITH_TIDY_ONLY from Make, since the way
that it works is broken (due to the lack of a depfile).

Bug: 32244182
Test: WITH_TIDY=true mmma -j bionic/libc
Test: ./soong (Setting ClangTidy: true)
Change-Id: I40bbb5bb00d292d72bf1c293b93080b5f9f6d8ea
2016-10-31 16:21:01 -07:00
Colin Cross
0c461f1f6e Add support for .proto files
.proto files are translated to .pb.cc and .pb.h files, which are then
compiled normally.

Bug: 32286026
Test: mmma -j system/extras/perfprofd
Change-Id: I538071424d667aacf35b4b8bfebe217f5f092726
2016-10-27 15:28:09 -07:00
Dan Willemsen
394e9dc876 Add Relocation Packer support
This only applies to shared libraries on the device, and like stripping,
we'll let make do the actual packing if we're embedded in Make.

Change-Id: I1585d74ecfc41e18dcbb5ffb70005adf007cc941
2016-09-15 03:39:05 +00:00
Dan Willemsen
377737a01c Move Android.bp definitions into subdirs
Test: m blueprint_tools still produces the same tools
Change-Id: Ia1e2e43c62cb6035616bef9fbef56417b46cf3a4
2016-08-25 15:50:21 -07:00
Dan Willemsen
2277bcbc2a Add init_rc property, equivalent to LOCAL_INIT_RC
Change-Id: I914bfff8cbdf71b6cfb2271199a964b2cdcb72d0
2016-07-29 15:24:08 -07:00
Colin Cross
7b6ba5c7fa Add CommentGroups
Follows blueprint change 1e73794d42

Change-Id: If3539e2d9370a0224a2364608c496a1e4385dbbf
2016-06-14 19:04:53 -07:00
Colin Cross
e538e410cb Rename Pos members
Follows blueprint change b3d0b8dab4

Change-Id: I10f53498557325d26c6b690583596ac4f9206c79
2016-06-14 19:04:28 -07:00
Colin Cross
2867296203 Remove blueprint/parser.Ident
Follows blueprint change c32c47938f

Change-Id: I8f479704504f7bbefed3ed63bd0d040f65a2fdd5
2016-06-14 19:03:10 -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
a43f9b3cbf Rename androidmk/test.go so go test can find it
Change-Id: If18c749fe9bc883552952284a469ea8e8f3e8f6d
2016-06-08 14:49:55 -07:00
Dan Willemsen
c79e0e7dd3 androidmk: Fix LOCAL_FORCE_STATIC_EXECUTABLE
Change-Id: Ia7e7fb61ffff212a5b6170743c429417a528cef3
2016-06-06 22:34:37 -07:00
Dan Willemsen
490a8dc2d5 Implement re-exporting of library headers
This matches LOCAL_EXPORT_(SHARED|STATIC)_LIBRARY_HEADERS in Make.

Change-Id: Iede67e2c24a24cf51e68a50123299effbe4e4196
2016-06-06 18:35:57 -07:00
Dan Willemsen
22abd40ed0 androidmk: TOP is always "."
But if it comes out to ./, remove both characters.

Change-Id: Ia86c1a60522736773b2e8ee0cf54a4348d302573
2016-06-05 22:47:40 -07:00
Dan Willemsen
58f9bb1160 androidmk: Support version_script
This only translates the common case using $(LOCAL_PATH). If it doesn't
match here, Soong will throw an error with a suggested fix.

Change-Id: If64c8fca008a1a414fc12389e6b1bb40af0df899
2016-06-03 13:56:55 -07:00
Dan Willemsen
0c236aba6e androidmk: Update LOCAL_SANITIZE* support
Change-Id: Ib3d5473869f69e9e3a74ebb403653e5918ad240a
2016-06-03 12:57:05 -07:00
Dan Willemsen
31a6a69f9f Add _<OS> suffix support, remove USE_MINGW
USE_MINGW is no longer supported by Make

Change-Id: I399190ac9e92a2e633bf5438d8deb653beae1bb1
2016-06-03 12:57:05 -07:00
Dan Willemsen
42e20e6063 Add logtags support to androidmk
Generalize the list splitting function used by include_dirs and
export_include_dirs to also support splitting sources.

Change-Id: I11b8f817fb32309511522074fe6b26052ae3d65f
2016-06-03 12:57:05 -07:00
Dan Willemsen
6c2ac0673d Add tests for androidmk
Change-Id: Ic31bf68f75c8dd4d7737d9ea01f2d93637cdaca2
2016-06-03 00:00:50 -07:00
Colin Cross
5126504fae Add spaces around := when dumping assignments
Add spaces around := when dumping assignments that failed translation.

Change-Id: I92cea0616a9dacd74a63b48f4626340b22542fbf
2016-05-30 13:42:19 -07:00
Colin Cross
08693d2bf2 Improve makefile parser
Improve the androidmk makefile parser based on ideas from go/ast and
friends:
   - Use type switching instead of the As* mess
   - Don't store endPos for every node, compute it based on the last
     known position in the node plus the length of the last token
   - Store positions as only the offset into the file, and then unpack
     them into Line/Column scanner.Position objects later

Change-Id: I87eb6661859951e6c2ea5a85db6229fa5561d615
2016-05-26 03:34:30 +00:00
Colin Cross
7fd911f713 Fix blank line translation once and for all
Track the position in the input makefile and output blueprint file
separately.  When parsing a new makefile line, increment the line in the
output position by the number of lines between the end of the last
makefile line and the beginning of this line.  Any extra blank lines
will be discarded by the blueprint printer.

Change-Id: I85c6e006667b5733b15e03b56b91caf29fbc0ea0
2016-05-26 03:34:17 +00:00
Colin Cross
ab6e6e0135 Fix non-deterministic errors with LOCAL_*_x86_64
LOCAL_*_x86_64 was sometimes recognized as a _64 suffix and other times
as the correct _x86_64 suffix, based on the random order of the
propertyPrefixes map.  Replace the map with a slice so that the ordering
is consistent, and ensure 64 as after x86_64.

Change-Id: I1a4b4959f8ef4273ad4a1cdd0672ad557bf1891e
2016-05-25 17:17:40 -07:00
Colin Cross
1f7c527ee9 Update androidmk translator
support LOCAL_SRC_FILES_EXCLUDE, and fix a typo arm->arch.

Change-Id: I9f789e943d9aca4c5aff2b6b56b1e4a0626ecd86
2016-05-03 18:06:43 -07:00
Colin Cross
d9344d20ff androidmk: Add support for LOCAL_MODULE_HOST_OS
Change-Id: Ic1aba6cdcd394fbe2b1819b80fb997f00d9711dc
2015-12-02 11:26:17 -08:00
Colin Cross
4bd49c2ce1 androidmk: Add support for TARGET_BUILD_APPS
Change-Id: Iade2dd9fd5b8873d723d5f6f235775f447fb1d98
2015-12-01 18:06:33 -08:00
Colin Cross
b43a159c13 Replace asan with sanitize
LOCAL_ADDRESS_SANITIZER has been replaced with LOCAL_SANITIZE.

Change-Id: I81fe7e0c9135cfd4a222fae4012ab5082cc58f29
2015-09-16 14:19:55 -07:00