From 92b5e825f82874ba0b303888c709c1c6d0b4b1e6 Mon Sep 17 00:00:00 2001 From: Pooja Babu Date: Thu, 14 Sep 2023 17:19:37 +0200 Subject: [PATCH 1/2] Add linker flags `-undefined dynamic_lookup` to resolve linker errors in macOS --- .../point_neuron/setup/CMakeLists.txt.jinja2 | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 b/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 index 6bd93df1d..048ce8cfa 100644 --- a/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 +++ b/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 @@ -246,15 +246,23 @@ if ( BUILD_SHARED_LIBS ) # When building shared libraries, also create a module for loading at runtime # with the `Install` command. add_library( ${MODULE_NAME}_module MODULE ${MODULE_SOURCES} ) - set_target_properties( ${MODULE_NAME}_module - PROPERTIES - COMPILE_FLAGS "${NEST_CXXFLAGS} -DLTX_MODULE" - LINK_FLAGS "${NEST_LIBS}" - PREFIX "" - OUTPUT_NAME ${MODULE_NAME} ) + if ( APPLE ) + set_target_properties( ${MODULE_NAME}_module + PROPERTIES + COMPILE_FLAGS "${NEST_CXXFLAGS} -DLTX_MODULE" + LINK_FLAGS "${NEST_LIBS} -undefined dynamic_lookup" + PREFIX "" + OUTPUT_NAME ${MODULE_NAME} ) + else () + set_target_properties( ${MODULE_NAME}_module + PROPERTIES + COMPILE_FLAGS "${NEST_CXXFLAGS} -DLTX_MODULE" + LINK_FLAGS "${NEST_LIBS}" + PREFIX "" + OUTPUT_NAME ${MODULE_NAME} ) + endif () install( TARGETS ${MODULE_NAME}_module - DESTINATION ${CMAKE_INSTALL_LIBDIR} - ) + DESTINATION ${CMAKE_INSTALL_LIBDIR} ) endif () message( "" ) From ab59617041d648086eded75f7b34ae767cecc5d1 Mon Sep 17 00:00:00 2001 From: Pooja Babu Date: Mon, 18 Sep 2023 15:43:37 +0200 Subject: [PATCH 2/2] Address review comments --- .../point_neuron/setup/CMakeLists.txt.jinja2 | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 b/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 index 048ce8cfa..496ad7bb8 100644 --- a/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 +++ b/pynestml/codegeneration/resources_nest/point_neuron/setup/CMakeLists.txt.jinja2 @@ -246,21 +246,16 @@ if ( BUILD_SHARED_LIBS ) # When building shared libraries, also create a module for loading at runtime # with the `Install` command. add_library( ${MODULE_NAME}_module MODULE ${MODULE_SOURCES} ) + set(LINKER_FLAGS "${NEST_LIBS}") if ( APPLE ) - set_target_properties( ${MODULE_NAME}_module - PROPERTIES - COMPILE_FLAGS "${NEST_CXXFLAGS} -DLTX_MODULE" - LINK_FLAGS "${NEST_LIBS} -undefined dynamic_lookup" - PREFIX "" - OUTPUT_NAME ${MODULE_NAME} ) - else () - set_target_properties( ${MODULE_NAME}_module - PROPERTIES - COMPILE_FLAGS "${NEST_CXXFLAGS} -DLTX_MODULE" - LINK_FLAGS "${NEST_LIBS}" - PREFIX "" - OUTPUT_NAME ${MODULE_NAME} ) + set(LINKER_FLAGS "${LINKER_FLAGS} -undefined dynamic_lookup") endif () + set_target_properties( ${MODULE_NAME}_module + PROPERTIES + COMPILE_FLAGS "${NEST_CXXFLAGS} -DLTX_MODULE" + LINK_FLAGS "${LINKER_FLAGS}" + PREFIX "" + OUTPUT_NAME ${MODULE_NAME} ) install( TARGETS ${MODULE_NAME}_module DESTINATION ${CMAKE_INSTALL_LIBDIR} ) endif ()