Fix creation of toolchain for protobuf and gRPC

This improves the creation of the toolchain needed to build
protobuf and gRPC applications on for the Genode framework. Especially,
the script is now independent of the distribution's protoc.

Issue #190
This commit is contained in:
Pirmin Duss
2020-01-06 15:37:01 +01:00
committed by Christian Helmuth
parent ed754367a5
commit dc2eecbd63
5 changed files with 18 additions and 38 deletions

View File

@@ -1 +1 @@
2019-11-26 a43e1dc232eedb942c7671186ab535b181386ee8 2020-01-06 96878901f9084928e4a9a8e103c226b04bbaa869

View File

@@ -1 +1 @@
2019-11-26 2473fe50075f7ff8b335b7ff50b7be79484bb4de 2020-01-06 2473fe50075f7ff8b335b7ff50b7be79484bb4de

View File

@@ -1 +1 @@
2019-11-26 73bfa38645a9a4d0457accabccc201508516ea17 2020-01-06 9b1b94c77fe87e62f6620fdc0e304813a9301f87

View File

@@ -1 +1 @@
2019-11-26 87ea8d858ab10dc9362596f167c0b39b500663a2 2020-01-06 985c217572a886b5e4ef97d76585e70052f6e45f

View File

@@ -1,6 +1,7 @@
#!/usr/bin/make -f #!/usr/bin/make -f
# #
# \brief Tool for preparing the protobuf tool-chain for the Genode OS Framework # \brief Tool for preparing the protobuf and gRPC tool-chain for
# use in the build system of the Genode OS Framework.
# \author Pirmin Duss # \author Pirmin Duss
# \date 2019-09-24 # \date 2019-09-24
# #
@@ -14,8 +15,8 @@ help:
$(ECHO) "Build protobuf and gRPC tools for the Genode OS Framework tool chain" $(ECHO) "Build protobuf and gRPC tools for the Genode OS Framework tool chain"
$(ECHO) $(ECHO)
$(ECHO) "--- available commands ---" $(ECHO) "--- available commands ---"
$(ECHO) "build - build protobuf tools" $(ECHO) "build - build protobuf and gRPC tools"
$(ECHO) "install - install protobuf tools to '$(INSTALL_LOCATION)'" $(ECHO) "install - install protobuf and gRPC tools to '$(INSTALL_LOCATION)'"
$(ECHO) "clean - clean everything except contrib sources" $(ECHO) "clean - clean everything except contrib sources"
$(ECHO) $(ECHO)
$(ECHO) "--- available command line options ---" $(ECHO) "--- available command line options ---"
@@ -26,7 +27,7 @@ help:
.PHONY: build help install .PHONY: build help install
TOOL_VERSION := 19.11 TOOL_VERSION := 20.01
# #
# Enable parallel build for 2nd-level $(MAKE) by default # Enable parallel build for 2nd-level $(MAKE) by default
@@ -39,7 +40,7 @@ CMAKE ?= cmake
# cmake is required to enable out of tree builds # cmake is required to enable out of tree builds
$(call check_tool,$(CMAKE)) $(call check_tool,$(CMAKE))
GENODE_DIR ?= $(realpath $(dir $(firstword $(MAKEFILE_LIST)))/..)/../.. GENODE_DIR ?= $(abspath $(dir $(firstword $(MAKEFILE_LIST)))/../../..)
CONTRIB_DIR := $(shell $(GENODE_DIR)/tool/ports/current protobuf_grpc-host)/src/lib CONTRIB_DIR := $(shell $(GENODE_DIR)/tool/ports/current protobuf_grpc-host)/src/lib
HOST_TOOL_DIR := $(CONTRIB_DIR)/grpc-host HOST_TOOL_DIR := $(CONTRIB_DIR)/grpc-host
BUILD_DIR := $(GENODE_DIR)/build/tool/protobuf_grpc/$(TOOL_VERSION) BUILD_DIR := $(GENODE_DIR)/build/tool/protobuf_grpc/$(TOOL_VERSION)
@@ -53,14 +54,7 @@ extract:
$(VERBOSE)$(GENODE_DIR)/tool/ports/prepare_port protobuf_grpc-host $(VERBOSE)$(GENODE_DIR)/tool/ports/prepare_port protobuf_grpc-host
configure: extract cares/cmake protobuf/cmake grpc/cmake configure: extract protobuf/cmake grpc/cmake
cares/cmake:
$(VERBOSE)mkdir -p $(CARES_BUILD_DIR)
$(VERBOSE)cd $(CARES_BUILD_DIR) && \
$(CMAKE) -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$(INSTALL_LOCATION) \
$(HOST_TOOL_DIR)/third_party/cares/cares
protobuf/cmake: protobuf/cmake:
$(VERBOSE)mkdir -p $(PROTOC_BUILD_DIR) $(VERBOSE)mkdir -p $(PROTOC_BUILD_DIR)
@@ -69,50 +63,36 @@ protobuf/cmake:
-DCMAKE_INSTALL_PREFIX=$(INSTALL_LOCATION) \ -DCMAKE_INSTALL_PREFIX=$(INSTALL_LOCATION) \
$(HOST_TOOL_DIR)/third_party/protobuf/cmake $(HOST_TOOL_DIR)/third_party/protobuf/cmake
grpc/cmake: cares/install protobuf/install grpc/cmake:
$(VERBOSE)mkdir -p $(BUILD_DIR) $(VERBOSE)mkdir -p $(BUILD_DIR)
$(VERBOSE)cd $(BUILD_DIR) && \ $(VERBOSE)cd $(BUILD_DIR) && \
$(CMAKE) -DCMAKE_BUILD_TYPE=Release \ $(CMAKE) -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$(INSTALL_LOCATION) \ -DCMAKE_INSTALL_PREFIX=$(INSTALL_LOCATION) \
-DgRPC_BUILD_CODEGEN=y \ -DgRPC_BUILD_CODEGEN=y \
-DgRPC_CARES_PROVIDER=package \ -DgRPC_CARES_PROVIDER=module \
-DgRPC_SSL_PROVIDER=package \ -DgRPC_SSL_PROVIDER=package \
-DgRPC_ZLIB_PROVIDER=package \ -DgRPC_ZLIB_PROVIDER=package \
-DgRPC_PROTOBUF_PROVIDER=package \ -DgRPC_PROTOBUF_PROVIDER=module \
$(HOST_TOOL_DIR) $(HOST_TOOL_DIR)
build: configure protobuf/make grpc/make build: configure grpc/make
cares/make: protobuf/cmake
$(VERBOSE)cd $(CARES_BUILD_DIR) && \
make -j$(MAKE_JOBS) all
protobuf/make: protobuf/cmake
$(VERBOSE)cd $(PROTOC_BUILD_DIR) && \
make -j$(MAKE_JOBS) all
grpc/make: grpc/cmake grpc/make: grpc/cmake
$(VERBOSE)cd $(BUILD_DIR) && \ $(VERBOSE)cd $(BUILD_DIR) && \
make -j$(MAKE_JOBS) all make -j$(MAKE_JOBS) all
install: build cares/install protobuf/install grpc/install install: build grpc/install
ifeq ($(INSTALL_LOCATION),$(DEFAULT_INSTALL_LOCATION)) ifeq ($(INSTALL_LOCATION),$(DEFAULT_INSTALL_LOCATION))
$(VERBOSE)$(SUDO) ln -snf $(TOOL_VERSION) $(dir $(INSTALL_LOCATION))/current $(VERBOSE)$(SUDO) ln -snf $(TOOL_VERSION) $(dir $(INSTALL_LOCATION))/current
endif endif
cares/install:
$(VERBOSE)cd $(CARES_BUILD_DIR) && \
$(SUDO) make -j$(MAKE_JOBS) install
protobuf/install:
$(VERBOSE)cd $(PROTOC_BUILD_DIR) && \
$(SUDO) make -j$(MAKE_JOBS) install
grpc/install: grpc/install:
$(VERBOSE)cd $(BUILD_DIR) && \ $(VERBOSE)cd $(BUILD_DIR) && \
$(SUDO) make -j$(MAKE_JOBS) install $(SUDO) make -j$(MAKE_JOBS) install
$(VERBOSE)cd $(BUILD_DIR) && \
$(SUDO) cp grpc_*_plugin $(INSTALL_LOCATION)/bin
clean: clean: