forked from TokTok/jvm-toxcore-c
-
Notifications
You must be signed in to change notification settings - Fork 6
/
BUILD.bazel
242 lines (227 loc) · 7.67 KB
/
BUILD.bazel
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_binary", "scala_library", "scala_test")
load("@io_bazel_rules_scala//scala_proto:scala_proto.bzl", "scalapb_proto_library")
load("//tools/project:build_defs.bzl", "project")
project()
genrule(
name = "copy_link_jni_md_header",
srcs = select({
"//tools/config:freebsd": ["@bazel_tools//tools/jdk:jni_md_header-freebsd"],
"//tools/config:linux": ["@bazel_tools//tools/jdk:jni_md_header-linux"],
"//tools/config:osx": ["@bazel_tools//tools/jdk:jni_md_header-darwin"],
}),
outs = ["cpp/src/jni_md.h"],
cmd = "cp -f $< $@",
)
genrule(
name = "copy_link_jni_header",
srcs = ["@bazel_tools//tools/jdk:jni_header"],
outs = ["cpp/src/jni.h"],
cmd = "cp -f $< $@",
)
proto_library(
name = "jni_proto",
srcs = [
"src/main/protobuf/Av.proto",
"src/main/protobuf/Core.proto",
"src/main/protobuf/ProtoLog.proto",
],
)
cc_proto_library(
name = "jni_cc_proto",
deps = [":jni_proto"],
)
scalapb_proto_library(
name = "jni_scala_proto",
with_flat_package = True,
deps = [":jni_proto"],
)
cc_binary(
name = "libtox4j-c.so",
srcs = glob([
"cpp/src/**/*.cpp",
"cpp/src/**/*.h",
]) + [
":cpp/src/jni.h",
":cpp/src/jni_md.h",
],
copts = [
"-Wno-error=switch",
"-Wno-parentheses",
"-std=c++14",
"-DHAVE_TO_STRING",
],
includes = [
"cpp/src",
"src/main/protobuf",
],
linkopts = select({
"//tools/config:freebsd": ["-Wl,--version-script,$(location cpp/src/libtox4j-c.ld)"],
"//tools/config:linux": ["-Wl,--version-script,$(location cpp/src/libtox4j-c.ld)"],
"//tools/config:osx": [],
}),
linkshared = True,
deps = [
"cpp/src/libtox4j-c.ld",
":jni_cc_proto",
"//c-toxcore",
],
)
genrule(
name = "native_macho",
srcs = [":libtox4j-c.so"],
outs = ["libtox4j-c.dylib"],
cmd = "cp $< $@",
)
filegroup(
name = "native",
srcs = select({
"//tools/config:freebsd": [":libtox4j-c.so"],
"//tools/config:linux": [":libtox4j-c.so"],
"//tools/config:osx": [":libtox4j-c.dylib"],
}),
visibility = ["//visibility:public"],
)
scala_library(
name = "jvm-toxcore-c",
srcs = glob([
"src/main/java/**/*.java",
"src/main/java/**/*.scala",
]),
visibility = ["//visibility:public"],
deps = [
":jni_scala_proto",
"//jvm-macros",
"//jvm-toxcore-api",
"//third_party/scala:com_typesafe_scala_logging_scala_logging",
"@com_google_guava_guava//jar",
"@com_intellij_annotations//jar",
"@org_slf4j_slf4j_api//jar",
],
)
scala_library(
name = "codegen_lib",
testonly = True,
srcs = glob([
"src/test/java/gnieh/**/*.scala",
"src/test/java/im/tox/tox4j/impl/jni/codegen/**/*.scala",
"src/test/java/im/tox/tox4j/impl/jni/MethodMap.scala",
]),
deps = [
":jvm-toxcore-c",
"//jvm-macros",
"//jvm-toxcore-api",
"@com_google_guava_guava//jar",
"@org_apache_commons_commons_lang3//jar",
],
)
scala_library(
name = "test_lib",
testonly = True,
srcs = [
"src/test/java/im/tox/core/random/RandomCore.scala",
"src/test/java/im/tox/tox4j/ConnectedListener.scala",
"src/test/java/im/tox/tox4j/DhtNode.scala",
"src/test/java/im/tox/tox4j/DhtNodeSelector.scala",
"src/test/java/im/tox/tox4j/SocksServer.scala",
"src/test/java/im/tox/tox4j/TestConstants.scala",
"src/test/java/im/tox/tox4j/ToxCoreTestBase.scala",
"src/test/java/im/tox/tox4j/av/callbacks/audio/AudioGenerator.scala",
"src/test/java/im/tox/tox4j/av/callbacks/audio/AudioGenerators.scala",
"src/test/java/im/tox/tox4j/av/callbacks/video/ArithmeticVideoGenerator.scala",
"src/test/java/im/tox/tox4j/av/callbacks/video/RgbVideoGenerator.scala",
"src/test/java/im/tox/tox4j/av/callbacks/video/TextImageGenerator.scala",
"src/test/java/im/tox/tox4j/av/callbacks/video/VideoConversions.scala",
"src/test/java/im/tox/tox4j/av/callbacks/video/VideoGenerator.scala",
"src/test/java/im/tox/tox4j/av/callbacks/video/VideoGenerators.scala",
"src/test/java/im/tox/tox4j/core/SmallNat.scala",
"src/test/java/im/tox/tox4j/core/ToxCoreFactory.scala",
"src/test/java/im/tox/tox4j/core/ToxList.scala",
"src/test/java/im/tox/tox4j/core/callbacks/FilePauseResumeTestBase.scala",
"src/test/java/im/tox/tox4j/core/callbacks/InvokeTest.scala",
"src/test/java/im/tox/tox4j/crypto/ToxCryptoTest.scala",
"src/test/java/im/tox/tox4j/impl/jni/NamingConventionsTest.scala",
"src/test/java/im/tox/tox4j/impl/jni/ToxAvImplFactory.scala",
"src/test/java/im/tox/tox4j/impl/jni/ToxCoreImplFactory.scala",
"src/test/java/im/tox/tox4j/testing/GetDisjunction.scala",
"src/test/java/im/tox/tox4j/testing/ToxExceptionChecks.scala",
"src/test/java/im/tox/tox4j/testing/ToxTestMixin.scala",
"src/test/java/im/tox/tox4j/testing/autotest/AliceBobTest.scala",
"src/test/java/im/tox/tox4j/testing/autotest/AliceBobTestBase.scala",
"src/test/java/im/tox/tox4j/testing/autotest/AutoTest.scala",
"src/test/java/im/tox/tox4j/testing/autotest/AutoTestSuite.scala",
"src/test/java/im/tox/tox4j/testing/autotest/ChatClient.scala",
],
deps = [
":codegen_lib",
":jvm-toxcore-c",
"//jvm-macros",
"//jvm-toxcore-api",
"//third_party/scala:com_chuusai_shapeless",
"//third_party/scala:com_typesafe_scala_logging_scala_logging",
"@com_intellij_annotations//jar",
"@io_bazel_rules_scala//scala/scalatest",
"@org_scalacheck_scalacheck//jar",
"@org_slf4j_slf4j_api//jar",
],
)
[scala_test(
name = src[src.rindex("/") + 1:-6],
size = "small",
srcs = [src],
data = [":native"],
jvm_flags = ["-Djava.library.path=jvm-toxcore-c"],
resources = glob([
"src/test/resources/**/*",
]),
deps = [
":codegen_lib",
":jni_scala_proto",
":jvm-toxcore-c",
":test_lib",
"//jvm-macros",
"//jvm-toxcore-api",
"//third_party/scala:com_chuusai_shapeless",
"//third_party/scala:com_typesafe_scala_logging_scala_logging",
"@com_google_guava_guava//jar",
"@com_intellij_annotations//jar",
"@log4j_log4j//jar",
"@org_apache_commons_commons_lang3//jar",
"@org_scalacheck_scalacheck//jar",
"@org_slf4j_slf4j_api//jar",
"@org_slf4j_slf4j_log4j12//jar",
],
) for src in glob(["src/test/java/**/*Test.scala"])]
[java_test(
name = src[src.rindex("/") + 1:-5],
size = "small",
srcs = [src],
data = [":native"],
jvm_flags = ["-Djava.library.path=`dirname $(location :native)`"],
resources = glob([
"src/test/resources/**/*",
]),
deps = [
":jvm-toxcore-c",
"//jvm-toxcore-api",
"@io_bazel_rules_scala//scala/scalatest",
"@junit_junit//jar",
"@log4j_log4j//jar",
"@org_slf4j_slf4j_api//jar",
"@org_slf4j_slf4j_log4j12//jar",
],
) for src in glob(["src/test/java/**/*.java"])]
[scala_binary(
name = src[src.rindex("/") + 1:-6],
testonly = True,
srcs = [src],
main_class = "im.tox.tox4j.impl.jni.codegen." + src[src.rindex("/") + 1:-6],
resources = glob([
"src/test/resources/**/*",
]),
deps = [
":codegen_lib",
":jvm-toxcore-c",
"//jvm-toxcore-api",
"@com_google_guava_guava//jar",
],
) for src in glob(["src/test/java/im/tox/tox4j/impl/jni/codegen/Jni*.scala"])]