# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

with Files("**"):
    BUG_COMPONENT = ("Core", "Networking: DNS")

XPIDL_SOURCES += [
    "nsIDNSAdditionalInfo.idl",
    "nsIDNSByTypeRecord.idl",
    "nsIDNSListener.idl",
    "nsIDNSRecord.idl",
    "nsIDNSService.idl",
    "nsIEffectiveTLDService.idl",
    "nsIIDNService.idl",
    "nsINativeDNSResolverOverride.idl",
    "nsITRRSkipReason.idl",
    "nsPIDNSService.idl",
]

XPIDL_MODULE = "necko_dns"

XPCSHELL_TESTS_MANIFESTS += ["tests/unit/xpcshell.toml"]

EXPORTS += [
    "nsEffectiveTLDService.h",
]

EXPORTS.mozilla.net += [
    "ChildDNSService.h",
    "DNS.h",
    "DNSByTypeRecord.h",
    "DNSListenerProxy.h",
    "DNSPacket.h",
    "DNSRequestBase.h",
    "DNSRequestChild.h",
    "DNSRequestParent.h",
    "DNSServiceBase.h",
    "HTTPSSVC.h",
    "IDNBlocklistUtils.h",
    "NativeDNSResolverOverrideChild.h",
    "NativeDNSResolverOverrideParent.h",
    "TRRService.h",
    "TRRServiceBase.h",
    "TRRServiceChild.h",
    "TRRServiceParent.h",
]

SOURCES += [
    "GetAddrInfo.cpp",  # Undefines UNICODE
    "nsEffectiveTLDService.cpp",  # Excluded from UNIFIED_SOURCES due to special build flags.
]

if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
    SOURCES += ["PlatformDNSWin.cpp"]
elif CONFIG["OS_TARGET"] == "Linux":
    SOURCES += ["PlatformDNSUnix.cpp"]
    OS_LIBS += ["resolv"]
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
    SOURCES += ["PlatformDNSMac.cpp"]
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
    SOURCES += ["PlatformDNSAndroid.cpp"]
else:
    DEFINES["MOZ_NO_HTTPS_IMPL"] = 1

UNIFIED_SOURCES += [
    "ChildDNSService.cpp",
    "DNS.cpp",
    "DNSAdditionalInfo.cpp",
    "DNSListenerProxy.cpp",
    "DNSPacket.cpp",
    "DNSRequestChild.cpp",
    "DNSRequestParent.cpp",
    "DNSServiceBase.cpp",
    "DNSUtils.cpp",
    "HostRecordQueue.cpp",
    "HTTPSSVC.cpp",
    "IDNBlocklistUtils.cpp",
    "NativeDNSResolverOverrideChild.cpp",
    "NativeDNSResolverOverrideParent.cpp",
    "nsDNSService2.cpp",
    "nsHostRecord.cpp",
    "nsHostResolver.cpp",
    "nsIDNService.cpp",
    "TRR.cpp",
    "TRRQuery.cpp",
    "TRRService.cpp",
    "TRRServiceBase.cpp",
    "TRRServiceChild.cpp",
    "TRRServiceParent.cpp",
]

IPDL_SOURCES = [
    "PDNSRequest.ipdl",
    "PDNSRequestParams.ipdlh",
    "PNativeDNSResolverOverride.ipdl",
    "PTRRService.ipdl",
]

include("/ipc/chromium/chromium-config.mozbuild")

FINAL_LIBRARY = "xul"

GeneratedFile(
    "etld_data.inc", script="prepare_tlds.py", inputs=["effective_tld_names.dat"]
)

# need to include etld_data.inc
LOCAL_INCLUDES += [
    "/netwerk/base",
    "/netwerk/ipc",
    "/netwerk/protocol/http",
]

USE_LIBS += ["icu"]
