# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.

all: init client server

init:
	rm -rf ./bin && mkdir ./bin

protoc: protoc_init protoc_run

protoc_init:
	go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest; \
	go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

protoc_run:
	cd src && protoc --go_out=. --go-grpc_out=. proto/*.proto

client:
	cd src/grpcfs_client && go mod tidy && go build -o ../../bin .

server:
	cd src/grpcfs_server && go mod tidy && go build -o ../../bin .

run_server:
	bin/server

run_client:
	bin/client -mount $$PWD/tmp -serve $$PWD/data