local sorted_libs = { "wave", "url", "type_erasure", "timer", "test", "stacktrace", "program_options", "process", "nowide", "log", "locale", "json", "iostreams", "graph_parallel", "mpi", "python", "graph", "serialization", "regex", "math", "random", "fiber", "filesystem", "coroutine", "contract", "thread", "date_time", "exception", "cobalt", "context", "container", "chrono", "system", "charconv", "atomic" } local libs_dep = { json = { "container", "system" }, python = { "graph" }, test = { "exception" }, type_erasure = { "thread" }, thread = { "atomic", "chrono", "container", "date_time", "exception", "system" }, fiber = { "context", "filesystem" }, chrono = { "system" }, charconv = { }, contract = { "exception", "thread" }, timer = { }, wave = { "filesystem", "serialization" }, stacktrace = { }, coroutine = { "context", "exception", "system" }, math = { "random" }, exception = { }, filesystem = { "atomic", "system" }, date_time = { }, atomic = { }, url = { "system" }, serialization = { }, process = { "filesystem", "system" }, regex = { }, container = { }, random = { "system" }, nowide = { "filesystem" }, program_options = { }, system = { }, cobalt = { "container", "context", "system" }, graph = { "math", "random", "regex", "serialization" }, context = { }, mpi = { "graph", "python", "serialization" }, log = { "atomic", "date_time", "exception", "filesystem", "random", "regex", "system", "thread" }, iostreams = { "random", "regex" }, locale = { "thread" }, graph_parallel = { "filesystem", "graph", "mpi", "random", "serialization" } } local header_only_buildable = { "graph_parallel", "system", "exception", "regex", "math", } function get_libs() return sorted_libs end function get_lib_deps() return libs_dep end function get_header_only_buildable() return header_only_buildable end function for_each(lambda) for _, libname in ipairs(get_libs()) do lambda(libname) end end function for_each_header_only_buildable_lib(lambda) for _, libname in ipairs(get_header_only_buildable()) do lambda(libname) end end function for_each_lib_deps(lambda) for libname, deps in pairs(get_lib_deps()) do lambda(libname, deps) end end function get_sub_libs(package) local sub_libs_map = { test = {"prg_exec_monitor", "unit_test_framework"}, serialization = {"wserialization", "serialization"}, fiber = {"fiber", "fiber_numa"}, log = {"log", "log_setup"}, stacktrace = { "stacktrace_noop", "stacktrace_backtrace", "stacktrace_addr2line", "stacktrace_basic", "stacktrace_windbg", "stacktrace_windbg_cached", }, } if package:config("python") then local py_ver = assert(package:dep("python"):version(), "Can't get python version") py_ver = py_ver:major() .. py_ver:minor() -- TODO: detect numpy sub_libs_map["python"] = { "python" .. py_ver, "numpy" .. py_ver, } end return sub_libs_map end