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

SUBDIRS = t

Makefile-perl.mk : Makefile.PL
	$(PERL) Makefile.PL MAKEFILE=Makefile-perl.mk INSTALLDIRS=$(INSTALLDIRS) INSTALL_BASE=$(PERL_PREFIX)

all-local: Makefile-perl.mk
	$(MAKE) -f $<
	find blib -name 'Makefile*' -exec rm -f {} \;

install-exec-local: Makefile-perl.mk
	$(MAKE) -f $< install DESTDIR=$(DESTDIR)/

clean-local:
	if test -f Makefile-perl.mk ; then \
		$(MAKE) -f Makefile-perl.mk clean ; \
	fi
	$(RM) Makefile-perl.mk.old
	$(RM) -r gen-perl gen-perl2

EXTRA_DIST = \
	coding_standards.md \
	build-cpan-dist.sh \
	Makefile.PL \
	MANIFEST.SKIP \
	test.pl \
	lib/Thrift.pm \
	lib/Thrift.pm \
	lib/Thrift/BinaryProtocol.pm \
	lib/Thrift/BufferedTransport.pm \
	lib/Thrift/Exception.pm \
	lib/Thrift/FramedTransport.pm \
	lib/Thrift/HttpClient.pm \
	lib/Thrift/MemoryBuffer.pm \
	lib/Thrift/MessageType.pm \
	lib/Thrift/MultiplexedProcessor.pm \
	lib/Thrift/MultiplexedProtocol.pm \
	lib/Thrift/Protocol.pm \
	lib/Thrift/ProtocolDecorator.pm \
	lib/Thrift/Server.pm \
	lib/Thrift/ServerSocket.pm \
	lib/Thrift/Socket.pm \
	lib/Thrift/SSLSocket.pm \
	lib/Thrift/SSLServerSocket.pm \
	lib/Thrift/UnixServerSocket.pm \
	lib/Thrift/UnixSocket.pm \
	lib/Thrift/Type.pm \
	lib/Thrift/Transport.pm \
	tools/FixupDist.pl \
	README.md

THRIFT = @top_builddir@/compiler/cpp/thrift
THRIFT_IF = @top_srcdir@/test/ThriftTest.thrift
NAME_BENCHMARKSERVICE =  @top_srcdir@/lib/rb/benchmark/Benchmark.thrift
NAME_AGGR = @top_srcdir@/contrib/async-test/aggr.thrift

THRIFTTEST_GEN = \
	gen-perl/ThriftTest/Constants.pm \
	gen-perl/ThriftTest/SecondService.pm \
	gen-perl/ThriftTest/ThriftTest.pm \
	gen-perl/ThriftTest/Types.pm

BENCHMARK_GEN = \
	gen-perl/BenchmarkService.pm \
	gen-perl/Constants.pm \
	gen-perl/Types.pm

AGGR_GEN = \
	gen-perl2/Aggr.pm \
	gen-perl2/Constants.pm \
	gen-perl2/Types.pm

PERL_GEN = \
	$(THRIFTTEST_GEN) \
	$(BENCHMARK_GEN) \
	$(AGGR_GEN)

BUILT_SOURCES = $(PERL_GEN)

check-local: $(PERL_GEN)
	$(PERL) -Iblib/lib -I@abs_srcdir@ -I@builddir@/gen-perl2 -I@builddir@/gen-perl \
		@abs_srcdir@/test.pl @abs_srcdir@/t/*.t

$(THRIFTTEST_GEN): $(THRIFT_IF) $(THRIFT)
	$(THRIFT) --gen perl $<

$(BENCHMARK_GEN): $(NAME_BENCHMARKSERVICE) $(THRIFT)
	$(THRIFT) --gen perl $<

$(AGGR_GEN): $(NAME_AGGR) $(THRIFT)
	$(MKDIR_P) gen-perl2
	$(THRIFT) -out gen-perl2 --gen perl $<
