#
# 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.
#

#
# Common thrift code generation rules
#
gen_swift:
	$(THRIFT) --gen swift -r -o Sources/Common $(top_srcdir)/tutorial/tutorial.thrift

distdir:
	$(MAKE) $(AM_MAKEFLAGS) distdir-am

tutorial: gen_swift
	swift run TutorialRunner

tutorialserver: gen_swift
	swift run TutorialServer

tutorialclient: gen_swift
	swift run TutorialClient

EXTRA_DIST = \
	Package.swift \
	swift-dep \
	Sources/TutorialClient/main.swift \
	Sources/TutorialRunner/main.swift \
	Sources/TutorialServer/main.swift \
	Sources/TutorialServer/CalculatorService.swift \
	README.md

