From 95e0da1fffa6a58c8185fd9ec83a06924361133e Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Tue, 23 Mar 2021 02:48:14 +0100 Subject: [PATCH] move some more stuff, don't use both_libraries() in meson --- meson.build | 2 +- src/cs_state.cc | 59 +++++++++++++++++++++++++++++++++++++++++ src/cubescript.cc | 67 ----------------------------------------------- src/meson.build | 10 +++---- 4 files changed, 63 insertions(+), 75 deletions(-) diff --git a/meson.build b/meson.build index 17e6a30..27557b5 100644 --- a/meson.build +++ b/meson.build @@ -32,7 +32,7 @@ subdir('tools') pkg = import('pkgconfig') pkg.generate( - libraries: libcubescript_lib, + libraries: libcubescript_target, version: meson.project_version(), name: 'libcubescript', filebase: 'libcubescript', diff --git a/src/cs_state.cc b/src/cs_state.cc index dba595f..01d1571 100644 --- a/src/cs_state.cc +++ b/src/cs_state.cc @@ -175,6 +175,65 @@ cs_state::cs_state(cs_alloc_cb func, void *data): cs_init_lib_base(*this); } +LIBCUBESCRIPT_EXPORT cs_state::~cs_state() { + destroy(); +} + +LIBCUBESCRIPT_EXPORT void cs_state::destroy() { + if (!p_state || !p_owner) { + return; + } + for (auto &p: p_state->idents) { + cs_ident *i = p.second; + cs_alias *a = i->get_alias(); + if (a) { + a->get_value().force_none(); + static_cast(a)->clean_code(); + } + p_state->destroy(i->p_impl); + } + p_state->destroy(static_cast(p_errbuf)); + p_state->destroy(p_state); +} + +cs_state::cs_state(cs_shared_state *s): + p_state(s), p_owner(false) +{} + +LIBCUBESCRIPT_EXPORT cs_state cs_state::new_thread() { + return cs_state{p_state}; +} + +LIBCUBESCRIPT_EXPORT cs_hook_cb cs_state::set_call_hook(cs_hook_cb func) { + auto hk = std::move(p_callhook); + p_callhook = std::move(func); + return hk; +} + +LIBCUBESCRIPT_EXPORT cs_hook_cb const &cs_state::get_call_hook() const { + return p_callhook; +} + +LIBCUBESCRIPT_EXPORT cs_hook_cb &cs_state::get_call_hook() { + return p_callhook; +} + +LIBCUBESCRIPT_EXPORT cs_vprint_cb cs_state::set_var_printer( + cs_vprint_cb func +) { + auto fn = std::move(p_state->varprintf); + p_state->varprintf = std::move(func); + return fn; +} + +LIBCUBESCRIPT_EXPORT cs_vprint_cb const &cs_state::get_var_printer() const { + return p_state->varprintf; +} + +LIBCUBESCRIPT_EXPORT void *cs_state::alloc(void *ptr, size_t os, size_t ns) { + return p_state->alloc(ptr, os, ns); +} + LIBCUBESCRIPT_EXPORT void cs_state::init_libs(int libs) { if (libs & CS_LIB_MATH) { cs_init_lib_math(*this); diff --git a/src/cubescript.cc b/src/cubescript.cc index a1e2685..0d86c76 100644 --- a/src/cubescript.cc +++ b/src/cubescript.cc @@ -20,73 +20,6 @@ bool cs_check_num(std::string_view s) { } } -void cs_init_lib_base(cs_state &cs); - -static void *cs_default_alloc(void *, void *p, size_t, size_t ns) { - if (!ns) { - std::free(p); - return nullptr; - } - return std::realloc(p, ns); -} - -LIBCUBESCRIPT_EXPORT cs_state::~cs_state() { - destroy(); -} - -LIBCUBESCRIPT_EXPORT void cs_state::destroy() { - if (!p_state || !p_owner) { - return; - } - for (auto &p: p_state->idents) { - cs_ident *i = p.second; - cs_alias *a = i->get_alias(); - if (a) { - a->get_value().force_none(); - static_cast(a)->clean_code(); - } - p_state->destroy(i->p_impl); - } - p_state->destroy(static_cast(p_errbuf)); - p_state->destroy(p_state); -} - -cs_state::cs_state(cs_shared_state *s): - p_state(s), p_owner(false) -{} - -LIBCUBESCRIPT_EXPORT cs_state cs_state::new_thread() { - return cs_state{p_state}; -} - -LIBCUBESCRIPT_EXPORT cs_hook_cb cs_state::set_call_hook(cs_hook_cb func) { - auto hk = std::move(p_callhook); - p_callhook = std::move(func); - return hk; -} - -LIBCUBESCRIPT_EXPORT cs_hook_cb const &cs_state::get_call_hook() const { - return p_callhook; -} - -LIBCUBESCRIPT_EXPORT cs_hook_cb &cs_state::get_call_hook() { - return p_callhook; -} - -LIBCUBESCRIPT_EXPORT cs_vprint_cb cs_state::set_var_printer(cs_vprint_cb func) { - auto fn = std::move(p_state->varprintf); - p_state->varprintf = std::move(func); - return fn; -} - -LIBCUBESCRIPT_EXPORT cs_vprint_cb const &cs_state::get_var_printer() const { - return p_state->varprintf; -} - -LIBCUBESCRIPT_EXPORT void *cs_state::alloc(void *ptr, size_t os, size_t ns) { - return p_state->alloc(ptr, os, ns); -} - LIBCUBESCRIPT_EXPORT void cs_state::clear_override(cs_ident &id) { if (!(id.get_flags() & CS_IDF_OVERRIDDEN)) { return; diff --git a/src/meson.build b/src/meson.build index 855a2c5..cfcccca 100644 --- a/src/meson.build +++ b/src/meson.build @@ -21,22 +21,18 @@ libcubescript_src = [ 'lib_str.cc' ] -libcubescript_lib = both_libraries('cubescript', +libcubescript_target = library('cubescript', libcubescript_src, include_directories: libcubescript_includes + [include_directories('.')], cpp_args: extra_cxxflags, install: true, + pic: true, version: meson.project_version() ) libcubescript = declare_dependency( include_directories: libcubescript_includes, - link_with: libcubescript_lib.get_shared_lib() -) - -libcubescript_static = declare_dependency( - include_directories: libcubescript_includes, - link_with: libcubescript_lib.get_static_lib() + link_with: libcubescript_target ) install_headers(libcubescript_header_src, install_dir: dir_package_include)