#
# 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 = . test/ThriftTest

THRIFTCODE= \
            src/Collections/THashSet.cs \
            src/Collections/TCollections.cs \
            src/Properties/AssemblyInfo.cs \
            src/Protocol/TAbstractBase.cs \
            src/Protocol/TBase.cs \
            src/Protocol/TBase64Utils.cs \
            src/Protocol/TJSONProtocol.cs \
            src/Protocol/TProtocolException.cs \
            src/Protocol/TProtocolFactory.cs \
            src/Protocol/TList.cs \
            src/Protocol/TSet.cs \
            src/Protocol/TMap.cs \
            src/Protocol/TProtocolUtil.cs \
            src/Protocol/TMessageType.cs \
            src/Protocol/TProtocol.cs \
            src/Protocol/TProtocolDecorator.cs \
            src/Protocol/TMultiplexedProtocol.cs \
            src/Protocol/TMultiplexedProcessor.cs \
            src/Protocol/TType.cs \
            src/Protocol/TField.cs \
            src/Protocol/TMessage.cs \
            src/Protocol/TStruct.cs \
            src/Protocol/TBinaryProtocol.cs \
            src/Protocol/TCompactProtocol.cs \
            src/Server/TThreadedServer.cs \
            src/Server/TThreadPoolServer.cs \
            src/Server/TSimpleServer.cs \
            src/Server/TServer.cs \
            src/Server/TServerEventHandler.cs \
            src/Transport/TBufferedTransport.cs \
            src/Transport/TTransport.cs \
            src/Transport/TSocket.cs \
            src/Transport/TSocketVersionizer.cs \
            src/Transport/TTransportException.cs \
            src/Transport/TStreamTransport.cs \
            src/Transport/TFramedTransport.cs \
            src/Transport/TServerTransport.cs \
            src/Transport/TServerSocket.cs \
            src/Transport/TTransportFactory.cs \
            src/Transport/THttpClient.cs \
            src/Transport/THttpHandler.cs \
            src/Transport/TMemoryBuffer.cs \
            src/Transport/TNamedPipeClientTransport.cs \
            src/Transport/TNamedPipeServerTransport.cs \
            src/Transport/TTLSSocket.cs \
            src/Transport/TTLSServerSocket.cs \
            src/TProcessor.cs \
            src/TException.cs \
            src/TApplicationException.cs

CSC=gmcs

if NET_2_0
MONO_DEFINES=/d:NET_2_0
endif

if NET_4_5
MONO_DEFINES=/d:NET_4_5 -sdk:4.5
endif

all-local: Thrift.dll

Thrift.dll: $(THRIFTCODE)
	$(CSC) $(THRIFTCODE) /out:Thrift.dll /target:library /reference:System.Web $(MONO_DEFINES)

clean-local:
	$(RM) Thrift.dll

precross:
	$(MAKE) -C test/ThriftTest precross

# run csharp tests?
# check:
# 	cd test/ThriftTest && ./maketest.sh
# 	cd test/Multiplex && ./maketest.sh

EXTRA_DIST = \
             $(THRIFTCODE) \
             ThriftMSBuildTask \
             src/Thrift.csproj \
             src/Thrift.sln \
             src/Thrift.WP7.csproj \
             src/Properties/AssemblyInfo.WP7.cs \
             src/Transport/TSilverlightSocket.cs \
             test \
             README.md
