From 5f08e2786d483eccdc2760451f0fbdb52727ccf1 Mon Sep 17 00:00:00 2001 From: "Tim D. Smith" Date: Mon, 4 May 2015 14:55:14 -0700 Subject: Don't explicitly link libpython on OS X Use -undefined dynamic_lookup to allow Python symbols to be discovered when the ledger module is imported instead of at build time. Without this change, the Python interpreter crashes when ledger is imported from a python that is different from (but compatible with) the python against which the module was built. --- CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index da075cde..6166780c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -225,7 +225,14 @@ macro(add_ledger_library_dependencies _target) target_link_libraries(${_target} ${INTL_LIB}) endif() if (HAVE_BOOST_PYTHON) - target_link_libraries(${_target} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) + if(APPLE) + # Don't link directly to a Python framework on OS X, to avoid segfaults + # when the module is imported from a different interpreter + target_link_libraries(${_target} ${Boost_LIBRARIES}) + set_target_properties(${_target} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") + else() + target_link_libraries(${_target} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES}) + endif() else() target_link_libraries(${_target} ${Boost_LIBRARIES}) endif() -- cgit v1.2.3