Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1a836ba authored by Dan Willemsen's avatar Dan Willemsen Committed by Gerrit Code Review
Browse files

Merge changes from topic "make_deprecation"

* changes:
  Add infrastructure for deprecating module types
  Mark BUILD_* as readonly
parents aa0aa5e5 695849ec
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
# Build System Changes for Android.mk Writers

## Deprecation of `BUILD_*` module types

See [build/make/Deprecation.md](Deprecation.md) for the current status.

## `PRODUCT_HOST_PACKAGES` split from `PRODUCT_PACKAGES` {#PRODUCT_HOST_PACKAGES}

Previously, adding a module to `PRODUCT_PACKAGES` that supported both the host

Deprecation.md

0 → 100644
+56 −0
Original line number Diff line number Diff line
# Deprecation of Make

We've made significant progress converting AOSP from Make to Soong (Android.mk
to Android.bp), and we're ready to start turning off pieces of Make. If you
have any problems converting, please contact us via:

* The [android-building@googlegroups.com] group.
* Our [public bug tracker](https://issuetracker.google.com/issues/new?component=381517).
* Or privately through your existing contacts at Google.

## Status

[build/make/core/deprecation.mk] is the source of truth, but for easy browsing:

| Module type                | State     |
| -------------------------- | --------- |
| `BUILD_HOST_TEST_CONFIG`   | Warning   |
| `BUILD_TARGET_TEST_CONFIG` | Warning   |
| `BUILD_*`                  | Available |

## Module Type Deprecation Process

We'll be turning off `BUILD_*` module types as all of the users are removed
from AOSP (and Google's internal trees). The process will go something like
this, using `BUILD_PACKAGE` as an example:

* Prerequisite: all common users of `BUILD_PACKAGE` have been removed (some
  device-specific ones may remain).
* `BUILD_PACKAGE` will be moved from `AVAILABLE_BUILD_MODULE_TYPES` to
  `DEFAULT_WARNING_BUILD_MODULE_TYPES` in [build/make/core/deprecation.mk]. This
  will make referring to `BUILD_PACKAGE` a warning.
* Any devices that still have warnings will have
  `BUILD_BROKEN_USES_BUILD_PACKAGE := true` added to their `BoardConfig.mk`.
* `BUILD_PACKAGE` will be switched from `DEFAULT_WARNING_BUILD_MODULE_TYPES` to
  `DEFAULT_ERROR_BUILD_MODULE_TYPES`, which will turn referring to
  `BUILD_PACKAGE` into an error unless the device has overridden it.
* At some later point, after all devices in AOSP no longer set
  `BUILD_BROKEN_USES_BUILD_PACKAGE`, `BUILD_PACKAGE` will be moved from
  `DEFAULT_ERROR_BUILD_MODULE_TYPES` to `OBSOLETE_BUILD_MODULE_TYPES` and the
  code will be removed. It will no longer be possible to use `BUILD_PACKAGE`.

In most cases, we expect module types to stay in the default warning state for
about two weeks before becoming an error by default. Then it will spend some
amount of time in the default error state before moving to obsolete -- we'll
try and keep that around for a while, but other development may cause those to
break, and the fix may to be to obsolete them. There is no expectation that the
`BUILD_BROKEN_USES_BUILD_*` workarounds will work in a future release, it's a
short-term workaround.

Just to be clear, the above process will happen on the AOSP master branch. So
if you're following Android releases, none of the deprecation steps will be in
Android Q, and the 2020 release will have jumped directly to the end for many
module types.

[android-building@googlegroups.com]: https://groups.google.com/forum/#!forum/android-building
[build/make/core/deprecation.mk]: /core/deprecation.mk
+19 −0
Original line number Diff line number Diff line
@@ -92,6 +92,12 @@ _build_broken_var_list := \
  BUILD_BROKEN_ENG_DEBUG_TAGS \
  BUILD_BROKEN_USES_NETWORK \

_build_broken_var_list += \
  $(foreach m,$(AVAILABLE_BUILD_MODULE_TYPES) \
              $(DEFAULT_WARNING_BUILD_MODULE_TYPES) \
              $(DEFAULT_ERROR_BUILD_MODULE_TYPES), \
    BUILD_BROKEN_USES_$(m))

_board_true_false_vars := $(_build_broken_var_list)
_board_strip_readonly_list += $(_build_broken_var_list)

@@ -511,3 +517,16 @@ ifneq (,$(_unsupported_systemsdk_versions))
  $(error System SDK versions '$(_unsupported_systemsdk_versions)' in BOARD_SYSTEMSDK_VERSIONS are not supported.\
          Supported versions are $(PLATFORM_SYSTEMSDK_VERSIONS))
endif

###########################################
# Handle BUILD_BROKEN_USES_BUILD_*

$(foreach m,$(DEFAULT_WARNING_BUILD_MODULE_TYPES),\
  $(if $(filter false,$(BUILD_BROKEN_USES_$(m))),\
    $(KATI_obsolete_var $(m),Please convert to Soong),\
    $(KATI_deprecated_var $(m),Please convert to Soong)))

$(foreach m,$(DEFAULT_ERROR_BUILD_MODULE_TYPES),\
  $(if $(filter true,$(BUILD_BROKEN_USES_$(m))),\
    $(KATI_deprecated_var $(m),Please convert to Soong),\
    $(KATI_obsolete_var $(m),Please convert to Soong)))
+42 −39
Original line number Diff line number Diff line
@@ -135,45 +135,48 @@ include $(BUILD_SYSTEM)/project_definitions.mk
# Build system internal files
# ###############################################################

BUILD_COMBOS:= $(BUILD_SYSTEM)/combo

CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk
BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk
BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk
BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk
BUILD_HEADER_LIBRARY:= $(BUILD_SYSTEM)/header_library.mk
BUILD_AUX_STATIC_LIBRARY:= $(BUILD_SYSTEM)/aux_static_library.mk
BUILD_AUX_EXECUTABLE:= $(BUILD_SYSTEM)/aux_executable.mk
BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk
BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk
BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk
BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk
BUILD_PHONY_PACKAGE:= $(BUILD_SYSTEM)/phony_package.mk
BUILD_RRO_PACKAGE:= $(BUILD_SYSTEM)/build_rro_package.mk
BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk
BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk
BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk
BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk
BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk
BUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mk
BUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mk
BUILD_NATIVE_TEST := $(BUILD_SYSTEM)/native_test.mk
BUILD_NATIVE_BENCHMARK := $(BUILD_SYSTEM)/native_benchmark.mk
BUILD_HOST_NATIVE_TEST := $(BUILD_SYSTEM)/host_native_test.mk
BUILD_FUZZ_TEST := $(BUILD_SYSTEM)/fuzz_test.mk
BUILD_HOST_FUZZ_TEST := $(BUILD_SYSTEM)/host_fuzz_test.mk

BUILD_SHARED_TEST_LIBRARY := $(BUILD_SYSTEM)/shared_test_lib.mk
BUILD_HOST_SHARED_TEST_LIBRARY := $(BUILD_SYSTEM)/host_shared_test_lib.mk
BUILD_STATIC_TEST_LIBRARY := $(BUILD_SYSTEM)/static_test_lib.mk
BUILD_HOST_STATIC_TEST_LIBRARY := $(BUILD_SYSTEM)/host_static_test_lib.mk

BUILD_NOTICE_FILE := $(BUILD_SYSTEM)/notice_files.mk
BUILD_HOST_DALVIK_JAVA_LIBRARY := $(BUILD_SYSTEM)/host_dalvik_java_library.mk
BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY := $(BUILD_SYSTEM)/host_dalvik_static_java_library.mk

BUILD_HOST_TEST_CONFIG := $(BUILD_SYSTEM)/host_test_config.mk
BUILD_TARGET_TEST_CONFIG := $(BUILD_SYSTEM)/target_test_config.mk
BUILD_COMBOS :=$= $(BUILD_SYSTEM)/combo

CLEAR_VARS :=$= $(BUILD_SYSTEM)/clear_vars.mk

BUILD_HOST_STATIC_LIBRARY :=$= $(BUILD_SYSTEM)/host_static_library.mk
BUILD_HOST_SHARED_LIBRARY :=$= $(BUILD_SYSTEM)/host_shared_library.mk
BUILD_STATIC_LIBRARY :=$= $(BUILD_SYSTEM)/static_library.mk
BUILD_HEADER_LIBRARY :=$= $(BUILD_SYSTEM)/header_library.mk
BUILD_AUX_STATIC_LIBRARY :=$= $(BUILD_SYSTEM)/aux_static_library.mk
BUILD_AUX_EXECUTABLE :=$= $(BUILD_SYSTEM)/aux_executable.mk
BUILD_SHARED_LIBRARY :=$= $(BUILD_SYSTEM)/shared_library.mk
BUILD_EXECUTABLE :=$= $(BUILD_SYSTEM)/executable.mk
BUILD_HOST_EXECUTABLE :=$= $(BUILD_SYSTEM)/host_executable.mk
BUILD_PACKAGE :=$= $(BUILD_SYSTEM)/package.mk
BUILD_PHONY_PACKAGE :=$= $(BUILD_SYSTEM)/phony_package.mk
BUILD_RRO_PACKAGE :=$= $(BUILD_SYSTEM)/build_rro_package.mk
BUILD_HOST_PREBUILT :=$= $(BUILD_SYSTEM)/host_prebuilt.mk
BUILD_PREBUILT :=$= $(BUILD_SYSTEM)/prebuilt.mk
BUILD_MULTI_PREBUILT :=$= $(BUILD_SYSTEM)/multi_prebuilt.mk
BUILD_JAVA_LIBRARY :=$= $(BUILD_SYSTEM)/java_library.mk
BUILD_STATIC_JAVA_LIBRARY :=$= $(BUILD_SYSTEM)/static_java_library.mk
BUILD_HOST_JAVA_LIBRARY :=$= $(BUILD_SYSTEM)/host_java_library.mk
BUILD_COPY_HEADERS :=$= $(BUILD_SYSTEM)/copy_headers.mk
BUILD_NATIVE_TEST :=$= $(BUILD_SYSTEM)/native_test.mk
BUILD_NATIVE_BENCHMARK :=$= $(BUILD_SYSTEM)/native_benchmark.mk
BUILD_HOST_NATIVE_TEST :=$= $(BUILD_SYSTEM)/host_native_test.mk
BUILD_FUZZ_TEST :=$= $(BUILD_SYSTEM)/fuzz_test.mk
BUILD_HOST_FUZZ_TEST :=$= $(BUILD_SYSTEM)/host_fuzz_test.mk

BUILD_SHARED_TEST_LIBRARY :=$= $(BUILD_SYSTEM)/shared_test_lib.mk
BUILD_HOST_SHARED_TEST_LIBRARY :=$= $(BUILD_SYSTEM)/host_shared_test_lib.mk
BUILD_STATIC_TEST_LIBRARY :=$= $(BUILD_SYSTEM)/static_test_lib.mk
BUILD_HOST_STATIC_TEST_LIBRARY :=$= $(BUILD_SYSTEM)/host_static_test_lib.mk

BUILD_NOTICE_FILE :=$= $(BUILD_SYSTEM)/notice_files.mk
BUILD_HOST_DALVIK_JAVA_LIBRARY :=$= $(BUILD_SYSTEM)/host_dalvik_java_library.mk
BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY :=$= $(BUILD_SYSTEM)/host_dalvik_static_java_library.mk

BUILD_HOST_TEST_CONFIG :=$= $(BUILD_SYSTEM)/host_test_config.mk
BUILD_TARGET_TEST_CONFIG :=$= $(BUILD_SYSTEM)/target_test_config.mk

include $(BUILD_SYSTEM)/deprecation.mk

# ###############################################################
# Parse out any modifier targets.

core/deprecation.mk

0 → 100644
+55 −0
Original line number Diff line number Diff line
# These module types can still be used without warnings or errors.
AVAILABLE_BUILD_MODULE_TYPES :=$= \
  BUILD_AUX_EXECUTABLE \
  BUILD_AUX_STATIC_LIBRARY \
  BUILD_COPY_HEADERS \
  BUILD_EXECUTABLE \
  BUILD_FUZZ_TEST \
  BUILD_HEADER_LIBRARY \
  BUILD_HOST_DALVIK_JAVA_LIBRARY \
  BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY \
  BUILD_HOST_EXECUTABLE \
  BUILD_HOST_FUZZ_TEST \
  BUILD_HOST_JAVA_LIBRARY \
  BUILD_HOST_NATIVE_TEST \
  BUILD_HOST_PREBUILT \
  BUILD_HOST_SHARED_LIBRARY \
  BUILD_HOST_SHARED_TEST_LIBRARY \
  BUILD_HOST_STATIC_LIBRARY \
  BUILD_HOST_STATIC_TEST_LIBRARY \
  BUILD_JAVA_LIBRARY \
  BUILD_MULTI_PREBUILT \
  BUILD_NATIVE_BENCHMARK \
  BUILD_NATIVE_TEST \
  BUILD_NOTICE_FILE \
  BUILD_PACKAGE \
  BUILD_PHONY_PACKAGE \
  BUILD_PREBUILT \
  BUILD_RRO_PACKAGE \
  BUILD_SHARED_LIBRARY \
  BUILD_SHARED_TEST_LIBRARY \
  BUILD_STATIC_JAVA_LIBRARY \
  BUILD_STATIC_LIBRARY \
  BUILD_STATIC_TEST_LIBRARY \

# These are BUILD_* variables that will throw a warning when used. This is
# generally a temporary state until all the devices are marked with the
# relevant BUILD_BROKEN_USES_BUILD_* variables, then these would move to
# DEFAULT_ERROR_BUILD_MODULE_TYPES.
DEFAULT_WARNING_BUILD_MODULE_TYPES :=$= \
  BUILD_HOST_TEST_CONFIG \
  BUILD_TARGET_TEST_CONFIG \

# These are BUILD_* variables that are errors to reference, but you can set
# BUILD_BROKEN_USES_BUILD_* in your BoardConfig.mk in order to turn them back
# to warnings.
DEFAULT_ERROR_BUILD_MODULE_TYPES :=$= \

# These are BUILD_* variables that are always errors to reference.
# Setting the BUILD_BROKEN_USES_BUILD_* variables is also an error.
OBSOLETE_BUILD_MODULE_TYPES :=$= \

$(foreach m,$(OBSOLETE_BUILD_MODULE_TYPES),\
  $(KATI_obsolete_var $(m),Please convert to Soong) \
  $(KATI_obsolete_var BUILD_BROKEN_USES_$(m),Please convert to Soong))