summaryrefslogtreecommitdiff
path: root/sci-libs/adolc/files/adolc-2.7.2-swig-python-configure.patch
blob: c434f65568366ed431ed81c1b2145afeb14b2df5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
https://bugs.gentoo.org/730750
https://github.com/coin-or/ADOL-C/commit/8b53408d08f41ddaba2dea5655d332b13fc4c78b.patch
https://github.com/coin-or/ADOL-C/commit/06b3b665fc0253ee17f0208bd06cdc130e103741.patch
https://github.com/coin-or/ADOL-C/commit/25a69c486829ddaa19c115afc05cb7cf3b4e2410.patch
https://github.com/coin-or/ADOL-C/commit/e41d32ba6dab09a3e58b22f1f042e49cd5ee917f.patch
https://github.com/coin-or/ADOL-C/commit/0787a350cc181192cfd203b0f75941bcbd9c3e3a.patch
https://github.com/coin-or/ADOL-C/commit/0b3dd1747f90f68b17dc5f1bd3a5d898e3bc77fb.patch
----
From e41d32ba6dab09a3e58b22f1f042e49cd5ee917f Mon Sep 17 00:00:00 2001
From: Andrea Walther <walthand@math55020.mathematik.hu-berlin.de>
Date: Tue, 22 Sep 2020 10:47:27 +0200
Subject: [PATCH] fix prefix and provide --enable-python

---
 configure.ac | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 6c2c88f9..b6aaeaa7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -71,6 +71,17 @@ if test x"${adolc_medipack_support}" = xyes ; then
 AC_DEFINE(ADOLC_MEDIPACK_SUPPORT,1,[defined if MeDiPack support is to be compiled in])
 fi
 
+
+AC_MSG_CHECKING(whether to build ADOL-C with python/swig support)
+AC_ARG_ENABLE(python,
+              [AS_HELP_STRING([--enable-python],[build ADOL-C with python/swig support [default=disabled]])],
+	      [adolc_python_support=$enableval],[adolc_python_support=no])
+AC_MSG_RESULT($adolc_python_support)
+AM_CONDITIONAL(BUILD_ADOLC_python_SUPPORT,[test x${adolc_python_support} = xyes])
+if test x"${adolc_python_support}" = xyes ; then
+AC_DEFINE(ADOLC_python_SUPPORT,1,[defined if python/swig support is to be compiled in])
+fi
+
 LT_PREREQ([2.2.6])
 # checks for programs
 AC_PROG_CXX
@@ -651,6 +662,10 @@ if test x$sparse = xyes && test x$have_colpack = xno; then
   Only sparsity patterns can be computed\033@<:@0m"
     warn=true
 fi
+echo \
+"  Build with python:		      ${adolc_python_support}"
+
+if test x$adolc_python_support = xyes ; then
 if test x$sparse = xyes && test x$python_found = xyes && test x$SWIG != xno; then
    echo \
 "  Build with python swig module:      yes"
@@ -660,7 +675,7 @@ else
    if test x$sparse = xno && test x$python_found = xyes && test x$SWIG != xno; then
      echo \
 "(due to sparse drivers disabled)"
-  elif test x$sparse = xyes && ( $test x$python_found = xno || test x$SWIG = xno ); then
+  elif test x$sparse = xyes && ( test x$python_found = xno || test x$SWIG = xno ); then
      echo \
 "(due to python/swig missing)"
   else
@@ -668,6 +683,8 @@ else
 "(due to sparse drivers disabled and python/swig missing)"
   fi
 fi
+fi
+
 echo
 
 echo \
From 8b53408d08f41ddaba2dea5655d332b13fc4c78b Mon Sep 17 00:00:00 2001
From: Kshitij Kulshreshtha <kkhere.geo@gmail.com>
Date: Tue, 31 Mar 2020 22:42:23 +0200
Subject: [PATCH] Fix out-of-tree build for swig

---
 ADOL-C/swig/Makefile.am    |  4 +--
 ADOL-C/swig/setup.py       | 65 +++++++++++++++++++++++++++-----------
 ADOL-C/swig/swigprocess.py | 34 +++++++++++---------
 Makefile.am                |  3 +-
 configure.ac               |  6 ++++
 5 files changed, 75 insertions(+), 37 deletions(-)

diff --git a/ADOL-C/swig/Makefile.am b/ADOL-C/swig/Makefile.am
index 04a52cd0..b1d5569b 100644
--- a/ADOL-C/swig/Makefile.am
+++ b/ADOL-C/swig/Makefile.am
@@ -12,7 +12,7 @@
 
 ACLOCAL_AMFLAGS = -I autoconf
 
-EXTRA_DIST = swigprocess.py adolc-r.i adolc-python.i adubswigfuncs.h adolc_all_in.hpp matrixmemory.hpp pyedfclasses.hpp
+EXTRA_DIST = swigprocess.py adolc-r.i adolc-python.i adubswigfuncs.hpp adolc_all_in.hpp matrixmemory.hpp pyedfclasses.hpp
 
 clean-local:
 	-rm -rf python R *.cpp *.cxx *.o *.h include
@@ -20,6 +20,6 @@ clean-local:
 if PYTHONFOUND
 if SPARSE
 install:
-	CXX=${CXX} ${PYTHON} setup.py install --prefix=${prefix} --only-swig
+	CXX=${CXX} ${PYTHON} ${srcdir}/setup.py build --only-swig --lib-prefix=${prefix} @python_srcbase@ install --prefix=${prefix}
 endif
 endif
diff --git a/ADOL-C/swig/setup.py b/ADOL-C/swig/setup.py
index 7a9a25c4..5bd98c3a 100644
--- a/ADOL-C/swig/setup.py
+++ b/ADOL-C/swig/setup.py
@@ -11,6 +11,10 @@
 ##############################################################################
 
 from __future__ import print_function
+import sys, os
+
+sys.path = [ os.path.dirname(os.path.abspath(__file__)) ] + sys.path
+
 from swigprocess import prepare_flat_header
 from numpy.distutils import misc_util as np_dist
 from distutils.core import setup, Extension
@@ -18,7 +22,6 @@
 from distutils.command.build_ext import build_ext
 from distutils.command.build import build
 from distutils.command.install import install
-import os
 import subprocess
 
 def compile_dynlib(prefix,colpackdir,boostdir):
@@ -88,14 +91,34 @@ def finalize_options(self):
         prefix = self.lib_prefix
         print('prefix = ', prefix)
         self.include_dirs.append(os.path.join(prefix,'include'))
-        self.library_dirs.append(os.path.join(prefix,'lib64'))
-        self.rpath.append(os.path.join(prefix,'lib64'))
-        prepare_flat_header()
+        import ctypes as c
+        plen = c.sizeof(c.c_void_p(0))
+        if plen == 8:
+            self.library_dirs.append(os.path.join(prefix,'lib64'))
+            self.rpath.append(os.path.join(prefix,'lib64'))
+        else:
+            self.library_dirs.append(os.path.join(prefix,'lib'))
+            self.rpath.append(os.path.join(prefix,'lib'))
+        buildobj = self.get_finalized_command('build')
+        self.src = buildobj.src
+        prepare_flat_header(self.src)
+        self.swig_opts = ['-c++', '-I' + self.src]
+        self.finalized = 1
 
+    def build_extension(self, ext):
+        if self.src != '.':
+            import shutil
+            sources = ext.sources
+            newSrc = []
+            for s in iter(sources):
+                shutil.copy(self.src + '/' + s, '.')
+            ext.include_dirs.append(self.src)
+        super(build_swigadolc,self).build_extension(ext)
 
 class buildthis(build,object):
     command_name = 'build'
     user_options = build.user_options + [
+        ('src=', None, 'path of the source directory of swig module'),
         ('lib-prefix=', None, 'prefix to install adolc library'),
         ('colpack-dir=', None, 'directory in which colpack is installed'),
         ('boost-dir=', None, 'directory in which boost is installed'),
@@ -111,11 +134,26 @@ def lib_doesnot_exist(self):
 
     def initialize_options(self):
         super(buildthis,self).initialize_options()
+        self.src = None
         self.lib_prefix = None
         self.colpack_dir = None
         self.boost_dir = None
         self.only_swig = None
 
+    def finalize_options(self):
+        super(buildthis,self).finalize_options()
+        if self.src is None:
+            self.src = '.'
+        if self.lib_prefix is None:
+            self.lib_prefix = os.path.join(os.environ['HOME'],'adolc_base')
+        if self.colpack_dir is None:
+            self.colpack_dir = os.path.join(os.environ['HOME'],'adolc_base')
+        if self.boost_dir is None:
+            self.boost_dir = '/usr'
+        if self.only_swig is None:
+            self.only_swig = False
+        self.finalized = 1
+
     #sub_commands = [ ('build_lib', lib_doesnot_exist),
     #                 ('build_ext', None) ]
     sub_commands = [ ('build_lib', None),
@@ -137,22 +175,13 @@ def initialize_options(self):
         super(installthis,self).initialize_options()
 
     def finalize_options(self):
+        self.set_undefined_options('build',
+                                   ('lib_prefix','lib_prefix'),
+                                   ('colpack_dir', 'colpack_dir'),
+                                   ('boost_dir', 'boost_dir'),
+                                   ('only_swig', 'only_swig'))
         super(installthis,self).finalize_options()
-        if self.lib_prefix is None:
-            self.lib_prefix = os.path.join(os.environ['HOME'],'adolc_base')
-        if self.colpack_dir is None:
-            self.colpack_dir = os.path.join(os.environ['HOME'],'adolc_base')
-        if self.boost_dir is None:
-            self.boost_dir = '/usr'
-        if self.only_swig is None:
-            self.only_swig = False
         self.finalized = 1
-        buildobj = self.distribution.get_command_obj('build')
-        buildobj.set_undefined_options('install',
-                                       ('lib_prefix','lib_prefix'),
-                                       ('colpack_dir', 'colpack_dir'),
-                                       ('boost_dir', 'boost_dir'),
-                                       ('only_swig', 'only_swig'))
         
 incdirs = np_dist.get_numpy_include_dirs()
 #python_ldflags = subprocess.check_output(['python-config','--ldflags'],universal_newlines=True)
diff --git a/ADOL-C/swig/swigprocess.py b/ADOL-C/swig/swigprocess.py
index bd5fe03d..f9de5551 100644
--- a/ADOL-C/swig/swigprocess.py
+++ b/ADOL-C/swig/swigprocess.py
@@ -10,6 +10,7 @@
 ## 
 ##############################################################################
 
+from __future__ import print_function
 import re
 import os.path
 import sys
@@ -191,22 +192,25 @@ def finalClean(headfile,outfiles):
     for f in glob.glob('*.o'):
         os.remove(f)
 
-def prepare_flat_header():
-    sys.path = [ os.getcwd() ] + sys.path
-    p = os.getcwd() + '/../include/adolc'
-    for (dp, dn, fn) in os.walk(p):
-        ndp = re.sub(r'\.\./',r'',dp)
-        for f in iter(fn):
-            lines = readFile(dp + "/" + f)
-            lines = comment_all_includes(lines)
-            lines = uncomment_local_includes(lines)
-            try:
-                os.makedirs(ndp)
-            except:
-                pass
-            writeOutput(lines, ndp + "/" + f)
+def prepare_flat_header(src_base='.'):
+    pl = [ os.getcwd() + '/../include/adolc' ]
+    print('src_base = ', src_base)
+    if src_base != '.':
+        pl = [ src_base + '/../include/adolc' ] + pl
+    for p in iter(pl):
+        for (dp, dn, fn) in os.walk(p):
+            ndp = re.sub(r'^.*\.\./',r'',dp)
+            for f in iter(fn):
+                lines = readFile(dp + "/" + f)
+                lines = comment_all_includes(lines)
+                lines = uncomment_local_includes(lines)
+                try:
+                    os.makedirs(ndp)
+                except:
+                    pass
+                writeOutput(lines, ndp + "/" + f)
     
-    invoke_cpp('adolc_all_in.hpp', 'adolc_all_pre.hpp')
+    invoke_cpp(src_base + '/' + 'adolc_all_in.hpp', 'adolc_all_pre.hpp')
     lines = readFile('adolc_all_pre.hpp')
     lines = reinstate_nonlocal_include(lines)
     writeOutput(lines,'adolc_all.hpp')
diff --git a/Makefile.am b/Makefile.am
index fb66e9f3..123ac905 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -24,13 +24,12 @@ EXTRA_DIST           = TODO BUGS LICENSE update_versions.sh \
                        ADOL-C/doc/tapebasic.pdf ADOL-C/doc/tapebasic.eps \
                        ADOL-C/doc/tap_point.pdf ADOL-C/doc/tap_point.eps \
                        MSVisualStudio/v14/adolc.sln MSVisualStudio/v14/adolc.vcxproj \
-                       MSVisualStudio/v14/ColPack_Readme_VC++.txt \
                        MSVisualStudio/v14/ColPack.vcxproj \
                        MSVisualStudio/v14/sparse/config.h.in MSVisualStudio/v14/nosparse/config.h.in \
                        MSVisualStudio/v14/x64/sparse/config.h.in MSVisualStudio/v14/x64/nosparse/config.h.in \
                        MSVisualStudio/v14/sparse/config.h MSVisualStudio/v14/nosparse/config.h \
                        MSVisualStudio/v14/x64/sparse/config.h MSVisualStudio/v14/x64/nosparse/config.h \
-                       MSVisualStudio/v14/Readme_VC++.txt \
+                       MSVisualStudio/v14/README_VC++.md \
                        MSVisualStudio/v14/installer.sh \
                        adolc.spec.in adolc.spec \
                        update_versions.sh
diff --git a/configure.ac b/configure.ac
index ddb08de1..6c2c88f9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -501,6 +501,12 @@ fi
 AM_PATH_PYTHON([2.7],[python_found=yes],[python_found=no])
 AC_PATH_PROG(SWIG, swig, [no])
 AM_CONDITIONAL(PYTHONFOUND, [test x$python_found = xyes && test x$SWIG != xno])
+if test ${abs_top_srcdir} != ${abs_top_builddir} ; then
+   python_srcbase='--src=${abs_srcdir}'
+else
+   python_srcbase=''
+fi
+AC_SUBST(python_srcbase)
 ###########################################################################
 #                      COIN_PATCH_LIBTOOL_CYGWIN                          #
 ###########################################################################

From 25a69c486829ddaa19c115afc05cb7cf3b4e2410 Mon Sep 17 00:00:00 2001
From: Kshitij Kulshreshtha <kkhere.geo@gmail.com>
Date: Wed, 1 Apr 2020 02:36:12 +0200
Subject: [PATCH] another small fix for swig, this time for in-tree check

---
 ADOL-C/swig/setup.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ADOL-C/swig/setup.py b/ADOL-C/swig/setup.py
index e6023679..4ec9a7cc 100644
--- a/ADOL-C/swig/setup.py
+++ b/ADOL-C/swig/setup.py
@@ -105,7 +105,7 @@ def finalize_options(self):
         self.finalized = 1
 
     def build_extension(self, ext):
-        if self.src != '.':
+        if os.path.abspath(os.path.realpath(self.src)) != os.path.abspath('.'):
             import shutil
             sources = ext.sources
             newSrc = []
From 0787a350cc181192cfd203b0f75941bcbd9c3e3a Mon Sep 17 00:00:00 2001
From: Andrea Walther <walthand@math55020.mathematik.hu-berlin.de>
Date: Tue, 22 Sep 2020 11:58:09 +0200
Subject: [PATCH] small change in configure.ac for swig module

---
 configure.ac | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/configure.ac b/configure.ac
index b6aaeaa7..58380e55 100644
--- a/configure.ac
+++ b/configure.ac
@@ -509,6 +509,7 @@ if test x$tapedoc_values == xyes; then
 AC_DEFINE(ADOLC_TAPE_DOC_VALUES,1,[ADOL-C tape_doc routine computes values])
 fi
 
+if test x$adolc_python_support == xyes; then
 AM_PATH_PYTHON([2.7],[python_found=yes],[python_found=no])
 AC_PATH_PROG(SWIG, swig, [no])
 AM_CONDITIONAL(PYTHONFOUND, [test x$python_found = xyes && test x$SWIG != xno])
@@ -517,7 +518,12 @@ if test ${abs_top_srcdir} != ${abs_top_builddir} ; then
 else
    python_srcbase=''
 fi
+else
+   AM_CONDITIONAL(PYTHONFOUND, [test x$adolc_python_support])
+   python_srcbase=''
+fi
 AC_SUBST(python_srcbase)
+end
 ###########################################################################
 #                      COIN_PATCH_LIBTOOL_CYGWIN                          #
 ###########################################################################
From 0b3dd1747f90f68b17dc5f1bd3a5d898e3bc77fb Mon Sep 17 00:00:00 2001
From: Andrea Walther <walthand@math55020.mathematik.hu-berlin.de>
Date: Wed, 23 Sep 2020 08:54:54 +0200
Subject: [PATCH] small fixes in configure.ac

---
 configure.ac | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 58380e55..88671274 100644
--- a/configure.ac
+++ b/configure.ac
@@ -519,11 +519,11 @@ else
    python_srcbase=''
 fi
 else
-   AM_CONDITIONAL(PYTHONFOUND, [test x$adolc_python_support])
+   AM_CONDITIONAL(PYTHONFOUND, [test x$adolc_python_support = xyes])
    python_srcbase=''
 fi
 AC_SUBST(python_srcbase)
-end
+
 ###########################################################################
 #                      COIN_PATCH_LIBTOOL_CYGWIN                          #
 ###########################################################################