about summary refs log tree commit diff
path: root/third_party/cpp/googleapis/ci/test-install
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/cpp/googleapis/ci/test-install')
-rw-r--r--third_party/cpp/googleapis/ci/test-install/bigquery/CMakeLists.txt28
-rw-r--r--third_party/cpp/googleapis/ci/test-install/bigquery/Makefile36
-rw-r--r--third_party/cpp/googleapis/ci/test-install/bigquery/main.cc22
-rw-r--r--third_party/cpp/googleapis/ci/test-install/bigtable/CMakeLists.txt28
-rw-r--r--third_party/cpp/googleapis/ci/test-install/bigtable/Makefile36
-rw-r--r--third_party/cpp/googleapis/ci/test-install/bigtable/main.cc22
-rwxr-xr-xthird_party/cpp/googleapis/ci/test-install/compile-test-projects.sh47
-rw-r--r--third_party/cpp/googleapis/ci/test-install/pubsub/CMakeLists.txt28
-rw-r--r--third_party/cpp/googleapis/ci/test-install/pubsub/Makefile36
-rw-r--r--third_party/cpp/googleapis/ci/test-install/pubsub/main.cc22
-rw-r--r--third_party/cpp/googleapis/ci/test-install/spanner/CMakeLists.txt28
-rw-r--r--third_party/cpp/googleapis/ci/test-install/spanner/Makefile36
-rw-r--r--third_party/cpp/googleapis/ci/test-install/spanner/main.cc22
13 files changed, 391 insertions, 0 deletions
diff --git a/third_party/cpp/googleapis/ci/test-install/bigquery/CMakeLists.txt b/third_party/cpp/googleapis/ci/test-install/bigquery/CMakeLists.txt
new file mode 100644
index 0000000000..3086ef4617
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/bigquery/CMakeLists.txt
@@ -0,0 +1,28 @@
+# ~~~
+# Copyright 2019 Google LLC
+#
+# 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.
+# ~~~
+
+cmake_minimum_required(VERSION 3.5)
+
+project(utilize-googleapis CXX C)
+
+# Configure the compiler options, we will be using C++11 features.
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(googleapis REQUIRED)
+
+add_executable(utilize-googleapis main.cc)
+target_link_libraries(utilize-googleapis googleapis-c++::cloud_bigquery_protos)
diff --git a/third_party/cpp/googleapis/ci/test-install/bigquery/Makefile b/third_party/cpp/googleapis/ci/test-install/bigquery/Makefile
new file mode 100644
index 0000000000..bca2a7dc57
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/bigquery/Makefile
@@ -0,0 +1,36 @@
+# Copyright 2019 Google LLC
+#
+# 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.
+
+# A simple Makefile to test the `install` target.
+#
+# This is not intended to be a demonstration of how to write good Makefiles,
+# nor is it a general solution on how to build Makefiles for google-cloud-cpp.
+# It is simply a minimal file to test the installed pkg-config support files.
+
+# The CXX, CXXFLAGS and CXXLD variables are hard-coded. These values work for
+# our tests, but applications would typically make them configurable parameters.
+CXX=g++ -std=c++11
+CXXLD=$(CXX)
+
+all: main
+
+# Configuration variables to compile and link against the library.
+PROTOS     := googleapis_cpp_cloud_bigquery_protos
+CXXFLAGS   := $(shell pkg-config $(PROTOS) --cflags)
+CXXLDFLAGS := $(shell pkg-config $(PROTOS) --libs-only-L)
+LIBS       := $(shell pkg-config $(PROTOS) --libs-only-l)
+
+# A target using the Google Cloud Storage C++ client library.
+main: main.cc
+	$(CXXLD) $(CXXFLAGS) $(CXXFLAGS) $(CXXLDFLAGS) -o $@ $^ $(LIBS)
diff --git a/third_party/cpp/googleapis/ci/test-install/bigquery/main.cc b/third_party/cpp/googleapis/ci/test-install/bigquery/main.cc
new file mode 100644
index 0000000000..bd00013edd
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/bigquery/main.cc
@@ -0,0 +1,22 @@
+// Copyright 2019 Google LLC
+//
+// 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.
+
+#include <google/cloud/bigquery/storage/v1beta1/storage.grpc.pb.h>
+#include <grpcpp/grpcpp.h>
+
+int main() {
+  auto creds = grpc::InsecureChannelCredentials();
+  auto channel = grpc::CreateChannel("localhost:12345", creds);
+  auto stub = google::cloud::bigquery::storage::v1beta1::BigQueryStorage::NewStub(channel);
+}
diff --git a/third_party/cpp/googleapis/ci/test-install/bigtable/CMakeLists.txt b/third_party/cpp/googleapis/ci/test-install/bigtable/CMakeLists.txt
new file mode 100644
index 0000000000..7aed05ff1d
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/bigtable/CMakeLists.txt
@@ -0,0 +1,28 @@
+# ~~~
+# Copyright 2019 Google LLC
+#
+# 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.
+# ~~~
+
+cmake_minimum_required(VERSION 3.5)
+
+project(utilize-googleapis CXX C)
+
+# Configure the compiler options, we will be using C++11 features.
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(googleapis REQUIRED)
+
+add_executable(utilize-googleapis main.cc)
+target_link_libraries(utilize-googleapis googleapis-c++::bigtable_protos)
diff --git a/third_party/cpp/googleapis/ci/test-install/bigtable/Makefile b/third_party/cpp/googleapis/ci/test-install/bigtable/Makefile
new file mode 100644
index 0000000000..5643b234d7
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/bigtable/Makefile
@@ -0,0 +1,36 @@
+# Copyright 2019 Google LLC
+#
+# 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.
+
+# A simple Makefile to test the `install` target.
+#
+# This is not intended to be a demonstration of how to write good Makefiles,
+# nor is it a general solution on how to build Makefiles for google-cloud-cpp.
+# It is simply a minimal file to test the installed pkg-config support files.
+
+# The CXX, CXXFLAGS and CXXLD variables are hard-coded. These values work for
+# our tests, but applications would typically make them configurable parameters.
+CXX=g++ -std=c++11
+CXXLD=$(CXX)
+
+all: main
+
+# Configuration variables to compile and link against the library.
+PROTOS     := googleapis_cpp_bigtable_protos
+CXXFLAGS   := $(shell pkg-config $(PROTOS) --cflags)
+CXXLDFLAGS := $(shell pkg-config $(PROTOS) --libs-only-L)
+LIBS       := $(shell pkg-config $(PROTOS) --libs-only-l)
+
+# A target using the Google Cloud Storage C++ client library.
+main: main.cc
+	$(CXXLD) $(CXXFLAGS) $(CXXFLAGS) $(CXXLDFLAGS) -o $@ $^ $(LIBS)
diff --git a/third_party/cpp/googleapis/ci/test-install/bigtable/main.cc b/third_party/cpp/googleapis/ci/test-install/bigtable/main.cc
new file mode 100644
index 0000000000..08fce3c7bc
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/bigtable/main.cc
@@ -0,0 +1,22 @@
+// Copyright 2019 Google LLC
+//
+// 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.
+
+#include <google/bigtable/v2/bigtable.grpc.pb.h>
+#include <grpcpp/grpcpp.h>
+
+int main() {
+  auto creds = grpc::InsecureChannelCredentials();
+  auto channel = grpc::CreateChannel("localhost:12345", creds);
+  auto stub = google::bigtable::v2::Bigtable::NewStub(channel);
+}
diff --git a/third_party/cpp/googleapis/ci/test-install/compile-test-projects.sh b/third_party/cpp/googleapis/ci/test-install/compile-test-projects.sh
new file mode 100755
index 0000000000..25eea82ffc
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/compile-test-projects.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+# Copyright 2019 Google LLC
+#
+# 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.
+
+# Compile projects that utilize the cpp-cmakefiles header files and libraries
+# installed to the system. This script expects that the entire source tree is
+# copied to /home/build/cpp-cmakefiles. Don't try to run this locally.
+
+set -eu
+
+# Verify the installed CMake config and pkgconfig files are actually usable.
+
+for subdir in bigquery bigtable pubsub spanner; do
+  # Compile a test program using CMake.
+  echo "================================================================"
+  echo "Testing ${subdir} $(date) with CMake"
+  echo "================================================================"
+  src_dir="/home/build/cpp-cmakefiles/ci/test-install/${subdir}"
+  cmake_dir="/home/build/test-cmake-${subdir}"
+  make_dir="/home/build/test-make-${subdir}"
+  cmake -H"${src_dir}" -B"${cmake_dir}"
+  cmake --build "${cmake_dir}" -- -j "$(nproc)"
+  # Verify the generated program is runnable
+  "${cmake_dir}/utilize-googleapis"
+  echo "================================================================"
+  echo "Testing ${subdir} $(date) with Make"
+  echo "================================================================"
+  cp -R "${src_dir}" "${make_dir}"
+  cd "${make_dir}"
+  # With Make we may need to set PKG_CONFIG_PATH because the code is installed
+  # in /usr/local and that is not a default search location in some distros.
+  env PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig \
+        make
+  # Verify the generated program is runnable
+  "${make_dir}/main"
+done
diff --git a/third_party/cpp/googleapis/ci/test-install/pubsub/CMakeLists.txt b/third_party/cpp/googleapis/ci/test-install/pubsub/CMakeLists.txt
new file mode 100644
index 0000000000..cc8d59e187
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/pubsub/CMakeLists.txt
@@ -0,0 +1,28 @@
+# ~~~
+# Copyright 2019 Google LLC
+#
+# 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.
+# ~~~
+
+cmake_minimum_required(VERSION 3.5)
+
+project(utilize-googleapis CXX C)
+
+# Configure the compiler options, we will be using C++11 features.
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(googleapis REQUIRED)
+
+add_executable(utilize-googleapis main.cc)
+target_link_libraries(utilize-googleapis googleapis-c++::pubsub_protos)
diff --git a/third_party/cpp/googleapis/ci/test-install/pubsub/Makefile b/third_party/cpp/googleapis/ci/test-install/pubsub/Makefile
new file mode 100644
index 0000000000..a5cbdcf789
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/pubsub/Makefile
@@ -0,0 +1,36 @@
+# Copyright 2019 Google LLC
+#
+# 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.
+
+# A simple Makefile to test the `install` target.
+#
+# This is not intended to be a demonstration of how to write good Makefiles,
+# nor is it a general solution on how to build Makefiles for google-cloud-cpp.
+# It is simply a minimal file to test the installed pkg-config support files.
+
+# The CXX, CXXFLAGS and CXXLD variables are hard-coded. These values work for
+# our tests, but applications would typically make them configurable parameters.
+CXX=g++ -std=c++11
+CXXLD=$(CXX)
+
+all: main
+
+# Configuration variables to compile and link against the library.
+PROTOS     := googleapis_cpp_pubsub_protos
+CXXFLAGS   := $(shell pkg-config $(PROTOS) --cflags)
+CXXLDFLAGS := $(shell pkg-config $(PROTOS) --libs-only-L)
+LIBS       := $(shell pkg-config $(PROTOS) --libs-only-l)
+
+# A target using the Google Cloud Storage C++ client library.
+main: main.cc
+	$(CXXLD) $(CXXFLAGS) $(CXXFLAGS) $(CXXLDFLAGS) -o $@ $^ $(LIBS)
diff --git a/third_party/cpp/googleapis/ci/test-install/pubsub/main.cc b/third_party/cpp/googleapis/ci/test-install/pubsub/main.cc
new file mode 100644
index 0000000000..05549169da
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/pubsub/main.cc
@@ -0,0 +1,22 @@
+// Copyright 2019 Google LLC
+//
+// 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.
+
+#include <google/pubsub/v1/pubsub.grpc.pb.h>
+#include <grpcpp/grpcpp.h>
+
+int main() {
+  auto creds = grpc::InsecureChannelCredentials();
+  auto channel = grpc::CreateChannel("localhost:12345", creds);
+  auto stub = google::pubsub::v1::Publisher::NewStub(channel);
+}
diff --git a/third_party/cpp/googleapis/ci/test-install/spanner/CMakeLists.txt b/third_party/cpp/googleapis/ci/test-install/spanner/CMakeLists.txt
new file mode 100644
index 0000000000..2a4577ace9
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/spanner/CMakeLists.txt
@@ -0,0 +1,28 @@
+# ~~~
+# Copyright 2019 Google LLC
+#
+# 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.
+# ~~~
+
+cmake_minimum_required(VERSION 3.5)
+
+project(utilize-googleapis CXX C)
+
+# Configure the compiler options, we will be using C++11 features.
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(googleapis REQUIRED)
+
+add_executable(utilize-googleapis main.cc)
+target_link_libraries(utilize-googleapis googleapis-c++::spanner_protos)
diff --git a/third_party/cpp/googleapis/ci/test-install/spanner/Makefile b/third_party/cpp/googleapis/ci/test-install/spanner/Makefile
new file mode 100644
index 0000000000..74bf292ce6
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/spanner/Makefile
@@ -0,0 +1,36 @@
+# Copyright 2019 Google LLC
+#
+# 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.
+
+# A simple Makefile to test the `install` target.
+#
+# This is not intended to be a demonstration of how to write good Makefiles,
+# nor is it a general solution on how to build Makefiles for google-cloud-cpp.
+# It is simply a minimal file to test the installed pkg-config support files.
+
+# The CXX, CXXFLAGS and CXXLD variables are hard-coded. These values work for
+# our tests, but applications would typically make them configurable parameters.
+CXX=g++ -std=c++11
+CXXLD=$(CXX)
+
+all: main
+
+# Configuration variables to compile and link against the library.
+PROTOS     := googleapis_cpp_spanner_protos
+CXXFLAGS   := $(shell pkg-config $(PROTOS) --cflags)
+CXXLDFLAGS := $(shell pkg-config $(PROTOS) --libs-only-L)
+LIBS       := $(shell pkg-config $(PROTOS) --libs-only-l)
+
+# A target using the Google Cloud Storage C++ client library.
+main: main.cc
+	$(CXXLD) $(CXXFLAGS) $(CXXFLAGS) $(CXXLDFLAGS) -o $@ $^ $(LIBS)
diff --git a/third_party/cpp/googleapis/ci/test-install/spanner/main.cc b/third_party/cpp/googleapis/ci/test-install/spanner/main.cc
new file mode 100644
index 0000000000..f1866655ac
--- /dev/null
+++ b/third_party/cpp/googleapis/ci/test-install/spanner/main.cc
@@ -0,0 +1,22 @@
+// Copyright 2019 Google LLC
+//
+// 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.
+
+#include <google/spanner/v1/spanner.grpc.pb.h>
+#include <grpcpp/grpcpp.h>
+
+int main() {
+  auto creds = grpc::InsecureChannelCredentials();
+  auto channel = grpc::CreateChannel("localhost:12345", creds);
+  auto stub = google::spanner::v1::Spanner::NewStub(channel);
+}