blob: 63595857f0e5ad85c03fca0807b5f589998d5e07 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//testing/test.gni")
declare_args() {
# Tests may not be appropriate for some build environments, e.g. Windows.
# Rather than enumerate valid options, we just let clients ask for them.
build_libsrtp_tests = false
}
config("libsrtp_config") {
defines = [
# Package identity
"PACKAGE_STRING=\"libsrtp2 2.1.0-pre\"",
"PACKAGE_VERSION=\"2.1.0-pre\"",
# Config
"HAVE_CONFIG_H",
"OPENSSL",
# Platform properties
"HAVE_STDLIB_H",
"HAVE_STRING_H",
"HAVE_STDINT_H",
"HAVE_INTTYPES_H",
"HAVE_INT16_T",
"HAVE_INT32_T",
"HAVE_INT8_T",
"HAVE_UINT16_T",
"HAVE_UINT32_T",
"HAVE_UINT64_T",
"HAVE_UINT8_T",
]
if (is_posix || is_fuchsia) {
defines += [
"HAVE_ARPA_INET_H",
"HAVE_NETINET_IN_H",
"HAVE_SYS_TYPES_H",
"HAVE_UNISTD_H",
]
}
if (is_win) {
defines += [ "HAVE_WINSOCK2_H" ]
}
# Supports clients depending on SRTP_RELATIVE_PATH.
# TODO(mattdr): Remove SRTP_RELATIVE_PATH and this config.
include_dirs = [
".",
"config",
"include",
"crypto/include",
]
}
config("libsrtp_warnings") {
cflags = []
if (is_win) {
cflags += [ "/wd4018" ] # Signed/unsigned mismatch in comparison
}
}
static_library("libsrtp") {
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":libsrtp_warnings" ]
public_configs = [ ":libsrtp_config" ]
sources = [
# includes
"include/ekt.h",
"include/srtp.h",
# headers
"crypto/include/aes.h",
"crypto/include/aes_gcm_ossl.h",
"crypto/include/aes_icm.h",
"crypto/include/aes_icm_ossl.h",
"crypto/include/alloc.h",
"crypto/include/auth.h",
"crypto/include/cipher.h",
"crypto/include/cipher_types.h",
"crypto/include/crypto_kernel.h",
"crypto/include/crypto_types.h",
"crypto/include/datatypes.h",
"crypto/include/err.h",
"crypto/include/integers.h",
"crypto/include/key.h",
"crypto/include/null_auth.h",
"crypto/include/null_cipher.h",
"crypto/include/rdb.h",
"crypto/include/rdbx.h",
"crypto/include/stat.h",
"include/srtp_priv.h",
"include/ut_sim.h",
# sources
"crypto/cipher/aes_gcm_ossl.c",
"crypto/cipher/aes_icm_ossl.c",
"crypto/cipher/cipher.c",
"crypto/cipher/null_cipher.c",
"crypto/hash/auth.c",
"crypto/hash/hmac_ossl.c",
"crypto/hash/null_auth.c",
"crypto/kernel/alloc.c",
"crypto/kernel/crypto_kernel.c",
"crypto/kernel/err.c",
"crypto/kernel/key.c",
"crypto/math/datatypes.c",
"crypto/math/stat.c",
"crypto/replay/rdb.c",
"crypto/replay/rdbx.c",
"srtp/ekt.c",
"srtp/srtp.c",
]
public_deps = [
"//third_party/boringssl:boringssl",
]
}
if (build_libsrtp_tests) {
config("srtp_test_config") {
include_dirs = [ "test" ]
configs = [ ":libsrtp_warnings" ]
}
template("srtp_test") {
test("${target_name}") {
output_name = invoker.target_name
output_dir = "${root_out_dir}/srtp_tests"
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":srtp_test_config" ]
deps = [
":libsrtp",
]
sources = [
"crypto/replay/ut_sim.c",
"include/getopt_s.h",
"include/ut_sim.h",
"test/getopt_s.c",
"test/util.c",
"test/util.h",
] + invoker.sources
testonly = true
}
}
srtp_test("dtls_srtp_driver") {
sources = [ "test/dtls_srtp_driver.c" ]
}
srtp_test("rdbx_driver") {
sources = [ "test/rdbx_driver.c" ]
}
srtp_test("replay_driver") {
sources = [ "test/replay_driver.c" ]
}
srtp_test("roc_driver") {
sources = [ "test/roc_driver.c" ]
}
srtp_test("srtp_driver") {
sources = [ "test/srtp_driver.c" ]
}
srtp_test("test_srtp") {
sources = [
"test/cutest.h",
"test/test_srtp.c",
]
}
srtp_test("cipher_driver") {
sources = [ "crypto/test/cipher_driver.c" ]
}
srtp_test("datatypes_driver") {
sources = [ "crypto/test/datatypes_driver.c" ]
}
srtp_test("kernel_driver") {
sources = [ "crypto/test/kernel_driver.c" ]
}
executable("rtpw") {
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":srtp_test_config" ]
output_dir = "${root_out_dir}/srtp_tests"
deps = [
":libsrtp",
]
sources = [
"include/getopt_s.h",
"test/getopt_s.c",
"test/rtp.c",
"test/rtp.h",
"test/rtpw.c",
"test/util.c",
"test/util.h",
# The original Makefile includes this file, but all the functions rtpw
# uses have been moved to util.c.
"crypto/math/datatypes.c",
]
defines = [ "HAVE_SYS_SOCKET_H" ]
testonly = true
}
copy("test_scripts") {
sources = [
"run_all_tests.sh",
"test/rtpw_test.sh",
"test/rtpw_test_gcm.sh",
]
outputs = [
"${root_out_dir}/srtp_tests/{{source_file_part}}",
]
testonly = true
}
copy("test_data") {
sources = [
"test/words.txt",
]
outputs = [
"${root_out_dir}/srtp_tests/{{source_file_part}}",
]
testonly = true
}
group("srtp_tests") {
deps = [
":cipher_driver",
":datatypes_driver",
":dtls_srtp_driver",
":kernel_driver",
":rdbx_driver",
":replay_driver",
":roc_driver",
":rtpw",
":srtp_driver",
":test_srtp",
":test_scripts",
":test_data",
]
testonly = true
}
}