1 #include <../../nrnconf.h>
17 #if DARWIN || defined(__linux__)
18 extern const char* path_prefix_to_libnrniv();
20 #error MUSIC dynamic loading not implemented for this architecture.
25 using const_char_ptr =
const char*;
28 const_char_ptr music_path = const_char_ptr{std::getenv(
"NRN_LIBMUSIC_PATH")};
30 Fprintf(stderr,
"No NRN_LIBMUSIC_PATH environment variable for full path to libmusic\n");
41 static bool is_loaded{
false};
49 auto const nrnlib_prefix = []() -> std::string {
50 if (
const char* nrn_home = std::getenv(
"NRNHOME")) {
52 return std::string{nrn_home} +
"/lib/";
55 return path_prefix_to_libnrniv();
59 auto const nrnlib_path = [&](std::string_view middle) {
60 std::string
name{nrnlib_prefix};
61 name.append(neuron::config::shared_library_prefix);
63 name.append(neuron::config::shared_library_suffix);
66 auto const nrnmusic_library = nrnlib_path(
"nrnmusic");
DLFCN_EXPORT void * dlopen(const char *file, int mode)
DLFCN_EXPORT char * dlerror(void)
DLFCN_NOINLINE DLFCN_EXPORT void * dlsym(void *handle, const char *name)
handle_interface< non_owning_identifier< storage > > handle
Non-owning handle to a Mechanism instance.
void(* p_nrnmusic_runtime_phase)()
void(* p_nrnmusic_init)(int *parg, char ***pargv)
void(* p_nrnmusic_terminate)()
void(* p_nrnmusic_injectlist)(void *, double)
HOC interpreter function declarations (included by hocdec.h)
int Fprintf(FILE *stream, const char *fmt, Args... args)