// Copyright (C) 2008 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.

// ANDROIDMK TRANSLATION ERROR: unsupported conditional
// ifneq ($(SDK_ONLY),true)
// SDK_only doesn't need device version

cc_library_static {
    host_supported: true,
    //LOCAL_CFLAGS += -UNDEBUG -DDEBUG=1
    srcs: [
        "CmdUtils.cpp",
        "DexCatch.cpp",
        "DexClass.cpp",
        "DexDataMap.cpp",
        "DexDebugInfo.cpp",
        "DexFile.cpp",
        "DexInlines.cpp",
        "DexOptData.cpp",
        "DexOpcodes.cpp",
        "DexProto.cpp",
        "DexSwapVerify.cpp",
        "DexUtf.cpp",
        "InstrUtils.cpp",
        "Leb128.cpp",
        "OptInvocation.cpp",
        "sha1.cpp",
        "SysUtil.cpp",
    ],
    local_include_dirs: [".."],
    include_dirs: [
        "external/zlib",
        "external/safe-iop/include",
    ],
    cppflags: ["-std=gnu++11"],
    static_libs: ["liblog"],
    whole_static_libs: ["libziparchive"],
    target: {
        android: {
            shared_libs: ["libutils"],
        },
        host: {
            static_libs: ["libutils"],
        },
    },
    tags: ["optional"],
    name: "libdex",
    compile_multilib: "32",
}

// ANDROIDMK TRANSLATION ERROR: endif from unsupported contitional
// endif
// !SDK_ONLY
