| 
					
				 | 
			
			
				@@ -0,0 +1,116 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Copyright 2018 gRPC authors.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 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 "superbuild" file for C++ helloworld example.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# This build file demonstrates how to build the helloworld project
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# and all its dependencies in a single cmake build (hence "superbuild")
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# that is easy to build and maintain.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# cmake's ExternalProject_Add() is used to import all the sub-projects,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# including the "helloworld" project itself.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# See https://blog.kitware.com/cmake-superbuilds-git-submodules/
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cmake_minimum_required(VERSION 2.8)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Project
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+project(HelloWorld-SuperBuild C CXX)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+include(ExternalProject)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Builds c-ares project from the git submodule.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Note: For all external projects, instead of using checked-out code, one could
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# specify GIT_REPOSITORY and GIT_TAG to have cmake download the dependency directly,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# without needing to add a submodule to your project.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ExternalProject_Add(c-ares
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  PREFIX c-ares
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../third_party/cares/cares"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CMAKE_CACHE_ARGS
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DCARES_SHARED:BOOL=OFF
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DCARES_STATIC:BOOL=ON
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DCARES_STATIC_PIC:BOOL=ON
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/c-ares
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Builds protobuf project from the git submodule.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ExternalProject_Add(protobuf
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  PREFIX protobuf
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../third_party/protobuf/cmake"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CMAKE_CACHE_ARGS
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -Dprotobuf_BUILD_TESTS:BOOL=OFF
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -Dprotobuf_WITH_ZLIB:BOOL=OFF
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -Dprotobuf_MSVC_STATIC_RUNTIME:BOOL=OFF
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/protobuf
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Builds zlib project from the git submodule.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ExternalProject_Add(zlib
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  PREFIX zlib
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../third_party/zlib"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CMAKE_CACHE_ARGS
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/zlib
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# the location where protobuf-config.cmake will be installed varies by platform
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if (WIN32)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  set(_FINDPACKAGE_PROTOBUF_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/protobuf/cmake")
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+else()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  set(_FINDPACKAGE_PROTOBUF_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/protobuf/lib/cmake/protobuf")
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endif()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# if OPENSSL_ROOT_DIR is set, propagate that hint path to the external projects with OpenSSL dependency.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+set(_CMAKE_ARGS_OPENSSL_ROOT_DIR "")
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if (OPENSSL_ROOT_DIR)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  set(_CMAKE_ARGS_OPENSSL_ROOT_DIR "-DOPENSSL_ROOT_DIR:PATH=${OPENSSL_ROOT_DIR}")
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endif()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Builds gRPC based on locally checked-out sources and set arguments so that all the dependencies
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# are correctly located.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ExternalProject_Add(grpc
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  PREFIX grpc
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../.."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CMAKE_CACHE_ARGS
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_INSTALL:BOOL=ON
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_BUILD_TESTS:BOOL=OFF
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_PROTOBUF_PROVIDER:STRING=package
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_PROTOBUF_PACKAGE_TYPE:STRING=CONFIG
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DProtobuf_DIR:PATH=${_FINDPACKAGE_PROTOBUF_CONFIG_DIR}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_ZLIB_PROVIDER:STRING=package
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DZLIB_ROOT:STRING=${CMAKE_CURRENT_BINARY_DIR}/zlib
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_CARES_PROVIDER:STRING=package
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -Dc-ares_DIR:PATH=${CMAKE_CURRENT_BINARY_DIR}/c-ares/lib/cmake/c-ares
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_SSL_PROVIDER:STRING=package
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ${_CMAKE_ARGS_OPENSSL_ROOT_DIR}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/grpc
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DEPENDS c-ares protobuf zlib
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Build the helloworld projects itself using a CMakeLists.txt that assumes all the dependencies
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# have already been installed.
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Even though helloworld is not really an "external project" from perspective of this build,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# we are still importing it using ExternalProject_Add because that allows us to use find_package()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# to locate all the dependencies (if we were building helloworld directly in this build we,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# we would have needed to manually import the libraries as opposed to reusing targets exported by
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# gRPC and protobuf).
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ExternalProject_Add(helloworld
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  PREFIX helloworld
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/.."
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/helloworld"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  INSTALL_COMMAND ""
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CMAKE_CACHE_ARGS
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DProtobuf_DIR:PATH=${_FINDPACKAGE_PROTOBUF_CONFIG_DIR}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -Dc-ares_DIR:PATH=${CMAKE_CURRENT_BINARY_DIR}/c-ares/lib/cmake/c-ares
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DZLIB_ROOT:STRING=${CMAKE_CURRENT_BINARY_DIR}/zlib
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ${_CMAKE_ARGS_OPENSSL_ROOT_DIR}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        -DgRPC_DIR:PATH=${CMAKE_CURRENT_BINARY_DIR}/grpc/lib/cmake/grpc
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  DEPENDS protobuf grpc
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+)
 
			 |