@@ -706,7 +706,7 @@ test_modules_src = [
706
706
src_file.process(' src/umath/_umath_tests.c.src' ),
707
707
' src/common/npy_cpu_features.c' ,
708
708
],
709
- _umath_tests_mtargets
709
+ _umath_tests_mtargets.static_lib( ' _umath_tests_mtargets ' )
710
710
],
711
711
[' _rational_tests' , ' src/umath/_rational_tests.c' , []],
712
712
[' _struct_ufunc_tests' , ' src/umath/_struct_ufunc_tests.c' , []],
@@ -730,7 +730,6 @@ multiarray_gen_headers = [
730
730
src_file.process(' src/multiarray/arraytypes.h.src' ),
731
731
src_file.process(' src/common/npy_sort.h.src' ),
732
732
]
733
- multiarray_umath_dispatch_link = []
734
733
foreach gen_mtargets : [
735
734
[
736
735
' argfunc.dispatch.h' ,
@@ -743,22 +742,27 @@ foreach gen_mtargets : [
743
742
]
744
743
],
745
744
]
746
- multiarray_umath_dispatch_link += mod_features.multi_targets(
747
- gen_mtargets[0 ], multiarray_gen_headers + gen_mtargets[1 ],
748
- dispatch : gen_mtargets[2 ],
749
- baseline : CPU_BASELINE,
750
- prefix : ' NPY_' ,
751
- dependencies : [py_dep, np_core_dep],
752
- c_args : c_args_common + max_opt,
753
- cpp_args : cpp_args_common + max_opt,
754
- include_directories : [
755
- ' include' ,
756
- ' src/common' ,
757
- ' src/multiarray' ,
758
- ' src/npymath' ,
759
- ' src/umath'
760
- ]
761
- )
745
+ mtargets = mod_features.multi_targets(
746
+ gen_mtargets[0 ], multiarray_gen_headers + gen_mtargets[1 ],
747
+ dispatch : gen_mtargets[2 ],
748
+ baseline : CPU_BASELINE,
749
+ prefix : ' NPY_' ,
750
+ dependencies : [py_dep, np_core_dep],
751
+ c_args : c_args_common + max_opt,
752
+ cpp_args : cpp_args_common + max_opt,
753
+ include_directories : [
754
+ ' include' ,
755
+ ' src/common' ,
756
+ ' src/multiarray' ,
757
+ ' src/npymath' ,
758
+ ' src/umath'
759
+ ]
760
+ )
761
+ if not is_variable (' multiarray_umath_mtargets' )
762
+ multiarray_umath_mtargets = mtargets
763
+ else
764
+ multiarray_umath_mtargets.extend(mtargets)
765
+ endif
762
766
endforeach
763
767
764
768
# Build npysort dispatch-able sources
@@ -775,22 +779,27 @@ foreach gen_mtargets : [
775
779
[AVX512_SPR, AVX512_ICL]
776
780
],
777
781
]
778
- multiarray_umath_dispatch_link += mod_features.multi_targets(
779
- gen_mtargets[0 ], multiarray_gen_headers + gen_mtargets[1 ],
780
- dispatch : gen_mtargets[2 ],
781
- # baseline: CPU_BASELINE, it doesn't provide baseline fallback
782
- prefix : ' NPY_' ,
783
- dependencies : [py_dep, np_core_dep],
784
- c_args : c_args_common + max_opt,
785
- cpp_args : cpp_args_common + max_opt,
786
- include_directories : [
787
- ' include' ,
788
- ' src/common' ,
789
- ' src/multiarray' ,
790
- ' src/npymath' ,
791
- ' src/umath'
792
- ]
793
- )
782
+ mtargets = mod_features.multi_targets(
783
+ gen_mtargets[0 ], multiarray_gen_headers + gen_mtargets[1 ],
784
+ dispatch : gen_mtargets[2 ],
785
+ # baseline: CPU_BASELINE, it doesn't provide baseline fallback
786
+ prefix : ' NPY_' ,
787
+ dependencies : [py_dep, np_core_dep],
788
+ c_args : c_args_common + max_opt,
789
+ cpp_args : cpp_args_common + max_opt,
790
+ include_directories : [
791
+ ' include' ,
792
+ ' src/common' ,
793
+ ' src/multiarray' ,
794
+ ' src/npymath' ,
795
+ ' src/umath'
796
+ ]
797
+ )
798
+ if not is_variable (' multiarray_umath_mtargets' )
799
+ multiarray_umath_mtargets = mtargets
800
+ else
801
+ multiarray_umath_mtargets.extend(mtargets)
802
+ endif
794
803
endforeach
795
804
796
805
# Build umath dispatch-able sources
@@ -945,22 +954,27 @@ foreach gen_mtargets : [
945
954
]
946
955
],
947
956
]
948
- multiarray_umath_dispatch_link += mod_features.multi_targets(
949
- gen_mtargets[0 ], umath_gen_headers + gen_mtargets[1 ],
950
- dispatch : gen_mtargets[2 ],
951
- baseline : CPU_BASELINE,
952
- prefix : ' NPY_' ,
953
- dependencies : [py_dep, np_core_dep],
954
- c_args : c_args_common + max_opt,
955
- cpp_args : cpp_args_common + max_opt,
956
- include_directories : [
957
- ' include' ,
958
- ' src/common' ,
959
- ' src/multiarray' ,
960
- ' src/npymath' ,
961
- ' src/umath'
962
- ]
963
- )
957
+ mtargets = mod_features.multi_targets(
958
+ gen_mtargets[0 ], umath_gen_headers + gen_mtargets[1 ],
959
+ dispatch : gen_mtargets[2 ],
960
+ baseline : CPU_BASELINE,
961
+ prefix : ' NPY_' ,
962
+ dependencies : [py_dep, np_core_dep],
963
+ c_args : c_args_common + max_opt,
964
+ cpp_args : cpp_args_common + max_opt,
965
+ include_directories : [
966
+ ' include' ,
967
+ ' src/common' ,
968
+ ' src/multiarray' ,
969
+ ' src/npymath' ,
970
+ ' src/umath'
971
+ ]
972
+ )
973
+ if not is_variable (' multiarray_umath_mtargets' )
974
+ multiarray_umath_mtargets = mtargets
975
+ else
976
+ multiarray_umath_mtargets.extend(mtargets)
977
+ endif
964
978
endforeach
965
979
966
980
# Build _multiarray_umath module
@@ -1135,7 +1149,7 @@ py.extension_module('_multiarray_umath',
1135
1149
' src/umath' ,
1136
1150
],
1137
1151
dependencies : blas_dep,
1138
- link_with : multiarray_umath_dispatch_link + npymath_lib,
1152
+ link_with : [ npymath_lib, multiarray_umath_mtargets.static_lib( ' _multiarray_umath_mtargets ' )] ,
1139
1153
install : true ,
1140
1154
subdir : ' numpy/core' ,
1141
1155
)
@@ -1188,7 +1202,7 @@ py.extension_module('_simd',
1188
1202
c_args : c_args_common,
1189
1203
include_directories : [' src/_simd' , ' src/npymath' ],
1190
1204
dependencies : np_core_dep,
1191
- link_with : [_simd_mtargets] + npymath_lib ,
1205
+ link_with : [npymath_lib, _simd_mtargets.static_lib( ' _simd_mtargets ' )] ,
1192
1206
install : true ,
1193
1207
subdir : ' numpy/core' ,
1194
1208
)
0 commit comments