OLD | NEW |
(Empty) | |
| 1 # |
| 2 # Copyright 2015-2016, Google Inc. |
| 3 # All rights reserved. |
| 4 # |
| 5 # Redistribution and use in source and binary forms, with or without |
| 6 # modification, are permitted provided that the following conditions are |
| 7 # met: |
| 8 # |
| 9 # * Redistributions of source code must retain the above copyright |
| 10 # notice, this list of conditions and the following disclaimer. |
| 11 # * Redistributions in binary form must reproduce the above |
| 12 # copyright notice, this list of conditions and the following disclaimer |
| 13 # in the documentation and/or other materials provided with the |
| 14 # distribution. |
| 15 # * Neither the name of Google Inc. nor the names of its |
| 16 # contributors may be used to endorse or promote products derived from |
| 17 # this software without specific prior written permission. |
| 18 # |
| 19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 23 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 # |
| 31 |
| 32 CXX = g++ |
| 33 CPPFLAGS += -I/usr/local/include -pthread |
| 34 CXXFLAGS += -std=c++11 |
| 35 LDFLAGS += -L/usr/local/lib -lgrpc++_unsecure -lgrpc -lprotobuf -lpthread -ldl |
| 36 PROTOC = protoc |
| 37 GRPC_CPP_PLUGIN = grpc_cpp_plugin |
| 38 GRPC_CPP_PLUGIN_PATH ?= `which $(GRPC_CPP_PLUGIN)` |
| 39 |
| 40 PROTOS_PATH = ../../protos |
| 41 |
| 42 vpath %.proto $(PROTOS_PATH) |
| 43 |
| 44 all: system-check route_guide_client route_guide_server |
| 45 |
| 46 route_guide_client: route_guide.pb.o route_guide.grpc.pb.o route_guide_client.o
helper.o |
| 47 $(CXX) $^ $(LDFLAGS) -o $@ |
| 48 |
| 49 route_guide_server: route_guide.pb.o route_guide.grpc.pb.o route_guide_server.o
helper.o |
| 50 $(CXX) $^ $(LDFLAGS) -o $@ |
| 51 |
| 52 %.grpc.pb.cc: %.proto |
| 53 $(PROTOC) -I $(PROTOS_PATH) --grpc_out=. --plugin=protoc-gen-grpc=$(GRPC
_CPP_PLUGIN_PATH) $< |
| 54 |
| 55 %.pb.cc: %.proto |
| 56 $(PROTOC) -I $(PROTOS_PATH) --cpp_out=. $< |
| 57 |
| 58 clean: |
| 59 rm -f *.o *.pb.cc *.pb.h route_guide_client route_guide_server |
| 60 |
| 61 |
| 62 # The following is to test your system and ensure a smoother experience. |
| 63 # They are by no means necessary to actually compile a grpc-enabled software. |
| 64 |
| 65 PROTOC_CMD = which $(PROTOC) |
| 66 PROTOC_CHECK_CMD = $(PROTOC) --version | grep -q libprotoc.3 |
| 67 PLUGIN_CHECK_CMD = which $(GRPC_CPP_PLUGIN) |
| 68 HAS_PROTOC = $(shell $(PROTOC_CMD) > /dev/null && echo true || echo false) |
| 69 ifeq ($(HAS_PROTOC),true) |
| 70 HAS_VALID_PROTOC = $(shell $(PROTOC_CHECK_CMD) 2> /dev/null && echo true || echo
false) |
| 71 endif |
| 72 HAS_PLUGIN = $(shell $(PLUGIN_CHECK_CMD) > /dev/null && echo true || echo false) |
| 73 |
| 74 SYSTEM_OK = false |
| 75 ifeq ($(HAS_VALID_PROTOC),true) |
| 76 ifeq ($(HAS_PLUGIN),true) |
| 77 SYSTEM_OK = true |
| 78 endif |
| 79 endif |
| 80 |
| 81 system-check: |
| 82 ifneq ($(HAS_VALID_PROTOC),true) |
| 83 @echo " DEPENDENCY ERROR" |
| 84 @echo |
| 85 @echo "You don't have protoc 3.0.0 installed in your path." |
| 86 @echo "Please install Google protocol buffers 3.0.0 and its compiler." |
| 87 @echo "You can find it here:" |
| 88 @echo |
| 89 @echo " https://github.com/google/protobuf/releases/tag/v3.0.0-beta-2" |
| 90 @echo |
| 91 @echo "Here is what I get when trying to evaluate your version of protoc
:" |
| 92 @echo |
| 93 -$(PROTOC) --version |
| 94 @echo |
| 95 @echo |
| 96 endif |
| 97 ifneq ($(HAS_PLUGIN),true) |
| 98 @echo " DEPENDENCY ERROR" |
| 99 @echo |
| 100 @echo "You don't have the grpc c++ protobuf plugin installed in your pat
h." |
| 101 @echo "Please install grpc. You can find it here:" |
| 102 @echo |
| 103 @echo " https://github.com/grpc/grpc" |
| 104 @echo |
| 105 @echo "Here is what I get when trying to detect if you have the plugin:" |
| 106 @echo |
| 107 -which $(GRPC_CPP_PLUGIN) |
| 108 @echo |
| 109 @echo |
| 110 endif |
| 111 ifneq ($(SYSTEM_OK),true) |
| 112 @false |
| 113 endif |
OLD | NEW |