summaryrefslogtreecommitdiff
path: root/Android.bp
blob: 99a231e5bae67b15004715d2de903c2b698729f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// Copyright (C) 2018 The Android Open Source Project
//
// 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.

package {
    default_applicable_licenses: ["external_catch2_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_catch2_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-BSL-1.0",
        "SPDX-license-identifier-GPL",
        "SPDX-license-identifier-MIT",
    ],
    license_text: [
        "LICENSE.txt",
    ],
}

cc_defaults {
    name: "libcatch2-defaults",
    host_supported: true,
    local_include_dirs: ["include"],  // cc_test ignores export_include_dirs
    export_include_dirs: ["include"],
    srcs: ["include/**/*.cpp"],
    exclude_srcs: ["include/catch_with_main.cpp"],
}

// !!! IMPORTANT: Use 'whole_static_libs' or the linker will dead-code-eliminate
// parts of the important code (the console and junit reporters).

// Android users: libcatch2-main is what you want 99% of the time.
// Using the pre-defined main speeds up compilation significantly.
// If for some reason you want to provide your own `main`, use "libcatch2"
// See also docs/configuration.md
cc_library_static {
    name: "libcatch2-main",
    defaults: [
        "libcatch2-defaults",
    ],
    srcs: [
        "include/catch_with_main.cpp",
    ],
}

// libcatch2 without the pre-defined main.
// This is only useful if your program will define its own main.
cc_library_static {
    name: "libcatch2",
    defaults: [
        "libcatch2-defaults",
    ],
    cflags: ["-DCATCH_CONFIG_DISABLE_EXCEPTIONS"],
}

// This rule can be used by other external/ projects that depend on catch2
// without turning off exceptions.
cc_library_static {
    name: "libcatch2-upstream",
    defaults: [
        "libcatch2-defaults",
    ],
    cflags: ["-fexceptions"],
}

// Configurations meant for validating upstream. Not intended to be used by anything else.

cc_defaults {
    name: "libcatch2-defaults-tests",
    host_supported: true,
    srcs: [
        "projects/SelfTest/**/*.cpp",
    ],
    // This directory just re-includes existing tests 100x over.
    // This is extremely slow to build, we don't lose coverage by excluding it.
    exclude_srcs: [
        "projects/SelfTest/CompileTimePerfTests/**/*.cpp",
    ],
    shared_libs: ["liblog"],
}

// Upstream config: Exceptions are enabled.
// This should be validated first after an upstream merge.
cc_test {
    name: "libcatch2-tests-upstream",
    defaults: [
        "libcatch2-defaults-tests",
    ],

    gtest: false,
    cflags: ["-fexceptions"],

    whole_static_libs: [
        "libcatch2-upstream",
    ],
}

// Android config: Exceptions are disabled.
// This should be validated second after an upstream merge.
cc_test {
    name: "libcatch2-tests",
    defaults: [
        "libcatch2-defaults-tests",
    ],
    cflags: [
        "-DCATCH_CONFIG_DISABLE_EXCEPTIONS",
        "-Wno-unused-function",
    ],
    gtest: false,
    whole_static_libs: [
        "libcatch2",
    ],
}