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


if WITH_TESTS
SUBDIRS = test
endif

%.so:
	cd src/ext/thrift_protocol/ \
	  && $(MAKE)

if WITH_PHP_EXTENSION
phpconfdir=$(PHP_CONFIG_PREFIX)
phpconf_DATA=thrift_protocol.ini

phpmoduledir = `php-config --extension-dir`
phpmodule_SCRIPTS = src/ext/thrift_protocol/modules/thrift_protocol.so
endif

phpdir = $(PHP_PREFIX)/Thrift

phpbasedir = $(phpdir)/Base
phpbase_DATA = \
  lib/Thrift/Base/TBase.php

phpclassloaderdir = $(phpdir)/ClassLoader
phpclassloader_DATA = \
  lib/Thrift/ClassLoader/ThriftClassLoader.php

phpexceptiondir = $(phpdir)/Exception
phpexception_DATA = \
  lib/Thrift/Exception/TApplicationException.php \
  lib/Thrift/Exception/TException.php \
  lib/Thrift/Exception/TProtocolException.php \
  lib/Thrift/Exception/TTransportException.php

phpfactorydir = $(phpdir)/Factory
phpfactory_DATA = \
  lib/Thrift/Factory/TBinaryProtocolFactory.php \
  lib/Thrift/Factory/TCompactProtocolFactory.php \
  lib/Thrift/Factory/TJSONProtocolFactory.php \
  lib/Thrift/Factory/TProtocolFactory.php \
  lib/Thrift/Factory/TStringFuncFactory.php \
  lib/Thrift/Factory/TTransportFactory.php

phpprotocoldir = $(phpdir)/Protocol
phpprotocol_DATA = \
  lib/Thrift/Protocol/TBinaryProtocolAccelerated.php \
  lib/Thrift/Protocol/TBinaryProtocol.php \
  lib/Thrift/Protocol/TCompactProtocol.php \
  lib/Thrift/Protocol/TJSONProtocol.php \
  lib/Thrift/Protocol/TProtocol.php

phpprotocoljsondir = $(phpprotocoldir)/JSON
phpprotocoljson_DATA = \
  lib/Thrift/Protocol/JSON/BaseContext.php \
  lib/Thrift/Protocol/JSON/ListContext.php \
  lib/Thrift/Protocol/JSON/LookaheadReader.php \
  lib/Thrift/Protocol/JSON/PairContext.php

phpserializerdir = $(phpdir)/Serializer
phpserializer_DATA = \
  lib/Thrift/Serializer/TBinarySerializer.php

phpserverdir = $(phpdir)/Server
phpserver_DATA = \
  lib/Thrift/Server/TServerSocket.php \
  lib/Thrift/Server/TForkingServer.php \
  lib/Thrift/Server/TServer.php \
  lib/Thrift/Server/TServerTransport.php \
  lib/Thrift/Server/TSimpleServer.php

phpstringfuncdir = $(phpdir)/StringFunc
phpstringfunc_DATA = \
  lib/Thrift/StringFunc/Mbstring.php \
  lib/Thrift/StringFunc/Core.php \
  lib/Thrift/StringFunc/TStringFunc.php

phptransportdir = $(phpdir)/Transport
phptransport_DATA = \
  lib/Thrift/Transport/TBufferedTransport.php \
  lib/Thrift/Transport/TFramedTransport.php \
  lib/Thrift/Transport/THttpClient.php \
  lib/Thrift/Transport/TMemoryBuffer.php \
  lib/Thrift/Transport/TNullTransport.php \
  lib/Thrift/Transport/TPhpStream.php \
  lib/Thrift/Transport/TSocket.php \
  lib/Thrift/Transport/TSocketPool.php \
  lib/Thrift/Transport/TTransport.php

phptypedir = $(phpdir)/Type
phptype_DATA = \
  lib/Thrift/Type/TMessageType.php \
  lib/Thrift/Type/TType.php

EXTRA_DIST = \
  lib \
  src/autoload.php \
  src/ext/thrift_protocol/config.w32 \
  src/ext/thrift_protocol/php_thrift_protocol.cpp \
  src/ext/thrift_protocol/php_thrift_protocol.h \
  src/Thrift.php \
  src/TStringUtils.php \
  thrift_protocol.ini \
  README.apache.md

MAINTAINERCLEANFILES = \
  Makefile \
  Makefile.in

