include toc.make
SUBDIRS = lex

S11N_NS ?= s11n

NAMESPACE_PREFIX = src/

NS_SOURCES = $(addprefix $(NAMESPACE_PREFIX),\
	data_node.cpp \
	data_node_io.cpp \
	serializers.cpp \
	)


# buggy:
#	hex_serializer.cpp

NS_HEADERS = $(addprefix $(NAMESPACE_PREFIX),\
	abstract_creator.h \
	compact_serializer.h \
	data_node.h \
	data_node_algo.h \
	data_node_io.h \
	data_node_format.h \
	data_node_functor.h \
	data_node_serialize.h \
	default_registrations.h \
	funtxt_serializer.h \
	funxml_serializer.h \
	list.h \
	map.h \
	parens_serializer.h \
	reg_map_serializable.h \
	reg_nons11n.h \
	reg_proxy.h \
	reg_serializer.h \
	reg_serializable.h \
	sam_std_containers.h \
	simplexml_serializer.h \
	s11n.h \
	s11n_core.h \
	serializers.h \
	)

FILE_FILTERS = namespace
namespace_FILTER_RULES = -e 's|S11N_NS|$(S11N_NS)|g'
namespace_FILTER_NAMESED = s,$(NAMESPACE_PREFIX),,
namespace_FILTER_SOURCES = $(NS_SOURCES) $(NS_HEADERS)
namespace-notice:
	@echo "Package namespace is $(S11N_NS)."
FILE_FILTERS: namespace-notice
include $(TOC_MAKESDIR)/FILE_FILTERS.make


# Be careful with SOURCES/HEADERS, lest they be cleaned up when you don't
# want them to be. Simplest is to put everything into NS_{HEADERS/SOURCES} and expect
# them to be filtered by sed.
SOURCES = \
	$(patsubst $(NAMESPACE_PREFIX)%,%,$(NS_SOURCES)) 
HEADERS = \
	$(patsubst $(NAMESPACE_PREFIX)%,%,$(NS_HEADERS)) 



OBJECTS = $(patsubst %.cpp,%.o,$(SOURCES))
objects: $(OBJECTS)
# PARSER_OBJECTS = $(addprefix parsers/,flex_lexers.o  funtxt.flex.o  funxml.flex.o  select_lexer.flex.o  simplexml.flex.o)

INSTALL_PACKAGE_HEADERS_DEST = $(prefix)/include/$(S11N_NS)
INSTALL_PACKAGE_HEADERS = $(HEADERS)


# DIST_FILES += $(sort $(wildcard *.cpp) $(wildcard *.h) $(wildcard *.make))
DIST_FILES += $(wildcard *.at) $(NS_SOURCES) $(NS_HEADERS) 


SYMLINK_HEADERS = $(INSTALL_PACKAGE_HEADERS)
SYMLINK_HEADERS_DEST = $(top_srcdir)/include/$(S11N_NS)
include $(TOC_MAKESDIR)/symlink_headers.make




all: $(SCR_BOILERPLATE) FILE_FILTERS symlink-headers subdir-lex $(OBJECTS)

