# Copyright (C) 2017 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

ifneq ($(TARGET_BUILD_PDK), true)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# To avoid build errors, build empty package for non-platform builds
# (for example, projected). See b/30064991
ifeq (,$(TARGET_BUILD_APPS))
  LOCAL_PACKAGE_NAME := CarSettings
  LOCAL_OVERRIDES_PACKAGES := Settings
  LOCAL_PRIVATE_PLATFORM_APIS := true

  LOCAL_SRC_FILES := $(call all-java-files-under, src)

  LOCAL_USE_AAPT2 := true

  LOCAL_JAVA_LIBRARIES := \
      android.car \
      telephony-common

  LOCAL_STATIC_ANDROID_LIBRARIES := \
      androidx.car_car \
      androidx.lifecycle_lifecycle-common-java8 \
      androidx.lifecycle_lifecycle-extensions \
      androidx.preference_preference \
      androidx-constraintlayout_constraintlayout \
      car-apps-common \
      car-settings-lib \
      car-setup-wizard-lib-utils \
      SettingsLib \
      car-ui-lib \

   # Including the resources for the static android libraries allows this app to pick up their static overlays.
   LOCAL_RESOURCE_DIR += \
       $(LOCAL_PATH)/res \
       $(LOCAL_PATH)/../libs/car-apps-common/res \
       $(LOCAL_PATH)/../libs/car-settings-lib/res \
       $(LOCAL_PATH)/../libs/car-ui-lib/res \
       $(LOCAL_PATH)/../../../../frameworks/base/packages/SettingsLib/res

  LOCAL_CERTIFICATE := platform

  LOCAL_MODULE_TAGS := optional

  LOCAL_PROGUARD_ENABLED := disabled

  LOCAL_PRIVILEGED_MODULE := true

  LOCAL_DEX_PREOPT := false

  LOCAL_STATIC_JAVA_LIBRARIES := \
      android.car.userlib \
      androidx-constraintlayout_constraintlayout-solver \
      jsr305

  LOCAL_DX_FLAGS := --multi-dex

  include $(BUILD_PACKAGE)
endif

###################################################################################
# Duplicate of CarSettings which includes testing only resources for Robolectric #
###################################################################################
include $(CLEAR_VARS)

# To avoid build errors, build empty package for non-platform builds
# (for example, projected). See b/30064991
ifeq (,$(TARGET_BUILD_APPS))
  LOCAL_PACKAGE_NAME := CarSettingsForTesting
  LOCAL_OVERRIDES_PACKAGES := Settings
  LOCAL_PRIVATE_PLATFORM_APIS := true

  LOCAL_SRC_FILES := $(call all-java-files-under, src)

  LOCAL_USE_AAPT2 := true

  LOCAL_JAVA_LIBRARIES := \
      android.car \
      telephony-common

  LOCAL_STATIC_ANDROID_LIBRARIES := \
      androidx.car_car \
      androidx.lifecycle_lifecycle-common-java8 \
      androidx.lifecycle_lifecycle-extensions \
      androidx.preference_preference \
      androidx-constraintlayout_constraintlayout \
      car-apps-common \
      car-settings-lib \
      car-setup-wizard-lib-utils \
      SettingsLib \
      car-ui-lib \

  LOCAL_RESOURCE_DIR := \
      $(LOCAL_PATH)/res \
      $(LOCAL_PATH)/tests/robotests/res \
      $(LOCAL_PATH)/../libs/car-apps-common/res \
      $(LOCAL_PATH)/../libs/car-settings-lib/res \
      $(LOCAL_PATH)/../libs/car-ui-lib/res \
      $(LOCAL_PATH)/../../../../frameworks/base/packages/SettingsLib/res

  LOCAL_CERTIFICATE := platform

  LOCAL_MODULE_TAGS := optional

  LOCAL_PROGUARD_ENABLED := disabled

  LOCAL_PRIVILEGED_MODULE := true

  LOCAL_DEX_PREOPT := false

  LOCAL_STATIC_JAVA_LIBRARIES := \
      android.car.userlib \
      androidx-constraintlayout_constraintlayout-solver \
      jsr305

  LOCAL_DX_FLAGS := --multi-dex

  include $(BUILD_PACKAGE)
endif
###################################################################################

# Use the following include to make our test apk.
ifeq (,$(ONE_SHOT_MAKEFILE))
include $(call first-makefiles-under, $(LOCAL_PATH))
endif

endif
