#
# 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.
#
# Copyright 1999-2007 Rogue Wave Software, Inc.
#

# TODO: Remove config.old.h once all Autoconf macros are working.
#
nobase_include_HEADERS = \
	algorithm \
	algorithm.c \
	algorithm.cc \
	ansi \
	bitset \
	bitset.c \
	bitset.cc \
	complex \
	complex.c \
	complex.cc \
	config.h \
config.old.h \
	deque \
	deque.c \
	deque.cc \
	deque_spec.h \
	exception \
	fstream \
	fstream.c \
	fstream.cc \
	functional \
	iomanip \
	ios \
	iosfwd \
	iostream \
	istream \
	istream.c \
	istream.cc \
	iterator \
	limits \
	limits.c \
	limits.cc \
	list \
	list.c \
	list.cc \
	list_spec.h \
	loc \
	locale \
	map \
	memory \
	new \
	numeric \
	ostream \
	ostream.c \
	ostream.cc \
	queue \
	rw \
	set \
	sstream \
	sstream.c \
	sstream.cc \
	stack \
	stdexcept \
	streambuf \
	streambuf.c \
	streambuf.cc \
	string \
	string.c \
	string.cc \
	strstream \
	tr1 \
	typeinfo \
	utility \
	valarray \
	valarray.c \
	valarray.cc \
	vector \
	vector.c \
	vector.cc \
	vector_spec.h

MAINTAINERCLEANFILES = \
        Makefile.in \
	config.h.in

