// Copyright 2019 Google Inc. All rights reserved.
//
// 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.

// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS.  PLEASE
//     CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
//     DEPENDING ON IT IN YOUR PROJECT. ***
package {
    default_applicable_licenses: ["external_python_cpython3_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
    name: "external_python_cpython3_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-0BSD",
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-CC0-1.0",
        "SPDX-license-identifier-GPL",
        "SPDX-license-identifier-MIT",
        "SPDX-license-identifier-MS-RL", // by exception only
        "SPDX-license-identifier-PSF-2.0",
        "SPDX-license-identifier-Unicode-DFS",
        "SPDX-license-identifier-W3C",
        "SPDX-license-identifier-Zlib",
        "legacy_by_exception_only", // by exception only
        "legacy_notice",
        "legacy_unencumbered",
    ],
    license_text: [
        "LICENSE",
    ],
}

build = [
    "Android-bionic.bp",
    "Android-linux_arm64.bp",
    "Android-linux_x86_64.bp",
    "Android-darwin.bp",
]

soong_config_module_type {
    name: "cpython3_cc_defaults",
    module_type: "cc_defaults",
    config_namespace: "cpython3",
    bool_variables: ["force_build_host"],
    properties: ["defaults"],
}

// By default, disable the source and use the prebuilts for host linux
// and darwin. Overridden by cpython3-interp-force_build_host when
// force_build_host is true (set on aosp-build-tools).
cc_defaults {
    name: "cpython3-interp-host-prebuilts",
    defaults_visibility: ["//visibility:private"],
    target: {
        linux_glibc: {
            enabled: false,
        },
        linux_musl: {
            enabled: false,
        },
        darwin: {
            enabled: false,
        },
    },
}

cc_defaults {
    name: "cpython3-interp-force_build_host",
    defaults_visibility: ["//visibility:private"],
    target: {
        linux_glibc: {
            enabled: true,
        },
        linux_musl: {
            enabled: true,
        },
        darwin: {
            enabled: true,
        },
    },
}

cpython3_cc_defaults {
    name: "py3-interp-defaults",
    defaults_visibility: ["//visibility:private"],
    cflags: [
        "-fwrapv",
        "-O3",
        "-Wall",
        "-DPy_BUILD_CORE",
        "-Werror",
        "-Wno-invalid-source-encoding",
        "-Wno-int-conversion",
        "-Wno-missing-field-initializers",
        "-Wno-null-pointer-arithmetic",
        "-Wno-register",
        "-Wno-shift-count-overflow",
        "-Wno-sign-compare",
        "-Wno-tautological-compare",
        "-Wno-tautological-constant-out-of-range-compare",
        "-Wno-unused-function",
        "-Wno-unused-parameter",
        "-Wno-unused-result",
    ],
    local_include_dirs: [
        "Include",
        "Include/internal",
    ],
    static_libs: ["libffi"],
    target: {
        android: {
            local_include_dirs: ["android/bionic/pyconfig"],
        },
        android_arm: {
            cflags: ["-DSOABI=\"cpython-310android-arm-android-bionic\""],
        },
        android_arm64: {
            cflags: ["-DSOABI=\"cpython-310android-arm64-android-bionic\""],
        },
        android_x86: {
            cflags: ["-DSOABI=\"cpython-310android-x86-android-bionic\""],
        },
        android_x86_64: {
            cflags: ["-DSOABI=\"cpython-310android-x86_64-android-bionic\""],
        },
        host: {
            // Host builds are moving to prebuilts, which has a higher risk of
            // having an incompatible libc++.so when installed.
            stl: "libc++_static",
        },
        // Regenerate include dirs with android_regen.sh
        darwin: {
            local_include_dirs: ["android/darwin/pyconfig"],
            cflags: [
                "-Wno-deprecated-declarations",
                "-Wno-pointer-arith",
                "-DSOABI=\"cpython-310android-x86_64-darwin\"",
            ],
        },
        linux_bionic: {
            // NB linux_bionic is a 'host' architecture but it uses the bionic libc like 'android'
            // targets so use the android pyconfig.
            local_include_dirs: ["android/bionic/pyconfig"],
            cflags: ["-DSOABI=\"cpython-310android-x86_64-linux-bionic\""],
        },
        linux_glibc_x86: {
            enabled: false,
        },
        linux_musl_x86: {
            enabled: false,
        },
        linux_musl_arm: {
            enabled: false,
        },
        linux_glibc_x86_64: {
            local_include_dirs: ["android/linux_x86_64/pyconfig"],
            cflags: ["-DSOABI=\"cpython-310android-x86_64-linux-gnu\""],
        },
        linux_musl_x86_64: {
            local_include_dirs: ["android/linux_x86_64/pyconfig"],
            cflags: ["-DSOABI=\"cpython-310android-x86_64-linux-gnu\""],
        },
        linux_musl_arm64: {
            local_include_dirs: ["android/linux_arm64/pyconfig"],
            cflags: ["-DSOABI=\"cpython-310android-arm64-linux-gnu\""],
        },
        windows: {
            enabled: false,
        },
    },
    host_supported: true,
    compile_multilib: "both",
    multilib: {
        lib32: {
            suffix: "32",
        },
        lib64: {
            suffix: "64",
        },
    },
    soong_config_variables: {
        force_build_host: {
            defaults: ["cpython3-interp-force_build_host"],
        },
    },
}

cc_library_static {
    name: "py3-interp",
    defaults: ["py3-interp-defaults", "cpython3-interp-host-prebuilts"],
    cflags: ["-DPy_BUILD_CORE", "-DPLATLIBDIR=\"lib\""],
    srcs: [
        // Makefile.pre.in PEGEN_OBJS
        "Parser/pegen.c",
        "Parser/parser.c",
        "Parser/string_parser.c",
        "Parser/peg_api.c",

        // Makefile.pre.in PARSER_OBJS
        "Parser/myreadline.c",
        "Parser/token.c",
        "Parser/tokenizer.c",

        // Makefile.pre.in OBJECT_OBJS
        "Objects/abstract.c",
        "Objects/accu.c",
        "Objects/boolobject.c",
        "Objects/bytes_methods.c",
        "Objects/bytearrayobject.c",
        "Objects/bytesobject.c",
        "Objects/call.c",
        "Objects/capsule.c",
        "Objects/cellobject.c",
        "Objects/classobject.c",
        "Objects/codeobject.c",
        "Objects/complexobject.c",
        "Objects/descrobject.c",
        "Objects/enumobject.c",
        "Objects/exceptions.c",
        "Objects/genericaliasobject.c",
        "Objects/genobject.c",
        "Objects/fileobject.c",
        "Objects/floatobject.c",
        "Objects/frameobject.c",
        "Objects/funcobject.c",
        "Objects/interpreteridobject.c",
        "Objects/iterobject.c",
        "Objects/listobject.c",
        "Objects/longobject.c",
        "Objects/dictobject.c",
        "Objects/odictobject.c",
        "Objects/memoryobject.c",
        "Objects/methodobject.c",
        "Objects/moduleobject.c",
        "Objects/namespaceobject.c",
        "Objects/object.c",
        "Objects/obmalloc.c",
        "Objects/picklebufobject.c",
        "Objects/rangeobject.c",
        "Objects/setobject.c",
        "Objects/sliceobject.c",
        "Objects/structseq.c",
        "Objects/tupleobject.c",
        "Objects/typeobject.c",
        "Objects/unicodeobject.c",
        "Objects/unicodectype.c",
        "Objects/unionobject.c",
        "Objects/weakrefobject.c",

        // Makefile.pre.in PYTHON_OBJS
        "Python/_warnings.c",
        "Python/Python-ast.c",
        "Python/asdl.c",
        "Python/ast.c",
        "Python/ast_opt.c",
        "Python/ast_unparse.c",
        "Python/bltinmodule.c",
        "Python/ceval.c",
        "Python/codecs.c",
        "Python/compile.c",
        "Python/context.c",
        "Python/dynamic_annotations.c",
        "Python/errors.c",
        "Python/frozen.c",
        "Python/frozenmain.c",
        "Python/future.c",
        "Python/getargs.c",
        "Python/getcompiler.c",
        "Python/getcopyright.c",
        "Python/getplatform.c",
        "Python/getversion.c",
        "Python/hamt.c",
        "Python/hashtable.c",
        "Python/import.c",
        "Python/importdl.c",
        "Python/initconfig.c",
        "Python/marshal.c",
        "Python/modsupport.c",
        "Python/mysnprintf.c",
        "Python/mystrtoul.c",
        "Python/pathconfig.c",
        "Python/preconfig.c",
        "Python/pyarena.c",
        "Python/pyctype.c",
        "Python/pyfpe.c",
        "Python/pyhash.c",
        "Python/pylifecycle.c",
        "Python/pymath.c",
        "Python/pystate.c",
        "Python/pythonrun.c",
        "Python/pytime.c",
        "Python/bootstrap_hash.c",
        "Python/structmember.c",
        "Python/symtable.c",
        "Python/sysmodule.c",
        "Python/thread.c",
        "Python/traceback.c",
        "Python/getopt.c",
        "Python/pystrcmp.c",
        "Python/pystrtod.c",
        "Python/pystrhex.c",
        "Python/dtoa.c",
        "Python/formatter_unicode.c",
        "Python/fileutils.c",
        "Python/suggestions.c",
        "Python/dynload_shlib.c",
    ],

    target: {
        linux: {
            cflags: [
                "-DPLATFORM=\"linux\"",
                "-DABIFLAGS=\"\"",
            ],
        },
        darwin: {
            cflags: [
                "-DPLATFORM=\"darwin\"",
                "-DABIFLAGS=\"\"",
            ],
        },
    },
}

cc_defaults {
    name: "py3-launcher-defaults",
    defaults: ["py3-interp-defaults", "cpython3-interp-host-prebuilts"],
    cflags: [
        "-DVERSION=\"3.10\"",
        "-DVPATH=\"\"",
        "-DPREFIX=\"\"",
        "-DEXEC_PREFIX=\"\"",
        "-DPYTHONPATH=\"..:\"",
        "-DANDROID_SKIP_ZIP_PATH",
        "-DANDROID_SKIP_EXEC_PREFIX_PATH",
        "-DANDROID_LIB_PYTHON_PATH=\"internal/stdlib\"",
        "-DDATE=\"Dec 31 1969\"",
        "-DTIME=\"23:59:59\"",
    ],
    static_libs: [
        "libbase",
        "libexpat",
        "libz",
    ],
    target: {
        linux_glibc_x86_64: {
            host_ldlibs: ["-lutil"],
        },
        linux: {
            // Due to test infra limitations, Python native symbols are linked
            // statically to py3-launcher(s). Hence, need this flag to export
            // these symbols so that runtime imported native extensions can use
            // them (e.g. PyBaseObject_Type)
            ldflags: ["-Wl,--export-dynamic"],
        },
        darwin: {
            host_ldlibs: [
                "-framework SystemConfiguration",
                "-framework CoreFoundation",
            ],
        },
        host: {
            static_libs: [
                "libsqlite",
                "liblog",
                "libopenssl_ssl",
                "libopenssl_crypto",
            ],
        },
        linux_bionic: {
            // Linux Bionic doesn't have openssl prebuilts
            exclude_static_libs: [
                "libopenssl_ssl",
                "libopenssl_crypto",
            ],
        },
        android: {
            shared_libs: [
                // Use shared libsqlite for device side, otherwise
                // the executable size will be really huge.
                "libsqlite",
                // Dependency from libbase
                "liblog",
            ],
        },
    },
}

cc_library_static {
    name: "py3-launcher-lib",
    defaults: ["py3-launcher-defaults"],
    cflags: ["-DPy_BUILD_CORE"],
    srcs: [
        // Makefile.pre.in MODULE_OBJS
        "Modules/getpath.c",
        "Modules/main.c",
        "Modules/gcmodule.c",

        // Makefile.pre.in LIBRARY_OBJS_OMIT_FROZEN
        "Modules/getbuildinfo.c",
    ],
    whole_static_libs: [
        "py3-interp",
        "py3-c-modules",
    ],
    target: {
        android: {
            srcs: ["android/bionic/config.c"],
        },
        linux_bionic: {
            srcs: ["android/bionic/config.c"],
        },
        glibc_x86_64: {
            srcs: ["android/linux_x86_64/config.c"],
        },
        musl_x86_64: {
            srcs: ["android/linux_x86_64/config.c"],
        },
        musl_arm64: {
            srcs: ["android/linux_arm64/config.c"],
        },
        darwin: {
            srcs: ["android/darwin/config.c"],
        },
    },
}

cc_binary {
    name: "py3-launcher",
    defaults: ["py3-launcher-defaults"],
    srcs: ["android/launcher_main.cpp"],
    static_libs: ["py3-launcher-lib"],
}

cc_binary {
    name: "py3-launcher-autorun",
    defaults: ["py3-launcher-defaults"],
    srcs: ["android/launcher_main.cpp"],
    static_libs: ["py3-launcher-lib"],
    cflags: ["-DANDROID_AUTORUN"],
}

cc_binary_host {
    name: "py3-launcher-static",
    defaults: ["py3-launcher-defaults"],
    srcs: ["android/launcher_main.cpp"],
    static_libs: ["py3-launcher-lib"],
    static_executable: true,
    target: {
        glibc: {
            enabled: false,
        },
    },
}

cc_binary_host {
    name: "py3-launcher-autorun-static",
    defaults: ["py3-launcher-defaults"],
    srcs: ["android/launcher_main.cpp"],
    static_libs: ["py3-launcher-lib"],
    static_executable: true,
    cflags: ["-DANDROID_AUTORUN"],
    target: {
        glibc: {
            enabled: false,
        },
    },
}

python_binary_host {
    name: "py3-cmd",
    autorun: false,
    version: {
        py3: {
            embedded_launcher: true,
        },
    },
}

// Enabled extension py3-c-modules.

cc_library_static {
    name: "py3-c-modules",
    defaults: ["py3-interp-defaults", "cpython3-interp-host-prebuilts"],
    cflags: [
        "-DPy_BUILD_CORE_BUILTIN",
        "-DUSE_PYEXPAT_CAPI",
    ],
    static_libs: [
        "libexpat",
        "libz",
    ],
    target: {
        android: {
            srcs: [":py3-c-modules-bionic"],
        },
        linux_bionic: {
            srcs: [":py3-c-modules-bionic"],
        },
        glibc_x86_64: {
            srcs: [":py3-c-modules-linux_x86_64"],
            static_libs: [
                "libopenssl_ssl",
                "libopenssl_crypto",
            ],
        },
        musl_x86_64: {
            srcs: [":py3-c-modules-linux_x86_64"],
            static_libs: [
                "libopenssl_ssl",
                "libopenssl_crypto",
            ],
        },
        musl_arm64: {
            srcs: [":py3-c-modules-linux_arm64"],
            static_libs: [
                "libopenssl_ssl",
                "libopenssl_crypto",
            ],
        },
        darwin: {
            cflags: ["-D__APPLE_USE_RFC_3542"],
            srcs: [":py3-c-modules-darwin"],
            static_libs: [
                "libopenssl_ssl",
                "libopenssl_crypto",
            ],
        },
    },
}
