6
6
import os
7
7
import glob
8
8
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
+
9
16
10
17
11
18
if 'CC' in os .environ :
14
21
os .environ ["CC" ] = "gcc"
15
22
print ("Using CC={} (set by setup.py)" .format (os .environ ['CC' ]))
16
23
17
-
18
24
MODULE_DIR = os .path .dirname (os .path .abspath (__file__ ))
25
+ print (MODULE_DIR )
19
26
SRC_DIR = os .path .join (MODULE_DIR , "fidimag" )
20
27
SUNDIALS_DIR = os .path .join (SRC_DIR , "common" , "sundials" )
21
28
NEB_DIR = os .path .join (SRC_DIR , "common" , "neb" )
@@ -113,7 +120,13 @@ def glob_cfiles(path, excludes):
113
120
'sundials_nvecserial' , 'sundials_nvecopenmp' , 'blas' , 'lapack' ]
114
121
115
122
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 )]
117
130
lib_paths = [LIB_DIR ]
118
131
119
132
@@ -122,6 +135,9 @@ def glob_cfiles(path, excludes):
122
135
com_link .append ('-openmp' )
123
136
else :
124
137
com_args .append ('-fopenmp' )
138
+
139
+
140
+
125
141
com_link .append ('-fopenmp' )
126
142
127
143
@@ -140,103 +156,103 @@ def glob_cfiles(path, excludes):
140
156
sources = sources ,
141
157
include_dirs = com_inc ,
142
158
libraries = com_libs ,
143
- library_dirs = lib_paths ,
159
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
144
160
extra_compile_args = com_args ,
145
161
extra_link_args = com_link ,
146
162
),
147
163
Extension ("fidimag.extensions.common_clib" ,
148
164
sources = common_sources ,
149
165
include_dirs = com_inc ,
150
166
libraries = com_libs ,
151
- library_dirs = lib_paths ,
167
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
152
168
extra_compile_args = com_args ,
153
169
extra_link_args = com_link ,
154
170
),
155
171
Extension ("fidimag.extensions.cvode" ,
156
172
sources = cvode_sources ,
157
173
include_dirs = com_inc ,
158
174
libraries = com_libs ,
159
- library_dirs = lib_paths ,
175
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
160
176
extra_compile_args = com_args ,
161
177
extra_link_args = com_link ,
162
178
),
163
179
Extension ("fidimag.extensions.baryakhtar_clib" ,
164
180
sources = baryakhtar_sources ,
165
181
include_dirs = com_inc ,
166
182
libraries = com_libs ,
167
- library_dirs = lib_paths ,
183
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
168
184
extra_compile_args = com_args ,
169
185
extra_link_args = com_link ,
170
186
),
171
187
Extension ("fidimag.extensions.micro_clib" ,
172
188
sources = micro_sources ,
173
189
include_dirs = com_inc ,
174
190
libraries = com_libs ,
175
- library_dirs = lib_paths ,
191
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
176
192
extra_compile_args = com_args ,
177
193
extra_link_args = com_link ,
178
194
),
179
195
Extension ("fidimag.extensions.nebm_clib" ,
180
196
sources = nebm_sources ,
181
197
include_dirs = com_inc ,
182
198
libraries = com_libs ,
183
- library_dirs = lib_paths ,
199
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
184
200
extra_compile_args = com_args ,
185
201
extra_link_args = com_link ,
186
202
),
187
203
Extension ("fidimag.extensions.nebm_spherical_clib" ,
188
204
sources = nebm_spherical_sources ,
189
205
include_dirs = com_inc ,
190
206
libraries = com_libs ,
191
- library_dirs = lib_paths ,
207
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
192
208
extra_compile_args = com_args ,
193
209
extra_link_args = com_link ,
194
210
),
195
211
Extension ("fidimag.extensions.nebm_geodesic_clib" ,
196
212
sources = nebm_geodesic_sources ,
197
213
include_dirs = com_inc ,
198
214
libraries = com_libs ,
199
- library_dirs = lib_paths ,
215
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
200
216
extra_compile_args = com_args ,
201
217
extra_link_args = com_link ,
202
218
),
203
219
Extension ("fidimag.extensions.nebm_cartesian_clib" ,
204
220
sources = nebm_cartesian_sources ,
205
221
include_dirs = com_inc ,
206
222
libraries = com_libs ,
207
- library_dirs = lib_paths ,
223
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
208
224
extra_compile_args = com_args ,
209
225
extra_link_args = com_link ,
210
226
),
211
227
Extension ("fidimag.extensions.cvode" ,
212
228
sources = cvode_sources ,
213
229
include_dirs = com_inc ,
214
230
libraries = com_libs ,
215
- library_dirs = lib_paths ,
231
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
216
232
extra_compile_args = com_args ,
217
233
extra_link_args = com_link ,
218
234
),
219
235
Extension ("fidimag.extensions.baryakhtar_clib" ,
220
236
sources = baryakhtar_sources ,
221
237
include_dirs = com_inc ,
222
238
libraries = com_libs ,
223
- library_dirs = lib_paths ,
239
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
224
240
extra_compile_args = com_args ,
225
241
extra_link_args = com_link ,
226
242
),
227
243
Extension ("fidimag.extensions.micro_clib" ,
228
244
sources = micro_sources ,
229
245
include_dirs = com_inc ,
230
246
libraries = com_libs ,
231
- library_dirs = lib_paths ,
247
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
232
248
extra_compile_args = com_args ,
233
249
extra_link_args = com_link ,
234
250
),
235
251
Extension ("fidimag.extensions.dipolar" ,
236
252
sources = dipolar_sources ,
237
253
include_dirs = com_inc ,
238
254
libraries = com_libs ,
239
- library_dirs = lib_paths ,
255
+ library_dirs = lib_paths , runtime_library_dirs = lib_paths ,
240
256
extra_compile_args = com_args ,
241
257
extra_link_args = com_link ,
242
258
),
@@ -254,4 +270,3 @@ def glob_cfiles(path, excludes):
254
270
],
255
271
ext_modules = cythonize (ext_modules ),
256
272
)
257
-
0 commit comments