Skip to content

Commit 8ba32ca

Browse files
authored
Merge pull request #99 from computationalmodelling/test_setup_rpath_linux_osx
Add rpath info to setup.py
2 parents d8a7041 + f41f0fc commit 8ba32ca

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

setup.py

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
import os
77
import glob
88
import re
9+
import sys
10+
11+
#if sys.platform == 'darwin':
12+
# from distutils import sysconfig
13+
# vars = sysconfig.get_config_vars()
14+
# vars['LDSHARED'] = vars['LDSHARED'].replace('-bundle', '-dynamiclib')
15+
916

1017

1118
if 'CC' in os.environ:
@@ -14,8 +21,8 @@
1421
os.environ["CC"] = "gcc"
1522
print("Using CC={} (set by setup.py)".format(os.environ['CC']))
1623

17-
1824
MODULE_DIR = os.path.dirname(os.path.abspath(__file__))
25+
print(MODULE_DIR)
1926
SRC_DIR = os.path.join(MODULE_DIR, "fidimag")
2027
SUNDIALS_DIR = os.path.join(SRC_DIR, "common", "sundials")
2128
NEB_DIR = os.path.join(SRC_DIR, "common", "neb")
@@ -113,7 +120,13 @@ def glob_cfiles(path, excludes):
113120
'sundials_nvecserial', 'sundials_nvecopenmp', 'blas', 'lapack']
114121

115122
com_args = ['-std=c99', '-O3']
116-
com_link = []
123+
# rpath is the path relative to the compiled shared object files (e.g. clib.so, etc)
124+
# which the dynamic linker looks for the linked libraries (e.g. libsundials_*.so) in.
125+
# We need to set it relatively in order for it to be preserved if the parent directory is moved
126+
# hence why it is a 'relative'(r) path. Here the relative path is with respect to
127+
# the fidimag/fidimag/extensions directory.
128+
RPATH = '../../local/lib'
129+
com_link = ['-Wl,-rpath,{}'.format(LIB_DIR)]
117130
lib_paths = [LIB_DIR]
118131

119132

@@ -122,6 +135,9 @@ def glob_cfiles(path, excludes):
122135
com_link.append('-openmp')
123136
else:
124137
com_args.append('-fopenmp')
138+
139+
140+
125141
com_link.append('-fopenmp')
126142

127143

@@ -140,103 +156,103 @@ def glob_cfiles(path, excludes):
140156
sources=sources,
141157
include_dirs=com_inc,
142158
libraries=com_libs,
143-
library_dirs=lib_paths,
159+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
144160
extra_compile_args=com_args,
145161
extra_link_args=com_link,
146162
),
147163
Extension("fidimag.extensions.common_clib",
148164
sources=common_sources,
149165
include_dirs=com_inc,
150166
libraries=com_libs,
151-
library_dirs=lib_paths,
167+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
152168
extra_compile_args=com_args,
153169
extra_link_args=com_link,
154170
),
155171
Extension("fidimag.extensions.cvode",
156172
sources=cvode_sources,
157173
include_dirs=com_inc,
158174
libraries=com_libs,
159-
library_dirs=lib_paths,
175+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
160176
extra_compile_args=com_args,
161177
extra_link_args=com_link,
162178
),
163179
Extension("fidimag.extensions.baryakhtar_clib",
164180
sources=baryakhtar_sources,
165181
include_dirs=com_inc,
166182
libraries=com_libs,
167-
library_dirs=lib_paths,
183+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
168184
extra_compile_args=com_args,
169185
extra_link_args=com_link,
170186
),
171187
Extension("fidimag.extensions.micro_clib",
172188
sources=micro_sources,
173189
include_dirs=com_inc,
174190
libraries=com_libs,
175-
library_dirs=lib_paths,
191+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
176192
extra_compile_args=com_args,
177193
extra_link_args=com_link,
178194
),
179195
Extension("fidimag.extensions.nebm_clib",
180196
sources=nebm_sources,
181197
include_dirs=com_inc,
182198
libraries=com_libs,
183-
library_dirs=lib_paths,
199+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
184200
extra_compile_args=com_args,
185201
extra_link_args=com_link,
186202
),
187203
Extension("fidimag.extensions.nebm_spherical_clib",
188204
sources=nebm_spherical_sources,
189205
include_dirs=com_inc,
190206
libraries=com_libs,
191-
library_dirs=lib_paths,
207+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
192208
extra_compile_args=com_args,
193209
extra_link_args=com_link,
194210
),
195211
Extension("fidimag.extensions.nebm_geodesic_clib",
196212
sources=nebm_geodesic_sources,
197213
include_dirs=com_inc,
198214
libraries=com_libs,
199-
library_dirs=lib_paths,
215+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
200216
extra_compile_args=com_args,
201217
extra_link_args=com_link,
202218
),
203219
Extension("fidimag.extensions.nebm_cartesian_clib",
204220
sources=nebm_cartesian_sources,
205221
include_dirs=com_inc,
206222
libraries=com_libs,
207-
library_dirs=lib_paths,
223+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
208224
extra_compile_args=com_args,
209225
extra_link_args=com_link,
210226
),
211227
Extension("fidimag.extensions.cvode",
212228
sources=cvode_sources,
213229
include_dirs=com_inc,
214230
libraries=com_libs,
215-
library_dirs=lib_paths,
231+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
216232
extra_compile_args=com_args,
217233
extra_link_args=com_link,
218234
),
219235
Extension("fidimag.extensions.baryakhtar_clib",
220236
sources=baryakhtar_sources,
221237
include_dirs=com_inc,
222238
libraries=com_libs,
223-
library_dirs=lib_paths,
239+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
224240
extra_compile_args=com_args,
225241
extra_link_args=com_link,
226242
),
227243
Extension("fidimag.extensions.micro_clib",
228244
sources=micro_sources,
229245
include_dirs=com_inc,
230246
libraries=com_libs,
231-
library_dirs=lib_paths,
247+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
232248
extra_compile_args=com_args,
233249
extra_link_args=com_link,
234250
),
235251
Extension("fidimag.extensions.dipolar",
236252
sources=dipolar_sources,
237253
include_dirs=com_inc,
238254
libraries=com_libs,
239-
library_dirs=lib_paths,
255+
library_dirs=lib_paths, runtime_library_dirs=lib_paths,
240256
extra_compile_args=com_args,
241257
extra_link_args=com_link,
242258
),
@@ -254,4 +270,3 @@ def glob_cfiles(path, excludes):
254270
],
255271
ext_modules=cythonize(ext_modules),
256272
)
257-

0 commit comments

Comments
 (0)