#!/usr/bin/make

include toc.make


#########################
# Maintenance notes:
#  expected via toc:
#   $(PACKAGE_NAMESPACE) - namespace for this code
#

PACKAGE_NAMESPACE ?= toolbox
TOOLBOX_NAMESPACE ?= $(PACKAGE_NAMESPACE)

################ the real sources are stored here:
  NAMESPACE_PREFIX = src/
################ and the namespace is filtered out via FILE_FILTERS.

NAMESPACE = $(PACKAGE_NAMESPACE)

NS_SOURCES = $(addprefix $(NAMESPACE_PREFIX),\
	aliaser.cpp \
	argv_parser.cpp \
	environment.cpp \
	file_util.cpp \
	key_value_parser.cpp \
	property_store.cpp \
	string_util.cpp \
	to_string.cpp \
	)

NS_HEADERS = $(addprefix $(NAMESPACE_PREFIX),\
	aliaser.h \
	argv_parser.h \
	environment.h \
	file_util.h \
	key_value_parser.h \
	property_server.h \
	property_store.h \
	string_util.h \
	to_string.h \
	)
# eprintf.h
#	any.h
#	mtcop.h


################################# got zlib?
GZ_CPP = $(NAMESPACE_PREFIX)gzstream.cpp
GZ_H = $(NAMESPACE_PREFIX)gzstream.h
ifeq (1,$(configure_enable_zlib))
zlib:
	@echo "FYI: zlib support is enabled."
    NS_SOURCES += $(GZ_CPP)
    NS_HEADERS += $(GZ_H)
else
zlib:
	@echo "FYI: zlib support is DISABLED."
    DIST_FILES += $(GZ_CPP) $(GZ_H)
endif
################################# /zlib

################################## got bzip?
BZ_CPP = $(NAMESPACE_PREFIX)bzstream.cpp
BZ_H = $(NAMESPACE_PREFIX)bzstream.h
ifeq (1,$(configure_enable_bzlib))
bzlib:
	@echo "FYI: bz2lib support is enabled."
    NS_SOURCES += $(BZ_CPP)
    NS_HEADERS += $(BZ_H)
else
bzlib:
	@echo "FYI: bz2lib support is DISABLED."
    DIST_FILES += $(BZ_CPP) $(BZ_H)
endif
################################# /bzip


SOURCES = $(patsubst $(NAMESPACE_PREFIX)%,%,$(NS_SOURCES))
HEADERS = $(patsubst $(NAMESPACE_PREFIX)%,%,$(NS_HEADERS))


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


top_srcdir_absolute = $(shell cd $(top_srcdir) && pwd)


INSTALL_PACKAGE_HEADERS_DEST = $(prefix)/include/$(PACKAGE_NAMESPACE)
INSTALL_PACKAGE_HEADERS += $(HEADERS) $(EPRINTF)

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


OBJECTS = $(patsubst %.cpp,%.o,$(SOURCES))


DIST_FILES += $(NS_SOURCES) $(NS_HEADERS)

all: FILE_FILTERS $(EPRINTF) symlink-headers zlib bzlib $(OBJECTS)

