#
# 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.
#
#
# Contains some contributions under the Thrift Software License.
# Please see doc/old-thrift-license.txt in the Thrift distribution for
# details.

AUTOMAKE_OPTIONS = subdir-objects

SUBDIRS = src .
if WITH_TESTS
SUBDIRS += test
endif

bin_PROGRAMS = thrift

thrift_OBJDIR = obj

thrift_SOURCES = src/thrift/audit/t_audit.cpp \
                 src/thrift/audit/t_audit.h \
                 src/thrift/common.cc \
                 src/thrift/common.h \
                 src/thrift/generate/t_generator.cc \
                 src/thrift/generate/t_generator.h \
                 src/thrift/generate/t_generator_registry.h \
                 src/thrift/generate/t_html_generator.h \
                 src/thrift/generate/t_oop_generator.h \
                 src/thrift/globals.h \
                 src/thrift/logging.h \
                 src/thrift/main.cc \
                 src/thrift/main.h \
                 src/thrift/parse/parse.cc \
                 src/thrift/parse/t_base_type.h \
                 src/thrift/parse/t_const.h \
                 src/thrift/parse/t_const_value.h \
                 src/thrift/parse/t_container.h \
                 src/thrift/parse/t_doc.h \
                 src/thrift/parse/t_enum.h \
                 src/thrift/parse/t_enum_value.h \
                 src/thrift/parse/t_field.h \
                 src/thrift/parse/t_function.h \
                 src/thrift/parse/t_list.h \
                 src/thrift/parse/t_map.h \
                 src/thrift/parse/t_program.h \
                 src/thrift/parse/t_scope.h \
                 src/thrift/parse/t_service.h \
                 src/thrift/parse/t_set.h \
                 src/thrift/parse/t_struct.h \
                 src/thrift/parse/t_type.h \
                 src/thrift/parse/t_typedef.cc \
                 src/thrift/parse/t_typedef.h \
                 src/thrift/platform.h 

# Specific client generator source
thrift_SOURCES += src/thrift/generate/t_as3_generator.cc \
                  src/thrift/generate/t_c_glib_generator.cc \
                  src/thrift/generate/t_cl_generator.cc \
                  src/thrift/generate/t_cpp_generator.cc \
                  src/thrift/generate/t_csharp_generator.cc \
                  src/thrift/generate/t_d_generator.cc \
                  src/thrift/generate/t_dart_generator.cc \
                  src/thrift/generate/t_delphi_generator.cc \
                  src/thrift/generate/t_erl_generator.cc \
                  src/thrift/generate/t_go_generator.cc \
                  src/thrift/generate/t_gv_generator.cc \
                  src/thrift/generate/t_haxe_generator.cc \
                  src/thrift/generate/t_hs_generator.cc \
                  src/thrift/generate/t_html_generator.cc \
                  src/thrift/generate/t_java_generator.cc \
                  src/thrift/generate/t_javame_generator.cc \
                  src/thrift/generate/t_js_generator.cc \
                  src/thrift/generate/t_json_generator.cc \
                  src/thrift/generate/t_lua_generator.cc \
                  src/thrift/generate/t_netcore_generator.cc \
                  src/thrift/generate/t_netcore_generator.h \
                  src/thrift/generate/t_netstd_generator.cc \
                  src/thrift/generate/t_netstd_generator.h \
                  src/thrift/generate/t_ocaml_generator.cc \
                  src/thrift/generate/t_perl_generator.cc \
                  src/thrift/generate/t_php_generator.cc \
                  src/thrift/generate/t_py_generator.cc \
                  src/thrift/generate/t_rb_generator.cc \
                  src/thrift/generate/t_rs_generator.cc \
                  src/thrift/generate/t_st_generator.cc \
                  src/thrift/generate/t_swift_generator.cc \
                  src/thrift/generate/t_xml_generator.cc \
                  src/thrift/generate/t_xsd_generator.cc

thrift_CPPFLAGS = -I$(srcdir)/src
thrift_CXXFLAGS = -Wall -Wextra -pedantic -Werror
thrift_LDADD = @LEXLIB@ src/thrift/libparse.a

WINDOWS_DIST = \
             compiler.sln \
             compiler.vcxproj \
             compiler.vcxproj.filters

EXTRA_DIST = \
             coding_standards.md \
             README.md \
             CMakeLists.txt \
             test \
             $(WINDOWS_DIST)

clean-local:
	$(RM) version.h

src/thrift/main.cc: src/thrift/version.h

style-local:
	$(CPPSTYLE_CMD)
