// 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
#else
#define MAYBE_FINAL
#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 = 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 = false;
#endif

#if defined(_IS_UBSAN)
    public static MAYBE_FINAL boolean IS_UBSAN = true;
#else
    public static MAYBE_FINAL boolean IS_UBSAN = 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 = 0;
#endif
}
