// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.base;

#define Q(x) #x
#define QUOTE(x) Q(x)

#if defined(USE_FINAL)
#define MAYBE_FINAL final
#define MAYBE_ZERO = 0
#define MAYBE_FALSE = false
#else
#define MAYBE_FINAL
#define MAYBE_ZERO
#define MAYBE_FALSE
#endif

/**
 *  Build configuration. Generated on a per-target basis.
 */
public class BuildConfig {

#if defined(ENABLE_MULTIDEX)
    public static MAYBE_FINAL boolean IS_MULTIDEX_ENABLED = true;
#else
    public static MAYBE_FINAL boolean IS_MULTIDEX_ENABLED MAYBE_FALSE;
#endif

#if defined(_FIREBASE_APP_ID)
    public static MAYBE_FINAL String FIREBASE_APP_ID = QUOTE(_FIREBASE_APP_ID);
#else
    public static MAYBE_FINAL String FIREBASE_APP_ID = "";
#endif

#if defined(_DCHECK_IS_ON)
    public static MAYBE_FINAL boolean DCHECK_IS_ON = true;
#else
    public static MAYBE_FINAL boolean DCHECK_IS_ON MAYBE_FALSE;
#endif

#if defined(_IS_UBSAN)
    public static MAYBE_FINAL boolean IS_UBSAN = true;
#else
    public static MAYBE_FINAL boolean IS_UBSAN MAYBE_FALSE;
#endif

    // Sorted list of locales that have a compressed .pak within assets.
    // Stored as an array because AssetManager.list() is slow.
#if defined(COMPRESSED_LOCALE_LIST)
    public static MAYBE_FINAL String[] COMPRESSED_LOCALES = COMPRESSED_LOCALE_LIST;
#else
    public static MAYBE_FINAL String[] COMPRESSED_LOCALES = {};
#endif

    // Sorted list of locales that have an uncompressed .pak within assets.
    // Stored as an array because AssetManager.list() is slow.
#if defined(UNCOMPRESSED_LOCALE_LIST)
    public static MAYBE_FINAL String[] UNCOMPRESSED_LOCALES = UNCOMPRESSED_LOCALE_LIST;
#else
    public static MAYBE_FINAL String[] UNCOMPRESSED_LOCALES = {};
#endif

    // The ID of the android string resource that stores the product version.
    // This layer of indirection is necessary to make the resource dependency
    // optional for android_apk targets/base_java (ex. for cronet).
#if defined(_RESOURCES_VERSION_VARIABLE)
    public static MAYBE_FINAL int R_STRING_PRODUCT_VERSION = _RESOURCES_VERSION_VARIABLE;
#else
    // Default value, do not use.
    public static MAYBE_FINAL int R_STRING_PRODUCT_VERSION MAYBE_ZERO;
#endif
}
