LICENSE_EXPRESSION_IMPLICIT_OR=yes
LICENSE_EXPRESSION_IMPLICIT_AND=yes
LICENSE_EXPRESSION=
LICENSE_NAMES=

MODULE_LICENSES_RESTRICTIONS=
MODULE_LICENSES_RESTRICTION_EXCEPTIONS=
MODULE_LICENSES_RESTRICTION_TYPES=
DEFAULT_MODULE_LICENSE=Service-Default-License
EXPLICIT_LICENSE_PREFIXES=
EXPLICIT_LICENSE_EXCEPTIONS=

# List of license properties which can be used to restrict transitive dependencies. There are three variables checked for each
# property:
# * LICENSES_<PROP_NAME>_STATIC: list of licenses which propagates this property when linking with code published by one of
#                                them statically.
# * LICENSES_<PROP_NAME>_DYNAMIC: list of licenses which propagates this property when linking with code published by one of
#                                 them dyamically.
# * LICENSES_<PROP_NAME>: list of licenses which propagates this property regrdless of type of linking with code published by
#                         one of them. Putting some license into this list is equivalent to putting it into both
#                         LICENSES_<PROP_NAME>_STATIC and LICENSES_<PROP_NAME>_DYNAMIC lists.
LICENSE_PROPERTIES= \
    FORBIDDEN NDA REQUIRE_DISCLOSURE PERMISSIVE REQUIRE_CITATION SERVICE PROTESTWARE


# NB: Licenses lists below are sorted case-insensitively. Please, keep the list sorted.
LICENSES_UNATTRIBUTED= \
    AFL-2.0 \
    Amazon-SL \
    AML \
    APSL-1.0 \
    Artistic-1.0-Perl \
    Artistic-2.0 \
    ASM-BSD-3-Clause \
    BCL \
    Bison-Exception \
    Bison-exception-2.2 \
    BouncyCastle-MIT \
    BSD-3-Clause-Clear \
    BSD-3-Clause-Open-MPI \
    BSD-4-Clause-Shortened \
    Bsd-New-Tcpdump \
    Carnegie-Mellon \
    Carnegie-Mellon-Contributors \
    CC-BY-NC-1.0 \
    CC-BY-NC-2.0 \
    CC-BY-NC-2.5 \
    CC-BY-NC-3.0 \
    CC-BY-NC-ND-1.0 \
    CC-BY-NC-ND-2.0 \
    CC-BY-NC-ND-2.5 \
    CC-BY-NC-ND-3.0 \
    CC-BY-NC-SA-1.0 \
    CC-BY-NC-SA-2.0 \
    CC-BY-NC-SA-2.5 \
    CC-BY-NC-SA-3.0 \
    CC-BY-ND-1.0 \
    CC-BY-ND-2.0 \
    CC-BY-ND-2.5 \
    CC-BY-ND-3.0 \
    CC-BY-SA-1.0 \
    CC-BY-SA-2.0 \
    CC-BY-SA-2.5 \
    CC-BY-SA-3.0 \
    CC-BY-SA-4.0 \
    CDDL \
    CECILL-B \
    ClArtistic \
    DOC \
    DSO-1.1 \
    Elastic-License-2.0 \
    FSFUL \
    FSFULLR \
    GCC-exception-3.1 \
    GDAL \
    GFDL-1.1-or-later \
    Go-License \
    Google-Patent-License-Webm \
    Google-Patent-License-Webrtc \
    GPL-2.0 WITH Classpath-exception-2.0 \
    GPL-2.0-only WITH Classpath-exception-2.0 \
    GPL-2.0 WITH FOSS-exception \
    GPL-2.0-only WITH freertos-exception-2.0 \
    GPL-2.0-only WITH Mysql-Linking-Exception-2018 \
    GPL-2.0-only WITH OpenJDK-assembly-exception-1.0 \
    GPL-2.0-only WITH Universal-FOSS-exception-1.0 \
    GPL-2.0-or-later WITH Avisynth-C-Interface-Exception \
    GPL-2.0-or-later WITH Bison-Exception-2.0 \
    GPL-2.0-or-later WITH Bison-exception-2.2 \
    GPL-2.0-or-later WITH C-Interface-Exception \
    GPL-2.0-or-later WITH freertos-exception-2.0 \
    GPL-2.0-or-later WITH Libtool-exception \
    GPL-2.0-or-later WITH mif-exception \
    GWT-Terms \
    Hdf5 \
    HPND-sell-variant \
    HPND-sell-variant \
    HSQLDB-BSD-3-Clause \
    Ibm-Dhcp \
    Ietf-trust \
    ImageMagick \
    Intel-Material \
    IPL-1.0 \
    JAMon-BSD-3-Clause \
    jQuery-MIT \
    LGPL-2.0-or-later WITH Sdbus-C++-LGPL-exception-1.1 \
    LGPL-3.0-or-later WITH ZeroMQ-Exception \
    LicenseRef-scancode-afpl-9.0 \
    LicenseRef-scancode-amd-historical \
    LicenseRef-scancode-anu-license \
    LicenseRef-scancode-autoconf-simple-exception \
    LicenseRef-scancode-autoconf-simple-exception-2.0 \
    LicenseRef-scancode-bsd-3-clause-jtag \
    LicenseRef-scancode-bsd-axis-nomod \
    LicenseRef-scancode-bsd-new-nomod \
    LicenseRef-scancode-bsd-no-disclaimer \
    LicenseRef-scancode-bsd-x11 \
    LicenseRef-scancode-bsla-no-advert \
    LicenseRef-scancode-cavium-malloc \
    LicenseRef-scancode-cc-by-2.0-uk \
    LicenseRef-scancode-cc-devnations-2.0 \
    LicenseRef-scancode-cc-sampling-1.0 \
    LicenseRef-scancode-cmu-simple \
    LicenseRef-scancode-commercial-license \
    LicenseRef-scancode-commons-clause \
    LicenseRef-scancode-delorie-historical \
    LicenseRef-scancode-flex-2.5 \
    LicenseRef-scancode-free-unknown \
    LicenseRef-scancode-gary-s-brown \
    LicenseRef-scancode-generic-cla \
    LicenseRef-scancode-generic-exception \
    LicenseRef-scancode-intel-osl-1993 \
    LicenseRef-scancode-jdom \
    LicenseRef-scancode-mit-xfig \
    LicenseRef-scancode-newlib-historical \
    LicenseRef-scancode-nilsson-historical \
    LicenseRef-scancode-openssl \
    LicenseRef-scancode-openssl-exception-lgpl-3.0-plus \
    LicenseRef-scancode-openssl-nokia-psk-contribution \
    LicenseRef-scancode-osf-1990 \
    LicenseRef-scancode-other-copyleft \
    LicenseRef-scancode-other-permissive \
    LicenseRef-scancode-paul-mackerras \
    LicenseRef-scancode-paul-mackerras-new \
    LicenseRef-scancode-pcre \
    LicenseRef-scancode-ppp \
    LicenseRef-scancode-proprietary-license \
    LicenseRef-scancode-secret-labs-2011 \
    LicenseRef-scancode-ssleay-windows \
    LicenseRef-scancode-sun-source \
    LicenseRef-scancode-swig \
    LicenseRef-scancode-unknown \
    LicenseRef-scancode-unknown-license-reference \
    LicenseRef-scancode-unknown-spdx \
    LicenseRef-scancode-warranty-disclaimer \
    LicenseRef-scancode-xfree86-1.0 \
    LPL-1.02 \
    MirOS \
    Mit-Xfig \
    NAIST-2003 \
    NOSL \
    NPL-1.1 \
    Nvidia-Gov \
    OFL-1.1 \
    Oracle \
    Oracle-technology \
    PSF-3.7.2 \
    Quicklz \
    Ruby \
    Sendmail \
    Spencer-99 \
    SSPL-1.0 \
    Stlport-4.5 \
    SZIP \
    TCL \
    TU-Berlin-1.0 \
    Unicode-TOU \
    Universal-FOSS-exception-1.0 \
    Unknown \
    Vcalendar \
    Vim \
    X11-Adobe-Dec \
    X11-Hanson \
    Xfree86-1.0 \
    Xnet

LICENSES_PATCHES_FORBIDDEN= \
    Unicode

LICENSES_FORBIDDEN= \
    AGPL-3.0-only \
    AGPL-3.0-or-later \
    Artistic-1.0 \
    Musl-Exception \
    confluent-community-1.0 \
    ${LICENSES_UNATTRIBUTED}

# Group for proprietary code licenses
LICENSES_NDA= \
    Intel-NDA \
    mimepp \
    OracleOebs

# These licenses allow use with opensource code only
LICENSES_REQUIRE_DISCLOSURE= \
    CDDL-1.0 \
    CDDL-1.1 \
    CECILL-2.0 \
    CPL-1.0 \
    EPL-1.0 \
    EPL-2.0 \
    GPL \
    GPL-1.0-only \
    GPL-1.0-or-later \
    GPL-1.0-or-later WITH Linux-syscall-note \
    GPL-1.1 \
    GPL-2.0 \
    GPL-2.0-only \
    GPL-2.0-only WITH GCC-exception-2.0 \
    GPL-2.0-only WITH Linux-syscall-note \
    GPL-2.0-or-later \
    GPL-2.0-or-later WITH GCC-exception-2.0 \
    GPL-2.0-or-later WITH Linux-syscall-note \
    GPL-3.0-only \
    GPL-3.0-only WITH Bison-exception-2.2 \
    GPL-3.0-or-later \
    GPL-3.0-or-later WITH Bison-exception-2.2 \
    GPLv2+

LICENSES_REQUIRE_DISCLOSURE_STATIC= \
    LGPL \
    LGPL-1.0-or-later \
    LGPL-2.0-only \
    LGPL-2.0-or-later \
    LGPL-2.0-or-later WITH Libtool-exception \
    LGPL-2.0-or-later WITH Linux-syscall-note \
    LGPL-2.1-only \
    LGPL-2.1-only WITH Linux-syscall-note \
    LGPL-2.1-or-later \
    LGPL-2.1-or-later WITH Linux-syscall-note \
    LGPL-3.0-only \
    LGPL-3.0-or-later

# These licenses allows any kind of linkage with proprietary code
LICENSES_PERMISSIVE= \
    0BSD \
    Apache-1.0 \
    Apache-1.1 \
    Apache-2.0 \
    Apache-2.0 WITH LLVM-exception \
    APSL-2.0 \
    Beerware \
    blessing \
    BSD \
    BSD-1-Clause \
    BSD-2-Clause \
    BSD-2-Clause-Patent \
    BSD-2-Clause-Views \
    BSD-3-Clause WITH Google-Patent-License-Webm \
    BSD-3-Clause WITH Google-Patent-License-Webrtc \
    BSD-3-Clause \
    BSD-4-Clause \
    BSD-4-Clause-UC \
    BSD-derived \
    Bsd-Original-Uc-1986 \
    Bsd-Simplified-Darwin \
    BSD-Source-Code \
    Bsd-Unchanged \
    Bsd-Unmodified \
    BSL-1.0 \
    bzip2-1.0.6 \
    CC-PDDC \
    CC0-1.0 \
    Cmu-Computing-Services \
    CUP-Parser \
    curl \
    Custom-eigen \
    Custom-fft2d \
    Custom-fft4g \
    Custom-openldap \
    Custom-punycode \
    Custom-wcwidth \
    EDL-1.0 \
    Facebook-SDK \
    Fftpack-2004 \
    FDK \
    FSFAP \
    FTL \
    H2 \
    IBM-pibs \
    ICU \
    Ietf \
    IJG \
    Intel-LLVM-SGA \
    Intel-Simplified \
    ISC \
    JSON \
    Khronos \
    Libpbm \
    Libpng \
    libpng-2.0 \
    LicenseRef-scancode-ams-fonts \
    LicenseRef-scancode-bitstream \
    Linux-OpenIB \
    Martin-Birgmeier \
    Minpack \
    MIT \
    MIT-0 \
    MIT-CMU \
    MIT-Modern-Variant \
    MIT-Nagy \
    Mit-Old-Style \
    MIT-open-group \
    Mit-Veillard-Variant \
    Mozilla-GC \
    MPL-1.0 \
    MPL-1.1 \
    MPL-2.0 \
    NCSA \
    Not-Applicable \
    NTP \
    Nvidia \
    OGC-1.0 \
    OLDAP-2.8 \
    OML \
    OpenSSL \
    PayPal-SDK \
    PCRE \
    PD \
    PHP-3.01 \
    PIL \
    Plexus \
    PostgreSQL \
    Protobuf-License \
    PSF \
    PSF-2.0 \
    Public-Domain \
    Public-Domain-US-Govt \
    Python-2.0 \
    Qhull \
    Red-Hat-Attribution \
    Repoze-public \
    RSA-1990 \
    RSA-MD \
    RSA-MD4 \
    SGI-B-2.0 \
    SMLNJ \
    SSH-short \
    SSLeay \
    Sleepycat \
    Snprintf \
    Softsurfer \
    Sunpro \
    Unicode-DFS-2016 \
    Unicode-Icu-58 \
    Unicode-Mappings \
    Unlicense \
    Unrar \
    UPL-1.0 \
    Vertica \
    W3C \
    WTFPL \
    X11 \
    X11-Lucent \
    X11-XConsortium-Veillard \
    YandexOpen \
    Zlib \
    zlib-acknowledgement \
    ZPL-2.1 \
    ${CUSTOM_LICENSE_LINUX_SYSCALL_NOTE} \
    ${CUSTOM_LICENSE_MUSL_EXCEPTION} \
    ${LICENSES_PATCHES_FORBIDDEN}

LICENSES_PERMISSIVE_DYNAMIC= \
    LGPL \
    LGPL-2.0-only \
    LGPL-2.0-or-later \
    LGPL-2.1-only \
    LGPL-2.1-or-later \
    LGPL-3.0-only \
    LGPL-3.0-or-later

# https://st.yandex-team.ru/ARCADIAWGSUP-34
CUSTOM_LICENSE_LIBSSH2_AGENT_WIN=Libssh2-Agent-Win
# Permissive if the code is used to declare and invoke syscalls
CUSTOM_LICENSE_LINUX_SYSCALL_NOTE=Linux-syscall-note-in-syscall-glue
# Permissive only in musllib
CUSTOM_LICENSE_MUSL_EXCEPTION=Musl-Exception-in-Musllib

# TODO: this list is almost empty. needed for DEVRULES-151
LICENSES_REQUIRE_CITATION= \
    Apache-2.0 \
    Brian-Gladman-3-Clause \
    BSLA \
    CC-BY-1.0 \
    CC-BY-2.0 \
    CC-BY-2.5 \
    CC-BY-3.0 \
    CC-BY-4.0 \
    Cmu-Computing-Services \
    Custom-Oasis-Pkcs11 \
    EDL-1.0 \
    HPND \
    Info-Zip \
    OpenSSL \
    Qhull \
    Spencer-94 \
    LicenseRef-scancode-paul-mackerras-binary \
    NetCDF \
    libtiff \
    ${CUSTOM_LICENSE_LIBSSH2_AGENT_WIN}

LICENSES_SERVICE= \
    Service-Default-License \
    Service-Dll-Harness \
    Service-Prebuilt-Tool \
    Service-Py23-Proxy

LICENSES_PROTESTWARE= \
    Protestware

macro _REQUIRE_EXPLICIT_LICENSE(PREFIXES...) {
    SET(EXPLICIT_LICENSE_PREFIXES ${PREFIXES})
}

### @usage: LICENSE(licenses...)
###
### Specify the licenses of the module, separated by spaces. Specifying multiple licenses interpreted as permission to use this
### library satisfying all conditions of any of the listed licenses.
###
### A license must be prescribed for contribs
macro LICENSE(Flags...) {
    SET(LICENSE_EXPRESSION $Flags)
    SET(LICENSE_NAMES $Flags)
}

### @usage LICENSE_RESTRICTION(ALLOW_ONLY|DENY LicenseProperty...)
###
### Restrict licenses of direct and indirect module dependencies.
###
### ALLOW_ONLY restriction type requires dependent module to have at leas one license without propertis not listed in restrictions
### list.
###
### DENY restriction type forbids dependency on module with no license without any listed propery from the list.
###
### Note: Can be used multiple times on the same module all specified constraints will be checked.
### All macro invocation for the same module must use same constraints type (DENY or ALLOW_ONLY)
macro LICENSE_RESTRICTION(TYPE, RESTRICTIONS...) {
    SET_APPEND(MODULE_LICENSES_RESTRICTION_TYPES $TYPE)
    SET_APPEND(MODULE_LICENSES_RESTRICTIONS $RESTRICTIONS)
}