Skip to content

Commit 28aa2ee

Browse files
committed
MAINT: Reduce PRIMA binary size and suppress warning
Incorporate changes to PRIMA that allow us to not compile the other solvers. This reduces the binary from about 1.2MB to 840kB. Also the warning about compact unwind is suppressed. It comes from using AppleClang to link code compiled with gfortran. In theory it impacts exception handling but tests with exception in the objective function, constraint function, and in the C++ have shown no adverse effects.
1 parent 25bd6ba commit 28aa2ee

File tree

2 files changed

+11
-32
lines changed

2 files changed

+11
-32
lines changed

scipy/optimize/_prima/meson.build

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,6 @@ prima_f = static_library('prima_f',
3838
'../../_lib/prima/fortran/cobyla/initialize.f90',
3939
'../../_lib/prima/fortran/cobyla/trustregion.f90',
4040
'../../_lib/prima/fortran/cobyla/update.f90',
41-
'../../_lib/prima/fortran/bobyqa/bobyqa.f90',
42-
'../../_lib/prima/fortran/bobyqa/bobyqb.f90',
43-
'../../_lib/prima/fortran/bobyqa/geometry.f90',
44-
'../../_lib/prima/fortran/bobyqa/initialize.f90',
45-
'../../_lib/prima/fortran/bobyqa/trustregion.f90',
46-
'../../_lib/prima/fortran/bobyqa/rescue.f90',
47-
'../../_lib/prima/fortran/bobyqa/update.f90',
48-
'../../_lib/prima/fortran/lincoa/update.f90',
49-
'../../_lib/prima/fortran/lincoa/initialize.f90',
50-
'../../_lib/prima/fortran/lincoa/getact.f90',
51-
'../../_lib/prima/fortran/lincoa/trustregion.f90',
52-
'../../_lib/prima/fortran/lincoa/geometry.f90',
53-
'../../_lib/prima/fortran/lincoa/lincob.f90',
54-
'../../_lib/prima/fortran/lincoa/lincoa.f90',
55-
'../../_lib/prima/fortran/newuoa/initialize.f90',
56-
'../../_lib/prima/fortran/newuoa/trustregion.f90',
57-
'../../_lib/prima/fortran/newuoa/geometry.f90',
58-
'../../_lib/prima/fortran/newuoa/update.f90',
59-
'../../_lib/prima/fortran/newuoa/newuob.f90',
60-
'../../_lib/prima/fortran/newuoa/newuoa.f90',
61-
'../../_lib/prima/fortran/uobyqa/initialize.f90',
62-
'../../_lib/prima/fortran/uobyqa/update.f90',
63-
'../../_lib/prima/fortran/uobyqa/geometry.f90',
64-
'../../_lib/prima/fortran/uobyqa/trustregion.f90',
65-
'../../_lib/prima/fortran/uobyqa/uobyqb.f90',
66-
'../../_lib/prima/fortran/uobyqa/uobyqa.f90',
6741
]
6842
)
6943

@@ -73,28 +47,33 @@ prima_f_c = static_library('prima_f_c',
7347
'-DPRIMAC_STATIC',
7448
'-DPRIMA_REAL_PRECISION=64',
7549
'-DPRIMA_INTEGER_KIND=0',
50+
'-DDONT_COMPILE_BOBYQA',
51+
'-DDONT_COMPILE_LINCOA',
52+
'-DDONT_COMPILE_NEWUOA',
53+
'-DDONT_COMPILE_UOBYQA',
7654
],
7755
include_directories: [ '../../_lib/prima/c/include', ],
7856
link_language: 'fortran',
7957
link_with: prima_f,
8058
sources: [
8159
'../../_lib/prima/c/cintrf.f90',
8260
'../../_lib/prima/c/cobyla_c.f90',
83-
'../../_lib/prima/c/lincoa_c.f90',
84-
'../../_lib/prima/c/bobyqa_c.f90',
85-
'../../_lib/prima/c/newuoa_c.f90',
86-
'../../_lib/prima/c/uobyqa_c.f90',
8761
'../../_lib/prima/c/prima.c'
8862
],
8963
)
9064

65+
prima_link_args = version_link_args
66+
if host_machine.system() == 'darwin'
67+
prima_link_args += ['-Wl,-no_compact_unwind']
68+
endif
69+
9170

9271
_prima_wrapper = py3.extension_module('_prima',
9372
cpp_args: ['-DPRIMAC_STATIC'],
9473
dependencies: [pybind11_dep],
9574
include_directories: [ '../../_lib/prima/c/include'],
9675
install: true,
97-
link_args: version_link_args,
76+
link_args: prima_link_args,
9877
link_with: [prima_f_c],
9978
sources: [ '../../_lib/prima/python/_prima.cpp'],
10079
subdir: 'scipy/optimize/_prima'

0 commit comments

Comments
 (0)