{
  "version": 2,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 20,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "default",
      "displayName": "Default build with ninja",
      "description": "Default build using Ninja generator",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build-default",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_COMPILE_WARNING_AS_ERROR": "ON"
      }
    },
    {
      "name": "layout-defaults",
      "displayName": "Default install layout paths template",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_INSTALL_BINDIR": "bin",
        "CMAKE_INSTALL_SBINDIR": "bin",
        "CMAKE_INSTALL_LIBDIR": "lib",
        "CMAKE_INSTALL_SYSCONFDIR": "etc/trafficserver",
        "CMAKE_INSTALL_DATADIR": "share/trafficserver",
        "CMAKE_INSTALL_INCLUDEDIR": "include",
        "CMAKE_INSTALL_LIBEXECDIR": "libexec/trafficserver",
        "CMAKE_INSTALL_RUNSTATEDIR": "var/trafficserver",
        "CMAKE_INSTALL_INFODIR": "share/info",
        "CMAKE_INSTALL_MANDIR": "share/man",
        "CMAKE_INSTALL_LOGDIR": "var/log/trafficserver",
        "CMAKE_INSTALL_CACHEDIR": "var/trafficserver"
      }
    },
    {
      "name": "release",
      "displayName": "Release build",
      "description": "Release build with Ninja generator",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build-release",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_COMPILE_WARNING_AS_ERROR": "OFF",
        "CMAKE_INSTALL_PREFIX": "/opt/ats",
        "BUILD_EXPERIMENTAL_PLUGINS": "ON",
        "ENABLE_WASM_WAMR": "OFF",
        "ENABLE_VERIFY_PLUGINS": "OFF"
      }
    },
    {
      "name": "autest",
      "inherits": ["default"],
      "binaryDir": "${sourceDir}/build-autest",
      "cacheVariables": {
        "ENABLE_AUTEST": "ON",
        "CMAKE_INSTALL_PREFIX": "/tmp/ts-autest",
        "BUILD_EXPERIMENTAL_PLUGINS": "ON",
        "ENABLE_WASM_WAMR": "OFF",
        "ENABLE_EXAMPLE": "ON"
      }
    },
    {
      "name": "autest-uds",
      "inherits": ["default"],
      "binaryDir": "${sourceDir}/build-autest",
      "cacheVariables": {
        "ENABLE_AUTEST": "ON",
        "ENABLE_AUTEST_UDS": "ON",
        "CMAKE_INSTALL_PREFIX": "/tmp/ts-autest",
        "BUILD_EXPERIMENTAL_PLUGINS": "ON",
        "ENABLE_EXAMPLE": "ON"
      }
    },
    {
      "name": "dev",
      "displayName": "development",
      "description": "Development Presets",
      "inherits": ["default"],
      "binaryDir": "${sourceDir}/build-${presetName}",
      "generator": "Ninja",
      "cacheVariables": {
        "CMAKE_COLOR_DIAGNOSTICS": "ON",
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
        "CMAKE_INSTALL_PREFIX": "/tmp/ats-dev"
      }
    },
    {
      "name": "asan",
      "hidden": true,
      "cacheVariables": {
        "ENABLE_ASAN": "ON"
      }
    },
    {
      "name": "tsan",
      "hidden": true,
      "cacheVariables": {
        "ENABLE_TSAN": "ON"
      }
    },
    {
      "name": "hardened",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_CXX_FLAGS": "-D_FORTIFY_SOURCE=2 -fPIE -fstack-protector",
        "CMAKE_EXE_LINKER_FLAGS": "-pie -Wl,-z,relro -Wl,-z,now"
      }
    },
    {
      "name": "dev-asan",
      "displayName": "dev with asan",
      "description": "Development Presets with ASAN sanitizer",
      "inherits": ["dev", "asan"]
    },
    {
      "name": "ci",
      "displayName": "CI defaults",
      "description": "Defaults for CI Pipeline builds",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build-ci",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_COMPILE_WARNING_AS_ERROR": "ON",
        "ENABLE_THREAD_SAFETY_ANALYSIS": "ON",
        "THREAD_SAFETY_ANALYSIS_AS_ERROR": "ON",
        "ENABLE_CCACHE": "ON",
        "BUILD_EXPERIMENTAL_PLUGINS": "ON",
        "ENABLE_WASM_WAMR": "OFF",
        "ENABLE_EXAMPLE": "ON",
        "CMAKE_INSTALL_PREFIX": "/tmp/ats"
      }
    },
    {
      "name": "ci-centos",
      "displayName": "CI CentOS",
      "description": "CI Pipeline config for CentOS",
      "inherits": ["ci"],
      "generator": "Unix Makefiles",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "OPENSSL_ROOT_DIR": "/opt/openssl-quic"
      }
    },
    {
      "name": "ci-docs",
      "displayName": "Docs Build",
      "description": "Presets for CI build of ATS docs",
      "binaryDir": "${sourceDir}/build-docs",
      "generator": "Ninja",
      "cacheVariables": {
        "ENABLE_DOCS": "ON"
      }
    },
    {
      "name": "ci-osx",
      "displayName": "CI OSX",
      "description": "CI Pipeline config for OSX",
      "inherits": ["ci"],
      "generator": "Unix Makefiles",
      "cacheVariables": {
        "ENABLE_CRIPTS": "ON"
      }
    },
    {
      "name": "ci-rocky",
      "displayName": "CI Rocky",
      "description": "CI Pipeline config for Rocky Linux",
      "inherits": ["ci", "asan"],
      "cacheVariables": {
        "OPENSSL_ROOT_DIR": "/opt/h3-tools-boringssl/boringssl",
        "quiche_ROOT": "/opt/h3-tools-boringssl/quiche",
        "CMAKE_INSTALL_PREFIX": "/tmp/ats-quiche",
        "opentelemetry_ROOT": "/opt",
        "ENABLE_QUICHE": "ON"
      }
    },
    {
      "name": "ci-fedora",
      "displayName": "CI Fedora",
      "description": "CI Pipeline config for Fedora Linux",
      "inherits": ["ci"],
      "cacheVariables": {
        "ENABLE_PROBES": "ON",
        "OPENSSL_ROOT_DIR": "/usr",
        "opentelemetry_ROOT": "/opt",
        "CURL_ROOT": "/usr",
        "wamr_ROOT": "/opt",
        "ENABLE_OTEL_TRACER": "ON",
        "ENABLE_WASM_WAMR": "ON",
        "ENABLE_CRIPTS": "ON",
        "ENABLE_OPENSSL_QUIC": "ON"
      }
    },
    {
      "name": "ci-fedora-cxx20",
      "displayName": "CI Fedora c++20",
      "description": "CI Pipeline config for Fedora Linux compiled with c++20",
      "inherits": ["ci-fedora"],
      "cacheVariables": {
        "CMAKE_CXX_STANDARD": "20",
        "CMAKE_C_COMPILER": "clang",
        "CMAKE_CXX_COMPILER": "clang++"
      }
    },
    {
      "name": "ci-fedora-quiche",
      "displayName": "CI Fedora Quiche",
      "description": "CI Pipeline config for Fedora Linux (quiche build)",
      "inherits": ["ci-fedora"],
      "cacheVariables": {
        "OPENSSL_ROOT_DIR": "/opt/h3-tools-boringssl/boringssl",
        "quiche_ROOT": "/opt/h3-tools-boringssl/quiche",
        "opentelemetry_ROOT": "/opt",
        "CURL_ROOT": "/opt/h3-tools-boringssl",
        "wamr_ROOT": "/opt",
        "ENABLE_OTEL_TRACER": "ON",
        "ENABLE_WASM_WAMR": "ON",
        "CMAKE_INSTALL_PREFIX": "/tmp/ats-quiche",
        "ENABLE_OPENSSL_QUIC": "OFF",
        "ENABLE_QUICHE": "ON"
      }
    },
    {
      "name": "ci-fedora-autest",
      "displayName": "CI Fedora Autest",
      "description": "CI Pipeline config for Fedora Linux (autest build)",
      "inherits": ["ci-fedora", "autest"]
    },
    {
      "name": "ci-freebsd",
      "displayName": "CI Fedora",
      "description": "CI Pipeline config for Fedora Linux",
      "generator": "Unix Makefiles",
      "binaryDir": "${sourceDir}/build-${presetName}",
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "/tmp/ats",
        "BUILD_EXPERIMENTAL_PLUGINS": "ON",
        "ENABLE_WASM_WAMR": "OFF"
      }
    },
    {
      "name": "ci-debian",
      "displayName": "CI Debian Hardened Build",
      "description": "CI Pipeline config for Debian with hardening flags",
      "inherits": ["ci", "hardened"],
      "cacheVariables": {
        "OPENSSL_ROOT_DIR": "/opt/openssl-quic"
      }
    },
    {
      "name": "ci-ubuntu",
      "displayName": "CI Ubuntu Hardened Build",
      "description": "CI Pipeline config for Ubuntu with hardening flags",
      "inherits": ["ci", "hardened"],
      "cacheVariables": {
        "CMAKE_C_COMPILER": "clang",
        "CMAKE_CXX_COMPILER": "clang++"
      }
    },
    {
      "name": "ci-clang-analyzer",
      "displayName": "CI Clang Analyzer",
      "description": "CI Pipeline config for running clang-analyzer",
      "inherits": ["ci"],
      "cacheVariables": {
        "CMAKE_C_COMPILER": "clang",
        "CMAKE_CXX_COMPILER": "clang++",
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
        "ENABLE_CCACHE": "OFF",
        "ENABLE_EXAMPLE": "OFF",
        "BUILD_TESTING": "OFF"
      }
    },
    {
      "name": "branch",
      "displayName": "CI branch defaults",
      "inherits": ["ci"],
      "binaryDir": "${sourceDir}/build",
      "generator": "Unix Makefiles"
    },
    {
      "name": "branch-release",
      "displayName": "CI branch release",
      "inherits": ["branch"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release"
      }
    },
    {
      "name": "branch-debug",
      "displayName": "CI branch debug",
      "inherits": ["branch"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "branch-asan",
      "description": "Inherit to enable asan, build feature",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_CXX_FLAGS_DEBUG": "-g -fsanitize=address",
        "CMAKE_C_FLAGS_DEBUG": "-g -fsanitize=address"
      }
    },
    {
      "name": "branch-lsan",
      "description": "Inherit to enable lsan, build feature",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_CXX_FLAGS_DEBUG": "-g -fsanitize=leak",
        "CMAKE_C_FLAGS_DEBUG": "-g -fsanitize=leak"
      }
    },
    {
      "name": "branch-tsan",
      "description": "Inherit to enable tsan, build feature",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_CXX_FLAGS_DEBUG": "-g -fsanitize=thread",
        "CMAKE_C_FLAGS_DEBUG": "-g -fsanitize=thread"
      }
    },
    {
      "name": "branch-hardened",
      "description": "Inherit to enable hardening, build feature",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_CXX_FLAGS": "-D_FORTIFY_SOURCE=2 -fPIE -fstack-protector",
        "CMAKE_EXE_LINKER_FLAGS": "-pie -Wl,-z,relro -Wl,-z,now"
      }
    },
    {
      "name": "branch-quiche-on-boringssl",
      "displayName": "CI branch Quiche",
      "inherits": ["branch"],
      "cacheVariables": {
        "ENABLE_AUTEST": "ON",
        "nuraft_ROOT": "/opt/nuraft-boringssl",
        "OPENSSL_ROOT_DIR": "/opt/h3-tools-boringssl/boringssl",
        "quiche_ROOT": "/opt/h3-tools-boringssl/quiche",
        "ENABLE_QUICHE": "ON"
      }
    },
    {
      "name": "branch-quiche-on-openssl",
      "displayName": "CI branch Quiche",
      "inherits": ["branch"],
      "cacheVariables": {
        "ENABLE_AUTEST": "ON",
        "nuraft_ROOT": "/opt",
        "OPENSSL_ROOT_DIR": "/opt/openssl-quic/",
        "quiche_ROOT": "/opt/quiche",
        "ENABLE_QUICHE": "ON"
      }
    },
    {
      "name": "branch-quic",
      "displayName": "CI branch QUIC",
      "inherits": ["branch"],
      "cacheVariables": {
        "OPENSSL_ROOT_DIR": "/opt/openssl-quic"
      }
    },
    {
      "name": "branch-autest",
      "displayName": "CI branch autest",
      "inherits": ["branch"],
      "cacheVariables": {
        "ENABLE_AUTEST": "ON",
        "ENABLE_EXAMPLE": "ON",
        "ENABLE_CRIPTS": "ON"
      }
    },
    {
      "name": "branch-autest-uds",
      "displayName": "CI branch autest",
      "inherits": ["branch"],
      "cacheVariables": {
        "ENABLE_AUTEST": "ON",
        "ENABLE_AUTEST_UDS": "ON",
        "ENABLE_EXAMPLE": "ON",
        "ENABLE_CRIPTS": "ON"
      }
    },
    {
      "name": "branch-freebsd",
      "displayName": "CI branch freebsd",
      "description": "Defaults for branch freebsd builds",
      "inherits": ["branch"],
      "generator": "Unix Makefiles"
    },
    {
      "name": "branch-osx",
      "displayName": "CI branch OSX",
      "description": "Defaults for branch osx builds",
      "inherits": ["branch"],
      "generator": "Unix Makefiles",
      "cacheVariables": {
        "OPENSSL_ROOT_DIR": "/usr/local/opt/openssl"
      }
    },
    {
      "name": "branch-osx-m1",
      "displayName": "CI branch OSX m1",
      "description": "Defaults for branch osx-m1 builds",
      "inherits": ["branch"],
      "generator": "Unix Makefiles",
      "cacheVariables": {
        "OPENSSL_ROOT_DIR": "/opt/homebrew/opt/openssl"
      }
    },
    {
      "name": "branch-clang-analyzer",
      "displayName": "CI branch clang analyzer",
      "description": "Defaults for branch clang analyzer builds",
      "inherits": ["branch"],
      "cacheVariables": {
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
        "ENABLE_CCACHE": "OFF",
        "ENABLE_EXAMPLE": "OFF",
        "BUILD_TESTING": "OFF"
      }
    },
    {
      "name": "branch-coverity",
      "displayName": "CI branch coverity",
      "description": "Defaults for branch coverity builds",
      "inherits": ["branch"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "BUILD_EXPERIMENTAL_PLUGINS": "ON",
        "ENABLE_WASM_WAMR": "OFF",
        "ENABLE_EXAMPLE": "ON",
        "ENABLE_CCACHE": "OFF"
      }
    },
    {
      "name": "branch-coverage",
      "displayName": "CI branch coverage",
      "description": "Defaults for branch coverage builds",
      "inherits": ["branch-autest"],
      "cacheVariables": {
        "CMAKE_CXX_FLAGS_DEBUG": "--coverage",
        "CMAKE_C_FLAGS_DEBUG": "--coverage"
      }
    }
  ],
  "buildPresets": [
    {
      "name": "autest",
      "configurePreset": "autest",
      "targets": ["autest"]
    }
  ]
}