Merge pull request #25 from yaoyx108/gradle
Fix build issues with gradle.
diff --git a/.gitignore b/.gitignore
index f53951a..18c56f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
build/**
.gradle/**
.idea/**
+bazel-*
diff --git a/BUILD b/BUILD
deleted file mode 100644
index 219c7fe..0000000
--- a/BUILD
+++ /dev/null
@@ -1,6 +0,0 @@
-package(default_visibility = ["//visibility:public"])
-
-alias(
- name = "ukey2",
- actual = "//src/main/cpp",
-)
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 0000000..ff5b8ed
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,33 @@
+load("@rules_cc//cc:defs.bzl", "cc_proto_library")
+
+package(default_visibility = ["//visibility:public"])
+
+alias(
+ name = "ukey2",
+ actual = "//src/main/cpp",
+)
+
+# Define the proto rule at the root level, instead of under src/main/proto,
+# to resolve the import root dir difference between bazel and gradle.
+# Specifically, proto-gradle-plugin considers src/main/proto as the root, so
+# the proto `import` path should be relative. Whereas bazel considers the top
+# level as the root, so the import should be absolute (or relative to the top).
+#
+# The solution is to update the basel side by defining the proto rule at the
+# top level, then strip_import_prefix such that the protos are relative.
+proto_library(
+ name = "proto",
+ srcs = [
+ "src/main/proto/device_to_device_messages.proto",
+ "src/main/proto/securegcm.proto",
+ "src/main/proto/securemessage.proto",
+ "src/main/proto/ukey.proto",
+ ],
+ strip_import_prefix = 'src/main/proto/'
+)
+
+cc_proto_library(
+ name = "cc_proto",
+ deps = [":proto"],
+ visibility = ["//src:__subpackages__"],
+)
diff --git a/README.md b/README.md
index 3bffe4c..aaca7c2 100644
--- a/README.md
+++ b/README.md
@@ -341,16 +341,11 @@
## Build and install the static libraries files in specified INSTALL directory (e.g. /tmp/ukey2_install).
```
-cd <source root>
-mkdir build; cd build
-cmake -Dukey2_USE_LOCAL_PROTOBUF=ON -Dukey2_USE_LOCAL_ABSL=ON -DCMAKE_INSTALL_PREFIX=/tmp/ukey2_install ..
-make
-make install
+bazel build //src/main/cpp:ukey2_shell
```
## Running C++ tests
```
-cd <source root>/build
-ctest -V
+bazel test //src/main/cpp:cpp_tests
```
# Buillding Java library and running Java Tests
diff --git a/build.gradle b/build.gradle
index b9fca13..cbb2d2e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,7 +24,7 @@
mavenCentral()
}
dependencies {
- classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.0'
+ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.4'
}
}
@@ -33,7 +33,7 @@
testImplementation group: 'com.google.guava', name: 'guava-testlib', version: '29.0-jre'
testImplementation 'junit:junit:4.13'
implementation "com.google.code.findbugs:jsr305:3.0.0"
- implementation "com.google.protobuf:protobuf-java:3.19.3"
+ implementation "com.google.protobuf:protobuf-java:3.19.6"
implementation "com.google.guava:guava:19.0"
}
diff --git a/src/main/cpp/BUILD b/src/main/cpp/BUILD.bazel
similarity index 96%
rename from src/main/cpp/BUILD
rename to src/main/cpp/BUILD.bazel
index f036dcb..890bcd0 100644
--- a/src/main/cpp/BUILD
+++ b/src/main/cpp/BUILD.bazel
@@ -11,7 +11,7 @@
"include",
],
deps = [
- "//src/main/proto:cc_proto",
+ "//:cc_proto",
"//src/securemessage:securemessage_common",
"//src/securemessage:securemessage_cpp_protobuf",
"//src/securemessage:securemessage_openssl",
diff --git a/src/main/cpp/include/securegcm/d2d_crypto_ops.h b/src/main/cpp/include/securegcm/d2d_crypto_ops.h
index 5cf925b..ea9860a 100644
--- a/src/main/cpp/include/securegcm/d2d_crypto_ops.h
+++ b/src/main/cpp/include/securegcm/d2d_crypto_ops.h
@@ -18,7 +18,7 @@
#include <memory>
#include <string>
-#include "src/main/proto/securegcm.pb.h"
+#include "securegcm.pb.h"
#include "src/securemessage/include/securemessage/crypto_ops.h"
namespace securegcm {
diff --git a/src/main/cpp/include/securegcm/ukey2_handshake.h b/src/main/cpp/include/securegcm/ukey2_handshake.h
index 79f0dfa..604dc48 100644
--- a/src/main/cpp/include/securegcm/ukey2_handshake.h
+++ b/src/main/cpp/include/securegcm/ukey2_handshake.h
@@ -18,7 +18,7 @@
#include <map>
#include <memory>
-#include "src/main/proto/ukey.pb.h"
+#include "ukey.pb.h"
#include "src/main/cpp/include/securegcm/d2d_connection_context_v1.h"
#include "src/securemessage/include/securemessage/crypto_ops.h"
diff --git a/src/main/cpp/src/securegcm/d2d_connection_context_v1.cc b/src/main/cpp/src/securegcm/d2d_connection_context_v1.cc
index 55af299..f269372 100644
--- a/src/main/cpp/src/securegcm/d2d_connection_context_v1.cc
+++ b/src/main/cpp/src/securegcm/d2d_connection_context_v1.cc
@@ -17,8 +17,8 @@
#include <limits>
#include <sstream>
-#include "src/main/proto/device_to_device_messages.pb.h"
-#include "src/main/proto/securegcm.pb.h"
+#include "device_to_device_messages.pb.h"
+#include "securegcm.pb.h"
#include "src/main/cpp/include/securegcm/d2d_crypto_ops.h"
#include "src/main/cpp/include/securegcm/java_util.h"
#include "src/securemessage/include/securemessage/secure_message_builder.h"
diff --git a/src/main/javatest/com/google/security/cryptauth/lib/securegcm/Ukey2ShellCppWrapper.java b/src/main/javatest/com/google/security/cryptauth/lib/securegcm/Ukey2ShellCppWrapper.java
index 2b73653..0aef56d 100644
--- a/src/main/javatest/com/google/security/cryptauth/lib/securegcm/Ukey2ShellCppWrapper.java
+++ b/src/main/javatest/com/google/security/cryptauth/lib/securegcm/Ukey2ShellCppWrapper.java
@@ -18,6 +18,7 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.File;
import java.io.OutputStream;
import java.lang.ProcessBuilder.Redirect;
import java.nio.ByteBuffer;
@@ -50,6 +51,7 @@
public class Ukey2ShellCppWrapper {
// The path the the ukey2_shell binary.
private static final String BINARY_PATH = "build/src/main/cpp/src/securegcm/ukey2_shell";
+ private static final String BINARY_PATH_BAZEL = "bazel-bin/src/main/cpp/ukey2_shell";
// The time to wait before timing out a read or write operation to the shell.
@SuppressWarnings("GoodTime") // TODO(b/147378611): store a java.time.Duration instead
@@ -90,8 +92,18 @@
String modeArg = "--mode=" + getModeString();
String verificationStringLengthArg = "--verification_string_length=" + verificationStringLength;
+
+ String binaryPath;
+ if (new File(BINARY_PATH).exists()){
+ binaryPath = BINARY_PATH;
+ } else if (new File(BINARY_PATH_BAZEL).exists()) {
+ binaryPath = BINARY_PATH_BAZEL;
+ } else {
+ throw new IllegalStateException("Unable to find ukey2_shell binary in " + BINARY_PATH);
+ }
+
final ProcessBuilder builder =
- new ProcessBuilder(BINARY_PATH, modeArg, verificationStringLengthArg);
+ new ProcessBuilder(binaryPath, modeArg, verificationStringLengthArg);
// Merge the shell's stderr with the stderr of the current process.
builder.redirectError(Redirect.INHERIT);
diff --git a/src/main/proto/BUILD b/src/main/proto/BUILD
deleted file mode 100644
index 36e4ebe..0000000
--- a/src/main/proto/BUILD
+++ /dev/null
@@ -1,19 +0,0 @@
-load("@rules_cc//cc:defs.bzl", "cc_proto_library")
-
-licenses(["notice"])
-
-proto_library(
- name = "proto",
- srcs = [
- "device_to_device_messages.proto",
- "securegcm.proto",
- "securemessage.proto",
- "ukey.proto",
- ],
-)
-
-cc_proto_library(
- name = "cc_proto",
- deps = [":proto"],
- visibility = ["//src:__subpackages__"],
-)
diff --git a/src/main/proto/device_to_device_messages.proto b/src/main/proto/device_to_device_messages.proto
index a05bdfa..5600373 100644
--- a/src/main/proto/device_to_device_messages.proto
+++ b/src/main/proto/device_to_device_messages.proto
@@ -16,7 +16,7 @@
package securegcm;
-import "src/main/proto/securemessage.proto";
+import "securemessage.proto";
option optimize_for = LITE_RUNTIME;
option java_package = "com.google.security.cryptauth.lib.securegcm";
diff --git a/src/securemessage/BUILD b/src/securemessage/BUILD.bazel
similarity index 97%
rename from src/securemessage/BUILD
rename to src/securemessage/BUILD.bazel
index 6f9b9c8..8a79060 100644
--- a/src/securemessage/BUILD
+++ b/src/securemessage/BUILD.bazel
@@ -53,7 +53,7 @@
hdrs = SECUREMESSAGE_CPP_PROTOBUF_HDRS,
deps = [
":securemessage_common",
- "//src/main/proto:cc_proto",
+ "//:cc_proto",
],
visibility = ["//visibility:public"],
)
diff --git a/src/securemessage/include/securemessage/public_key_proto_util.h b/src/securemessage/include/securemessage/public_key_proto_util.h
index de58a29..6c92c01 100644
--- a/src/securemessage/include/securemessage/public_key_proto_util.h
+++ b/src/securemessage/include/securemessage/public_key_proto_util.h
@@ -20,7 +20,7 @@
#include <memory>
#include "src/securemessage/include/securemessage/common.h"
#include "src/securemessage/include/securemessage/crypto_ops.h"
-#include "src/main/proto/securemessage.pb.h"
+#include "securemessage.pb.h"
namespace securemessage {
diff --git a/src/securemessage/include/securemessage/secure_message_builder.h b/src/securemessage/include/securemessage/secure_message_builder.h
index 47dcb94..1d38535 100644
--- a/src/securemessage/include/securemessage/secure_message_builder.h
+++ b/src/securemessage/include/securemessage/secure_message_builder.h
@@ -19,7 +19,7 @@
#include <memory>
-#include "src/main/proto/securemessage.pb.h"
+#include "securemessage.pb.h"
#include "src/securemessage/include/securemessage/byte_buffer.h"
#include "src/securemessage/include/securemessage/common.h"
diff --git a/src/securemessage/include/securemessage/secure_message_parser.h b/src/securemessage/include/securemessage/secure_message_parser.h
index 4c936a8..46cb8b1 100644
--- a/src/securemessage/include/securemessage/secure_message_parser.h
+++ b/src/securemessage/include/securemessage/secure_message_parser.h
@@ -19,7 +19,7 @@
#include <memory>
-#include "src/main/proto/securemessage.pb.h"
+#include "securemessage.pb.h"
#include "src/securemessage/include/securemessage/common.h"
#include "src/securemessage/include/securemessage/crypto_ops.h"
diff --git a/src/securemessage/src/securemessage/secure_message_wrapper.cc b/src/securemessage/src/securemessage/secure_message_wrapper.cc
index 4cb95a2..6ea8472 100644
--- a/src/securemessage/src/securemessage/secure_message_wrapper.cc
+++ b/src/securemessage/src/securemessage/secure_message_wrapper.cc
@@ -16,7 +16,7 @@
#include "src/securemessage/include/securemessage/secure_message_wrapper.h"
-#include "src/main/proto/securemessage.pb.h"
+#include "securemessage.pb.h"
#include "src/securemessage/include/securemessage/util.h"
namespace securemessage {