From 47cdf50caa16f1b5e361ba08126a0f16a234d3d6 Mon Sep 17 00:00:00 2001
From: "Ankur Sinha (Ankur Sinha Gmail)" <sanjay.ankur@gmail.com>
Date: Tue, 9 Feb 2021 09:28:06 +0000
Subject: [PATCH 07/11] Remove rpaths
---
CMakeLists.txt | 23 +++++----
bin/nrnivmodl_makefile_cmake.in | 4 +-
setup.py | 84 ++++++++++++---------------------
src/nrnpython/setup.py.in | 6 +--
4 files changed, 46 insertions(+), 71 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 114a756a1..880ccae72 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -748,18 +748,17 @@ add_dependencies(nrniv_lib hh_update)
# Generate help_data.dat
# =============================================================================
if(NRN_ENABLE_PYTHON)
- add_custom_target(
- help_data_dat
- COMMAND
- ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/docs/parse_rst.py ${PROJECT_SOURCE_DIR}/docs/python
- ${PROJECT_SOURCE_DIR}/share/lib/python/neuron/help_data.dat
- COMMAND
- ${CMAKE_COMMAND} -E copy_if_different
- ${PROJECT_SOURCE_DIR}/share/lib/python/neuron/help_data.dat
- ${PROJECT_BINARY_DIR}/lib/python/neuron/help_data.dat
- COMMENT "Generating help_data.dat"
- VERBATIM)
- add_dependencies(nrniv_lib help_data_dat)
+ add_custom_target(
+ help_data_dat
+ COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/docs/parse_rst.py
+ ${PROJECT_SOURCE_DIR}/docs/python
+ ${PROJECT_SOURCE_DIR}/share/lib/python/neuron/help_data.dat
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${PROJECT_SOURCE_DIR}/share/lib/python/neuron/help_data.dat
+ ${PROJECT_SOURCE_DIR}/nrnpython/help_data.dat
+ COMMENT "Generating help_data.dat"
+ VERBATIM)
+ add_dependencies(nrniv_lib help_data_dat)
endif()
# =============================================================================
diff --git a/bin/nrnivmodl_makefile_cmake.in b/bin/nrnivmodl_makefile_cmake.in
index 9d37fbaf4..5c9734916 100644
--- a/bin/nrnivmodl_makefile_cmake.in
+++ b/bin/nrnivmodl_makefile_cmake.in
@@ -123,14 +123,14 @@ C_GREEN := \033[32m
special: $(mech_lib)
@printf " => $(C_GREEN)LINKING$(C_RESET) executable $(special) LDFLAGS are: $(LDFLAGS)\n"
$(CXX_LINK_EXE) -I $(incdir) -I $(incdir)/nrncvode -DAUTO_DLOPEN_NRNMECH=0 $(datadir)/nrnmain.cpp -o $(special) \
- -L $(OBJS_DIR) -l$(mech_libname) $(NRNLIB_FLAGS) -l$(mech_libname) $(extra_lib_link) -Wl,-rpath,'$(DESTDIR_RPATH)' -Wl,-rpath,$(libdir) $(LDFLAGS) $(EXTRA_LDFLAGS)
+ -L $(OBJS_DIR) -l$(mech_libname) $(NRNLIB_FLAGS) -l$(mech_libname) $(extra_lib_link) $(LDFLAGS) $(EXTRA_LDFLAGS)
$(mech_lib): $(mech_lib_type)
mech_lib_shared: mod_func.o $(mod_objs) $(nrn_lib) build_always
@printf " => $(C_GREEN)LINKING$(C_RESET) shared library $(mech_lib)\n"
$(CXX_LINK_SHARED) -I $(incdir) -o ${mech_lib} ${_SONAME} \
- $(mod_func_o) $(mod_objs) $(NRNLIB_FLAGS) $(NRNLIB_RPATH_FLAGS) $(LDFLAGS)
+ $(mod_func_o) $(mod_objs) $(c_objs) $(NRNLIB_FLAGS) $(LDFLAGS)
rm -f $(OBJS_DIR)/.libs/libnrnmech.so ; mkdir -p $(OBJS_DIR)/.libs ; cp $(mech_lib) $(OBJS_DIR)/.libs/libnrnmech.so
mech_lib_static: mod_func.o $(mod_objs) $(nrn_lib) build_always
diff --git a/setup.py b/setup.py
index 1debdcc72..ec849ac9e 100644
--- a/setup.py
+++ b/setup.py
@@ -344,48 +344,32 @@ def setup_package():
libraries=["nrniv", "nrnpython{}".format(sys.version_info[0])],
)
- extensions = [
- CMakeAugmentedExtension(
- "neuron.hoc",
- ["src/nrnpython/inithoc.cpp"],
- cmake_collect_dirs=NRN_COLLECT_DIRS,
- cmake_flags=[
- "-DNRN_ENABLE_CORENEURON=" + ("ON" if Components.CORENRN else "OFF"),
- "-DNRN_ENABLE_INTERVIEWS=" + ("ON" if Components.IV else "OFF"),
- "-DIV_ENABLE_X11_DYNAMIC=" + ("ON" if Components.IV else "OFF"),
- "-DNRN_ENABLE_RX3D=OFF", # Never build within CMake
- "-DNRN_ENABLE_MPI=" + ("ON" if Components.MPI else "OFF"),
- "-DNRN_ENABLE_MPI_DYNAMIC=" + ("ON" if Components.MPI else "OFF"),
- "-DNRN_ENABLE_PYTHON_DYNAMIC=ON",
- "-DNRN_ENABLE_MODULE_INSTALL=OFF",
- "-DNRN_ENABLE_REL_RPATH=ON",
- "-DLINK_AGAINST_PYTHON=OFF",
- "-DCMAKE_VERBOSE_MAKEFILE=OFF",
- "-DCORENRN_ENABLE_OPENMP=ON", # TODO: manylinux portability questions
- ]
- + (
- [
- "-DCORENRN_ENABLE_GPU=ON",
- "-DCMAKE_C_COMPILER=nvc", # use nvc and nvc++ for GPU support
- "-DCMAKE_CXX_COMPILER=nvc++",
- "-DCMAKE_CUDA_COMPILER=nvcc",
- ]
- if Components.GPU
- else []
- ),
- include_dirs=[
- "src",
- "src/oc",
- "src/nrnpython",
- "src/nrnmpi",
- ],
- extra_link_args=[
- # use relative rpath to .data/lib
- "-Wl,-rpath,{}".format(REL_RPATH + "/.data/lib/")
- ],
- **extension_common_params,
- )
- ]
+ extensions = [CMakeAugmentedExtension(
+ "neuron.hoc",
+ ["src/nrnpython/inithoc.cpp"],
+ cmake_collect_dirs=NRN_COLLECT_DIRS,
+ cmake_flags=[
+ '-DNRN_ENABLE_CORENEURON=OFF',
+ '-DNRN_ENABLE_INTERVIEWS=' + ("ON" if Components.IV else "OFF"),
+ '-DIV_ENABLE_X11_DYNAMIC=' + ("ON" if Components.IV else "OFF"),
+ '-DNRN_ENABLE_RX3D=OFF', # Never build within CMake
+ '-DNRN_ENABLE_MPI=' + ("ON" if Components.MPI else "OFF"),
+ '-DNRN_ENABLE_MPI_DYNAMIC=' + ("ON" if Components.MPI else "OFF"),
+ '-DNRN_ENABLE_PYTHON_DYNAMIC=ON',
+ '-DNRN_ENABLE_MODULE_INSTALL=OFF',
+ '-DNRN_ENABLE_REL_RPATH=ON',
+ '-DLINK_AGAINST_PYTHON=OFF',
+ ],
+ include_dirs=[
+ "src",
+ "src/oc",
+ "src/nrnpython",
+ "src/nrnmpi",
+ ],
+ extra_link_args=[
+ ],
+ **extension_common_params
+ )]
if Components.RX3D:
include_dirs = ["share/lib/python/neuron/rxd/geometry3d", numpy.get_include()]
@@ -394,17 +378,11 @@ def setup_package():
# But pay the price if uploading distribution
extra_compile_args = ["-O2" if "NRN_BUILD_FOR_UPLOAD" in os.environ else "-O0"]
rxd_params = extension_common_params.copy()
- rxd_params["libraries"].append("rxdmath")
- rxd_params.update(
- dict(
- # Cython files take a long time to compile with O2 but this
- # is a distribution...
- extra_compile_args=extra_compile_args,
- extra_link_args=[
- "-Wl,-rpath,{}".format(REL_RPATH + "/../../.data/lib/")
- ],
- )
- )
+ rxd_params['libraries'].append("rxdmath")
+ rxd_params.update(dict(
+ extra_compile_args=[], # cython files take too long to compile with O3
+ extra_link_args=[]
+ ))
log.info("RX3D compile flags %s" % str(rxd_params))
diff --git a/src/nrnpython/setup.py.in b/src/nrnpython/setup.py.in
index 0c8f325a9..d2b1007b6 100644
--- a/src/nrnpython/setup.py.in
+++ b/src/nrnpython/setup.py.in
@@ -122,10 +122,7 @@ libdirs = [destdir + get_escaped_path("@NRN_LIBDIR@"),
# prepare rpath flags for neuron and iv libs directories
rpath_prefix_flag='-Wl,-R'
-extra_link_args = [@NRN_LINK_FLAGS_COMMA_SEPARATED_STRINGS@]
-@MAC_DARWIN_FALSE@extra_link_args += [rpath_prefix_flag+lib_path for lib_path in libdirs]
-@MAC_DARWIN_TRUE@extra_link_args.append("-Wl,-rpath,@loader_path/../../")
-@MAC_DARWIN_TRUE@extra_link_args.append("-Wl,-rpath,%s" % ivlibdir)
+extra_rpath_flags = []
# as neuron module will be built during make, add build/lib
# directory for linking. Note that build/lib shouldn't be
@@ -144,6 +141,7 @@ if "@IVHINES@" != "":
libs.append("@IVHINES@")
extra_compile_args = [@NRN_COMPILE_FLAGS_COMMA_SEPARATED_STRINGS@]
+extra_link_args = []
if using_pgi:
extra_link_args.append(pgi_compiler_flags)
--
2.39.1