Import('*')

env.Append( CPPPATH = '.' )

sources = """
opensync_list.c
opensync_error.c
opensync_context.c
opensync_support.c
opensync_xml.c
helper/opensync_hashtable.c
helper/opensync_anchor.c
db/opensync_db.c
module/opensync_module.c
plugin/opensync_plugin.c
plugin/opensync_plugin_info.c
plugin/opensync_plugin_env.c
plugin/opensync_sink.c
group/opensync_group_env.c
group/opensync_group.c
group/opensync_member.c
group/opensync_xml.c
format/opensync_converter.c
format/opensync_filter.c
format/opensync_format_env.c
format/opensync_objformat.c
format/opensync_time.c
data/opensync_data.c
data/opensync_change.c
ipc/opensync_queue.c
ipc/opensync_message.c
ipc/opensync_serializer.c
client/opensync_client.c
client/opensync_client_proxy.c
engine/opensync_engine.c
engine/opensync_obj_engine.c
engine/opensync_status.c
merger/opensync_capabilities.c
merger/opensync_capability.c
merger/opensync_xmlformat.c
merger/opensync_xmlfield.c
merger/opensync_xmlfieldlist.c
merger/opensync_merger.c
version/opensync_version.c
mapping/opensync_mapping_table.c
mapping/opensync_mapping_view.c
mapping/opensync_mapping_entry.c
mapping/opensync_mapping.c
archive/opensync_archive.c
"""

headers = """
opensync.h
opensync_list.h
opensync_xml.h
opensync-archive.h
opensync-context.h
opensync-data.h
opensync-engine.h
opensync-error.h
opensync-format.h
opensync-group.h
opensync-helper.h
opensync-ipc.h
opensync-module.h
opensync-plugin.h
opensync-support.h
opensync-client.h
opensync-merger.h
opensync-version.h
opensync-time.h
opensync-serializer.h
opensync-mapping.h
"""

plugin_headers = """
plugin/opensync_plugin.h
plugin/opensync_plugin_info.h
plugin/opensync_plugin_env.h
plugin/opensync_sink.h
"""

group_headers = """
group/opensync_group_env.h
group/opensync_group.h
group/opensync_member.h
"""

format_headers = """
format/opensync_converter.h
format/opensync_filter.h
format/opensync_format_env.h
format/opensync_objformat.h
format/opensync_time.h
"""

data_headers = """
data/opensync_data.h
data/opensync_change.h
"""

ipc_headers = """
ipc/opensync_queue.h
ipc/opensync_message.h
ipc/opensync_serializer.h
"""

mapping_headers = """
mapping/opensync_mapping.h
mapping/opensync_mapping_entry.h
mapping/opensync_mapping_table.h
mapping/opensync_mapping_view.h
"""

merger_headers = """
merger/opensync_capabilities.h
merger/opensync_capability.h
merger/opensync_xmlformat.h
merger/opensync_xmlfield.h
merger/opensync_xmlfieldlist.h
merger/opensync_merger.h
"""

version_headers = """
version/opensync_version.h
"""

archive_headers = """
archive/opensync_archive.h
"""

db_headers = """
db/opensync_db.h
"""

helper_headers = """
helper/opensync_anchor.h
helper/opensync_hashtable.h
"""

engine_headers = """
engine/opensync_engine.h
engine/opensync_obj_engine.h
engine/opensync_status.h
"""

Libraries = r"""
glib-2.0
gthread-2.0
gmodule-2.0
libxml2
sqlite3
"""

#libopensync = env.SharedLibrary('opensync', Split(sources), LIBS = Split(Libraries))
libopensync = env.build_shlib('opensync', Split(sources), 
					vnum="%d.%d.%d" % (config["major"], config["minor"], config["micro"]), 
					LIBS = Split(Libraries))

env.Prepend(LIBPATH = '#opensync')
osplugin = env.Program('osplugin', 'client/osplugin.c', LIBS = Split(Libraries) + ['opensync'])

#env.Install(install_lib, libopensync)
env.install_shlib(install_lib, libopensync)
env.Install(install_bin, osplugin)
env.Install(install_inc + '/opensync-1.0/opensync/', Split(headers))
env.Install(install_inc + '/opensync-1.0/opensync/plugin', Split(plugin_headers))
env.Install(install_inc + '/opensync-1.0/opensync/group', Split(group_headers))
env.Install(install_inc + '/opensync-1.0/opensync/format', Split(format_headers))
env.Install(install_inc + '/opensync-1.0/opensync/data', Split(data_headers))
env.Install(install_inc + '/opensync-1.0/opensync/ipc', Split(ipc_headers))
env.Install(install_inc + '/opensync-1.0/opensync/mapping', Split(mapping_headers))
env.Install(install_inc + '/opensync-1.0/opensync/merger', Split(merger_headers))
env.Install(install_inc + '/opensync-1.0/opensync/version', Split(version_headers))
env.Install(install_inc + '/opensync-1.0/opensync/archive', Split(archive_headers))
env.Install(install_inc + '/opensync-1.0/opensync/helper', Split(helper_headers))
env.Install(install_inc + '/opensync-1.0/opensync/engine', Split(engine_headers))
env.Alias('install', install_prefix)
