config_h = configure_file (input : 'config.h.in',
                output : 'config.h',
                configuration : conf)

libssts_header_files = []
libssts_src_files = []

subdir ('external')

libssts_src_files += [
    'Application.c',
    'BaseN.c',
    'baseobject.c',
    'Box.c',
    'Callback.c',
    'defs.c',
    'DynamicArray.c',
    'Error.c',
    'external/tinycthread.c',
    'Func.c',
    'GlobalNotify.c',
    'hash.c',
    'Interface.c',
    'LinkedList.c',
    'MainLoop.c',
    'Map.c',
    'Matrix.c',
    'mm.c',
    'mm_mark_and_sweep.c',
    'primes.c',
    'Random.c',
    'SimpleTypeSystem.c',
    'Stream.c',
    'Thread.c',
    'types.c',
    'utils.c',
    'vec.c',
]

libssts_header_files += [
    'Application.h',
    'BaseN.h',
    'baseobject.h',
    'Box.h',
    'Callback.h',
    'defs.h',
    'DynamicArray.h',
    'Error.h',
    './external/stdatomic.h',
    './external/tinycthread.h',
    'Func.h',
    'Func.h',
    'GlobalNotify.h',
    'hash.h',
    'Interface.h',
    'LinkedList.h',
    'MainLoop.h',
    'Map.h',
    'Matrix.h',
    'mm.h',
    'mm_mark_and_sweep.h',
    'primes.h',
    'Random.h',
    'SimpleTypeSystem.h',
    'Stream.h',
    'StreamPrivate.h',
    'Thread.h',
    'types.h',
    'utils.h',
]

libssts_header_files += config_h
install_headers (libssts_header_files, subdir : 'libssts', )

libssts_files = libssts_src_files
libssts_files += libssts_header_files

libssts_include = include_directories ('.')

dependencies = [pthread_dep, mthreads_dep, boehm_dep, mathlib_dep]

libssts = library ('ssts',
    files(libssts_src_files),
    version : meson.project_version(),
    soversion : meson.project_version(),
    include_directories : libssts_include,
    dependencies : dependencies,
)

