# These module types can still be used without warnings or errors.
AVAILABLE_BUILD_MODULE_TYPES :=$= \
  BUILD_EXECUTABLE \
  BUILD_FUZZ_TEST \
  BUILD_HEADER_LIBRARY \
  BUILD_HOST_DALVIK_JAVA_LIBRARY \
  BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY \
  BUILD_HOST_JAVA_LIBRARY \
  BUILD_HOST_PREBUILT \
  BUILD_JAVA_LIBRARY \
  BUILD_MULTI_PREBUILT \
  BUILD_NATIVE_TEST \
  BUILD_NOTICE_FILE \
  BUILD_PACKAGE \
  BUILD_PHONY_PACKAGE \
  BUILD_PREBUILT \
  BUILD_RRO_PACKAGE \
  BUILD_SHARED_LIBRARY \
  BUILD_STATIC_JAVA_LIBRARY \
  BUILD_STATIC_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 :=$= \

# 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 :=$= \
  BUILD_COPY_HEADERS \
  BUILD_HOST_EXECUTABLE \
  BUILD_HOST_SHARED_LIBRARY \
  BUILD_HOST_STATIC_LIBRARY \

# 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 :=$= \
  BUILD_AUX_EXECUTABLE \
  BUILD_AUX_STATIC_LIBRARY \
  BUILD_HOST_FUZZ_TEST \
  BUILD_HOST_NATIVE_TEST \
  BUILD_HOST_SHARED_TEST_LIBRARY \
  BUILD_HOST_STATIC_TEST_LIBRARY \
  BUILD_HOST_TEST_CONFIG \
  BUILD_NATIVE_BENCHMARK \
  BUILD_SHARED_TEST_LIBRARY \
  BUILD_STATIC_TEST_LIBRARY \
  BUILD_TARGET_TEST_CONFIG \

$(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))

