git: 38449fac637a - main - math/rubygem-rb-gsl: Add upstream patch to fix build with Ruby 3.x
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 29 Mar 2022 07:29:57 UTC
The branch main has been updated by yasu: URL: https://cgit.FreeBSD.org/ports/commit/?id=38449fac637ad9b01982545d3e12b4dae8623ab1 commit 38449fac637ad9b01982545d3e12b4dae8623ab1 Author: Yasuhiro Kimura <yasu@FreeBSD.org> AuthorDate: 2022-03-12 17:03:14 +0000 Commit: Yasuhiro Kimura <yasu@FreeBSD.org> CommitDate: 2022-03-29 07:29:13 +0000 math/rubygem-rb-gsl: Add upstream patch to fix build with Ruby 3.x PR: 262505 Approved by: maintainer timeout --- math/rubygem-rb-gsl/files/patch-ruby3 | 563 ++++++++++++++++++++++++++++++++++ 1 file changed, 563 insertions(+) diff --git a/math/rubygem-rb-gsl/files/patch-ruby3 b/math/rubygem-rb-gsl/files/patch-ruby3 new file mode 100644 index 000000000000..866a7ffa6ab0 --- /dev/null +++ b/math/rubygem-rb-gsl/files/patch-ruby3 @@ -0,0 +1,563 @@ +diff --git .travis.yml .travis.yml +index e69c107..849e6aa 100644 +--- .travis.yml ++++ .travis.yml +@@ -8,11 +8,15 @@ rvm: + - 2.2.6 + - 2.3.3 + - 2.4.0 ++ - 2.5 ++ - 2.6 ++ - 2.7 ++ - 3.0.0 + + before_install: + - sudo apt-get update -qq + - sudo apt-get install -y libgsl0-dev +- - gem update bundler +- - bundle install ++ - gem install bundler:1.17.3 ++ - bundle _1.17.3_ install + - bundle exec rake compile + - bundle exec rake test +diff --git ext/gsl_native/extconf.rb ext/gsl_native/extconf.rb +index 2c712b3..982bad8 100644 +--- ext/gsl_native/extconf.rb ++++ ext/gsl_native/extconf.rb +@@ -21,6 +21,7 @@ def create_conf_h(file) #:nodoc: + + # FIXME: Find a better way to do this: + hfile.puts "#define RUBY_2 1" if RUBY_VERSION >= '2.0' ++ hfile.puts "#define RUBY_3 1" if RUBY_VERSION >= '3.0' + + for line in $defs + line =~ /^-D(.*)/ +diff --git ext/gsl_native/gsl_narray.c ext/gsl_native/gsl_narray.c +index ba895e6..a4a90d9 100644 +--- ext/gsl_native/gsl_narray.c ++++ ext/gsl_native/gsl_narray.c +@@ -570,7 +570,7 @@ gsl_matrix_int_view* na_to_gm_int_view(VALUE nna) + } + + #include <gsl/gsl_histogram.h> +-EXTERN VALUE cgsl_histogram; ++extern VALUE cgsl_histogram; + static VALUE rb_gsl_narray_histogram(int argc, VALUE *argv, VALUE obj) + { + double *ptr, *ptr_range; +diff --git ext/gsl_native/include/rb_gsl.h ext/gsl_native/include/rb_gsl.h +index bc1d6c0..aa643e6 100644 +--- ext/gsl_native/include/rb_gsl.h ++++ ext/gsl_native/include/rb_gsl.h +@@ -109,7 +109,7 @@ void Init_tensor_int_init(VALUE module); + + void Init_gsl_dirac(VALUE module); + +-EXTERN VALUE cGSL_Object; ++extern VALUE cGSL_Object; + + void Init_tamu_anova(VALUE module); + +diff --git ext/gsl_native/include/rb_gsl_array.h ext/gsl_native/include/rb_gsl_array.h +index 447679d..e4d4440 100644 +--- ext/gsl_native/include/rb_gsl_array.h ++++ ext/gsl_native/include/rb_gsl_array.h +@@ -29,41 +29,41 @@ + typedef gsl_permutation gsl_index; + + #ifdef HAVE_NARRAY_H +-EXTERN VALUE cNArray; ++extern VALUE cNArray; + #endif + + #ifdef HAVE_NMATRIX_H +-EXTERN VALUE cNMatrix; ++extern VALUE cNMatrix; + #endif + +-EXTERN VALUE cgsl_block, cgsl_block_int; +-EXTERN VALUE cgsl_block_uchar; +-EXTERN VALUE cgsl_block_complex; +-EXTERN VALUE cgsl_vector, cgsl_vector_complex; +-EXTERN VALUE cgsl_vector_col; +-EXTERN VALUE cgsl_vector_col_view; +-EXTERN VALUE cgsl_vector_complex_col; +-EXTERN VALUE cgsl_vector_complex_col_view; +-EXTERN VALUE cgsl_vector_view, cgsl_vector_complex_view; +-EXTERN VALUE cgsl_vector_view_ro, cgsl_vector_col_view_ro; +-EXTERN VALUE cgsl_vector_complex_view_ro; +- +-EXTERN VALUE cgsl_vector_int, cgsl_vector_int_col; +-EXTERN VALUE cgsl_vector_int_view, cgsl_vector_int_col_view; +-EXTERN VALUE cgsl_vector_int_view_ro, cgsl_vector_int_col_view_ro; +- +-EXTERN VALUE cgsl_matrix, cgsl_matrix_complex; +-EXTERN VALUE cgsl_matrix_view_ro; +-EXTERN VALUE cgsl_matrix_complex_view_ro; +-EXTERN VALUE cgsl_matrix_view, cgsl_matrix_complex_view; +-EXTERN VALUE cgsl_matrix_int, cgsl_matrix_int_view; +-EXTERN VALUE cgsl_matrix_int_view_ro; +-EXTERN VALUE cgsl_permutation; +-EXTERN VALUE cgsl_index; +-EXTERN VALUE cgsl_function; +-EXTERN VALUE mgsl_narray; +- +-EXTERN VALUE mDirac; ++extern VALUE cgsl_block, cgsl_block_int; ++extern VALUE cgsl_block_uchar; ++extern VALUE cgsl_block_complex; ++extern VALUE cgsl_vector, cgsl_vector_complex; ++extern VALUE cgsl_vector_col; ++extern VALUE cgsl_vector_col_view; ++extern VALUE cgsl_vector_complex_col; ++extern VALUE cgsl_vector_complex_col_view; ++extern VALUE cgsl_vector_view, cgsl_vector_complex_view; ++extern VALUE cgsl_vector_view_ro, cgsl_vector_col_view_ro; ++extern VALUE cgsl_vector_complex_view_ro; ++ ++extern VALUE cgsl_vector_int, cgsl_vector_int_col; ++extern VALUE cgsl_vector_int_view, cgsl_vector_int_col_view; ++extern VALUE cgsl_vector_int_view_ro, cgsl_vector_int_col_view_ro; ++ ++extern VALUE cgsl_matrix, cgsl_matrix_complex; ++extern VALUE cgsl_matrix_view_ro; ++extern VALUE cgsl_matrix_complex_view_ro; ++extern VALUE cgsl_matrix_view, cgsl_matrix_complex_view; ++extern VALUE cgsl_matrix_int, cgsl_matrix_int_view; ++extern VALUE cgsl_matrix_int_view_ro; ++extern VALUE cgsl_permutation; ++extern VALUE cgsl_index; ++extern VALUE cgsl_function; ++extern VALUE mgsl_narray; ++ ++extern VALUE mDirac; + + gsl_matrix_view* gsl_matrix_view_alloc(); + void gsl_matrix_view_free(gsl_matrix_view * mv); +diff --git ext/gsl_native/include/rb_gsl_common.h ext/gsl_native/include/rb_gsl_common.h +index e3365b0..44f23aa 100644 +--- ext/gsl_native/include/rb_gsl_common.h ++++ ext/gsl_native/include/rb_gsl_common.h +@@ -25,8 +25,9 @@ + #include <gsl/gsl_ieee_utils.h> + #include "rb_gsl_with_narray.h" + #include "rb_gsl_with_nmatrix.h" ++#include "gsl_config.h" + +-EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a; ++extern ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a; + + #ifndef CHECK_FIXNUM + #define CHECK_FIXNUM(x) if(!FIXNUM_P(x)) rb_raise(rb_eTypeError,"Fixnum expected"); +@@ -292,7 +293,9 @@ EXTERN ID rb_gsl_id_beg, rb_gsl_id_end, rb_gsl_id_excl, rb_gsl_id_to_a; + #endif + + #ifndef RBGSL_SET_CLASS +-#ifdef RB_OBJ_WRITE ++#if defined(RUBY_3) ++#define RBGSL_SET_CLASS0(obj0, cls) RB_OBJ_WRITE(obj0, &(RBASIC(obj0)->klass), cls) ++#elif defined(RB_OBJ_WRITE) + #define RBGSL_SET_CLASS0(obj0, cls) RB_OBJ_WRITE(obj0, &(RBASIC_CLASS(obj0)), cls) + #else + #define RBGSL_SET_CLASS0(obj0, cls) RBASIC(obj0)->klass = cls +@@ -349,5 +352,5 @@ VALUE rb_gsl_nary_eval1(VALUE ary, double (*f)(double)); + VALUE rb_gsl_nmatrix_eval1(VALUE ary, double (*f)(double)); + #endif + +-EXTERN VALUE cGSL_Object; ++extern VALUE cGSL_Object; + #endif +diff --git ext/gsl_native/include/rb_gsl_complex.h ext/gsl_native/include/rb_gsl_complex.h +index 6243311..4747f84 100644 +--- ext/gsl_native/include/rb_gsl_complex.h ++++ ext/gsl_native/include/rb_gsl_complex.h +@@ -18,7 +18,7 @@ + #include <gsl/gsl_complex.h> + #include <gsl/gsl_complex_math.h> + +-EXTERN VALUE cgsl_complex; ++extern VALUE cgsl_complex; + VALUE rb_gsl_complex_pow(int argc, VALUE *argv, VALUE obj); + VALUE rb_gsl_complex_pow_real(int argc, VALUE *argv, VALUE obj); + +diff --git ext/gsl_native/include/rb_gsl_const.h ext/gsl_native/include/rb_gsl_const.h +index c46b61b..735480a 100644 +--- ext/gsl_native/include/rb_gsl_const.h ++++ ext/gsl_native/include/rb_gsl_const.h +@@ -18,6 +18,6 @@ + #include <gsl/gsl_const_cgsm.h> + #include <gsl/gsl_const_num.h> + +-EXTERN VALUE mgsl_const_mks, mgsl_const_cgs; ++extern VALUE mgsl_const_mks, mgsl_const_cgs; + + #endif +diff --git ext/gsl_native/include/rb_gsl_fft.h ext/gsl_native/include/rb_gsl_fft.h +index 8de6449..a220ae2 100644 +--- ext/gsl_native/include/rb_gsl_fft.h ++++ ext/gsl_native/include/rb_gsl_fft.h +@@ -39,11 +39,11 @@ enum { + RB_GSL_FFT_COPY, + }; + +-EXTERN VALUE mgsl_fft; +-EXTERN VALUE cgsl_fft_wavetable; +-EXTERN VALUE cgsl_fft_wavetable_factor; +-EXTERN VALUE cgsl_fft_complex_wavetable, cgsl_fft_complex_workspace; +-EXTERN VALUE cgsl_fft_real_wavetable, cgsl_fft_halfcomplex_wavetable; +-EXTERN VALUE cgsl_fft_real_workspace; ++extern VALUE mgsl_fft; ++extern VALUE cgsl_fft_wavetable; ++extern VALUE cgsl_fft_wavetable_factor; ++extern VALUE cgsl_fft_complex_wavetable, cgsl_fft_complex_workspace; ++extern VALUE cgsl_fft_real_wavetable, cgsl_fft_halfcomplex_wavetable; ++extern VALUE cgsl_fft_real_workspace; + + #endif +diff --git ext/gsl_native/include/rb_gsl_fit.h ext/gsl_native/include/rb_gsl_fit.h +index 3b38e6b..c32805b 100644 +--- ext/gsl_native/include/rb_gsl_fit.h ++++ ext/gsl_native/include/rb_gsl_fit.h +@@ -18,6 +18,6 @@ + #include <gsl/gsl_multifit_nlin.h> + #include "rb_gsl_array.h" + +-EXTERN VALUE mgsl_multifit; ++extern VALUE mgsl_multifit; + + #endif +diff --git ext/gsl_native/include/rb_gsl_function.h ext/gsl_native/include/rb_gsl_function.h +index 207e21e..71bb67f 100644 +--- ext/gsl_native/include/rb_gsl_function.h ++++ ext/gsl_native/include/rb_gsl_function.h +@@ -15,8 +15,8 @@ + + #include "rb_gsl.h" + +-EXTERN VALUE cgsl_function; +-EXTERN VALUE cgsl_function_fdf; ++extern VALUE cgsl_function; ++extern VALUE cgsl_function_fdf; + extern ID RBGSL_ID_call, RBGSL_ID_arity; + void gsl_function_mark(gsl_function *f); + void gsl_function_free(gsl_function *f); +diff --git ext/gsl_native/include/rb_gsl_histogram.h ext/gsl_native/include/rb_gsl_histogram.h +index 02a9b7b..a0635ac 100644 +--- ext/gsl_native/include/rb_gsl_histogram.h ++++ ext/gsl_native/include/rb_gsl_histogram.h +@@ -18,11 +18,11 @@ + #include <gsl/gsl_histogram2d.h> + #include "rb_gsl.h" + +-EXTERN VALUE cgsl_histogram; +-EXTERN VALUE cgsl_histogram_range; +-EXTERN VALUE cgsl_histogram_bin; +-EXTERN VALUE cgsl_histogram2d; +-EXTERN VALUE cgsl_histogram2d_view; ++extern VALUE cgsl_histogram; ++extern VALUE cgsl_histogram_range; ++extern VALUE cgsl_histogram_bin; ++extern VALUE cgsl_histogram2d; ++extern VALUE cgsl_histogram2d_view; + + typedef struct { + gsl_histogram h; +diff --git ext/gsl_native/include/rb_gsl_poly.h ext/gsl_native/include/rb_gsl_poly.h +index 02422ca..76e0a9d 100644 +--- ext/gsl_native/include/rb_gsl_poly.h ++++ ext/gsl_native/include/rb_gsl_poly.h +@@ -17,12 +17,12 @@ + #include "rb_gsl_complex.h" + #include "rb_gsl_array.h" + +-EXTERN VALUE cgsl_poly; +-EXTERN VALUE cgsl_poly_int; +-EXTERN VALUE cgsl_poly_dd; +-EXTERN VALUE cgsl_poly_taylor; +-EXTERN VALUE cgsl_poly_workspace; +-EXTERN VALUE cgsl_rational; ++extern VALUE cgsl_poly; ++extern VALUE cgsl_poly_int; ++extern VALUE cgsl_poly_dd; ++extern VALUE cgsl_poly_taylor; ++extern VALUE cgsl_poly_workspace; ++extern VALUE cgsl_rational; + + typedef gsl_vector gsl_poly; + typedef gsl_vector_int gsl_poly_int; +diff --git ext/gsl_native/include/rb_gsl_rng.h ext/gsl_native/include/rb_gsl_rng.h +index 796c4ee..f656365 100644 +--- ext/gsl_native/include/rb_gsl_rng.h ++++ ext/gsl_native/include/rb_gsl_rng.h +@@ -15,6 +15,6 @@ + #include <gsl/gsl_rng.h> + #include "rb_gsl.h" + +-EXTERN VALUE cgsl_rng; ++extern VALUE cgsl_rng; + + #endif +diff --git ext/gsl_native/include/rb_gsl_root.h ext/gsl_native/include/rb_gsl_root.h +index 6b68bab..0d98dd4 100644 +--- ext/gsl_native/include/rb_gsl_root.h ++++ ext/gsl_native/include/rb_gsl_root.h +@@ -16,7 +16,7 @@ + #include <gsl/gsl_roots.h> + #include "rb_gsl.h" + +-EXTERN VALUE cgsl_fsolver; +-EXTERN VALUE cgsl_fdfsolver; ++extern VALUE cgsl_fsolver; ++extern VALUE cgsl_fdfsolver; + + #endif +diff --git ext/gsl_native/include/rb_gsl_sf.h ext/gsl_native/include/rb_gsl_sf.h +index 9a61cec..65f5e12 100644 +--- ext/gsl_native/include/rb_gsl_sf.h ++++ ext/gsl_native/include/rb_gsl_sf.h +@@ -16,7 +16,7 @@ + #include <gsl/gsl_sf_mathieu.h> + #include "rb_gsl.h" + +-EXTERN VALUE cgsl_sf_result, cgsl_sf_result_e10; ++extern VALUE cgsl_sf_result, cgsl_sf_result_e10; + + VALUE rb_gsl_sf_result_new(VALUE klass); + +diff --git ext/gsl_native/include/rb_gsl_tensor.h ext/gsl_native/include/rb_gsl_tensor.h +index 35c98c1..9828f9b 100644 +--- ext/gsl_native/include/rb_gsl_tensor.h ++++ ext/gsl_native/include/rb_gsl_tensor.h +@@ -5,7 +5,7 @@ + #include "rb_gsl.h" + #include <tensor/tensor.h> + +-EXTERN VALUE cgsl_tensor, cgsl_tensor_int; ++extern VALUE cgsl_tensor, cgsl_tensor_int; + + enum { + TENSOR_ADD, +diff --git ext/gsl_native/include/templates_off.h ext/gsl_native/include/templates_off.h +index 37e024d..db01c79 100644 +--- ext/gsl_native/include/templates_off.h ++++ ext/gsl_native/include/templates_off.h +@@ -85,3 +85,8 @@ + #undef NAME + #undef STRING + #undef EXPAND ++ ++#ifdef RUBY_3 ++#undef memcpy ++#define memcpy ruby_nonempty_memcpy ++#endif +\ No newline at end of file +diff --git ext/gsl_native/include/templates_on.h ext/gsl_native/include/templates_on.h +index 4db23e9..44520d1 100644 +--- ext/gsl_native/include/templates_on.h ++++ ext/gsl_native/include/templates_on.h +@@ -239,3 +239,9 @@ + #define STRING(x) #x + #define EXPAND(x) STRING(x) + #define NAME(x) EXPAND(GSL_TYPE(x)) ++ ++// Ruby 3 redefines memcpy as ruby_nonempty_memcpy, breaking everything if memcpy is used in preprocessor ++#ifdef RUBY_3 ++#undef memcpy ++#define memcpy memcpy ++#endif +\ No newline at end of file +diff --git ext/gsl_native/interp.c ext/gsl_native/interp.c +index 366f594..4decffc 100644 +--- ext/gsl_native/interp.c ++++ ext/gsl_native/interp.c +@@ -12,7 +12,7 @@ + #include "include/rb_gsl_interp.h" + + VALUE cgsl_interp_accel; /* this is used also in spline.c */ +-EXTERN VALUE cgsl_vector, cgsl_matrix; ++extern VALUE cgsl_vector, cgsl_matrix; + + static void rb_gsl_interp_free(rb_gsl_interp *sp); + +diff --git ext/gsl_native/interp2d.c ext/gsl_native/interp2d.c +index e086eab..ec23067 100644 +--- ext/gsl_native/interp2d.c ++++ ext/gsl_native/interp2d.c +@@ -12,7 +12,7 @@ + #include "include/rb_gsl_interp2d.h" + + VALUE cgsl_interp2d_accel; /* this is used also in spline2d.c */ +-EXTERN VALUE cgsl_vector, cgsl_matrix; ++extern VALUE cgsl_vector, cgsl_matrix; + + static VALUE rb_gsl_interp2d_alloc(int argc, VALUE *argv, VALUE self) + { +diff --git ext/gsl_native/linalg_complex.c ext/gsl_native/linalg_complex.c +index 491ad0c..4ee62fa 100644 +--- ext/gsl_native/linalg_complex.c ++++ ext/gsl_native/linalg_complex.c +@@ -14,8 +14,8 @@ + #include "include/rb_gsl_common.h" + #include "include/rb_gsl_linalg.h" + +-EXTERN VALUE mgsl_linalg; +-EXTERN VALUE cgsl_complex; ++extern VALUE mgsl_linalg; ++extern VALUE cgsl_complex; + + static VALUE cgsl_matrix_complex_LU; + static VALUE cgsl_matrix_complex_C; +diff --git ext/gsl_native/matrix_source.h ext/gsl_native/matrix_source.h +index d6f312b..cef5a9a 100644 +--- ext/gsl_native/matrix_source.h ++++ ext/gsl_native/matrix_source.h +@@ -1536,7 +1536,7 @@ static int FUNCTION(mygsl_matrix,equal)(GSL_TYPE(gsl_matrix) *a, GSL_TYPE(gsl_ma + } + + #ifdef HAVE_TENSOR_TENSOR_H +-EXTERN VALUE cgsl_tensor, cgsl_tensor_int; ++extern VALUE cgsl_tensor, cgsl_tensor_int; + VALUE rb_gsl_tensor_equal(int argc, VALUE *argv, VALUE obj); + VALUE rb_gsl_tensor_int_equal(int argc, VALUE *argv, VALUE obj); + #ifdef BASE_DOUBLE +diff --git ext/gsl_native/monte.c ext/gsl_native/monte.c +index 3559001..8d83bdb 100644 +--- ext/gsl_native/monte.c ++++ ext/gsl_native/monte.c +@@ -25,7 +25,7 @@ static VALUE cgsl_monte_miser; + static VALUE cgsl_monte_vegas; + static VALUE cgsl_monte_function; + static VALUE cgsl_monte_miser_params, cgsl_monte_vegas_params; +-EXTERN VALUE cgsl_vector; ++extern VALUE cgsl_vector; + + enum { + GSL_MONTE_PLAIN_STATE = 1, +diff --git ext/gsl_native/root.c ext/gsl_native/root.c +index dfed2c8..666ec81 100644 +--- ext/gsl_native/root.c ++++ ext/gsl_native/root.c +@@ -14,7 +14,7 @@ + #include "include/rb_gsl_function.h" + #include "include/rb_gsl_root.h" + +-EXTERN VALUE cgsl_function_fdf; ++extern VALUE cgsl_function_fdf; + + enum { + GSL_ROOT_FSOLVER_BISECTION, +diff --git ext/gsl_native/sf_bessel.c ext/gsl_native/sf_bessel.c +index 65d5038..c0ab45d 100644 +--- ext/gsl_native/sf_bessel.c ++++ ext/gsl_native/sf_bessel.c +@@ -11,7 +11,7 @@ + */ + + #include "include/rb_gsl_sf.h" +-EXTERN VALUE cgsl_vector; ++extern VALUE cgsl_vector; + + /* Cylindrical Bessel Functions */ + static VALUE rb_gsl_sf_bessel_J0(VALUE obj, VALUE x) +diff --git ext/gsl_native/sf_coulomb.c ext/gsl_native/sf_coulomb.c +index c314642..6479769 100644 +--- ext/gsl_native/sf_coulomb.c ++++ ext/gsl_native/sf_coulomb.c +@@ -11,7 +11,7 @@ + */ + + #include "include/rb_gsl_sf.h" +-EXTERN VALUE cgsl_vector; ++extern VALUE cgsl_vector; + + static VALUE rb_gsl_sf_hydrogenicR_1(VALUE obj, VALUE Z, VALUE r) + { +diff --git ext/gsl_native/sf_legendre.c ext/gsl_native/sf_legendre.c +index 5a9470e..91836e1 100644 +--- ext/gsl_native/sf_legendre.c ++++ ext/gsl_native/sf_legendre.c +@@ -10,7 +10,7 @@ + */ + + #include "include/rb_gsl_sf.h" +-EXTERN VALUE cgsl_vector; ++extern VALUE cgsl_vector; + + static VALUE rb_gsl_sf_legendre_P1(VALUE obj, VALUE x) + { +diff --git ext/gsl_native/sort.c ext/gsl_native/sort.c +index a1acd78..240a8fb 100644 +--- ext/gsl_native/sort.c ++++ ext/gsl_native/sort.c +@@ -13,8 +13,8 @@ + #include <gsl/gsl_heapsort.h> + #include <gsl/gsl_sort.h> + +-EXTERN ID RBGSL_ID_call; +-EXTERN VALUE cgsl_complex; ++extern ID RBGSL_ID_call; ++extern VALUE cgsl_complex; + + int rb_gsl_comparison_double(const void *aa, const void *bb); + int rb_gsl_comparison_complex(const void *aa, const void *bb); +diff --git ext/gsl_native/spline.c ext/gsl_native/spline.c +index dd42355..0d730da 100644 +--- ext/gsl_native/spline.c ++++ ext/gsl_native/spline.c +@@ -11,7 +11,7 @@ + + #include "include/rb_gsl_interp.h" + +-EXTERN VALUE cgsl_interp_accel; /* defined in interp.c */ ++extern VALUE cgsl_interp_accel; /* defined in interp.c */ + + static void rb_gsl_spline_free(rb_gsl_spline *sp); + +diff --git ext/gsl_native/spline2d.c ext/gsl_native/spline2d.c +index 34e0c2b..36f3106 100644 +--- ext/gsl_native/spline2d.c ++++ ext/gsl_native/spline2d.c +@@ -11,7 +11,7 @@ + #ifdef GSL_2_0_LATER + #include "include/rb_gsl_interp2d.h" + +-EXTERN VALUE cgsl_interp2d_accel; /* defined in interp2d.c */ ++extern VALUE cgsl_interp2d_accel; /* defined in interp2d.c */ + static void rb_gsl_spline2d_free(rb_gsl_spline2d *fr); + + static VALUE rb_gsl_spline2d_alloc(int argc, VALUE *argv, VALUE self) +diff --git ext/gsl_native/vector_complex.c ext/gsl_native/vector_complex.c +index b598746..83db5ee 100644 +--- ext/gsl_native/vector_complex.c ++++ ext/gsl_native/vector_complex.c +@@ -12,7 +12,7 @@ + #include "include/rb_gsl_array.h" + #include "include/rb_gsl_complex.h" + +-EXTERN VALUE cgsl_complex; ++extern VALUE cgsl_complex; + static VALUE rb_gsl_vector_complex_inner_product(int argc, VALUE *argv, VALUE obj); + static VALUE rb_gsl_vector_complex_product_to_m(int argc, VALUE *argv, VALUE obj); + +diff --git ext/gsl_native/vector_source.h ext/gsl_native/vector_source.h +index 1d343cd..2b265d9 100644 +--- ext/gsl_native/vector_source.h ++++ ext/gsl_native/vector_source.h +@@ -687,7 +687,7 @@ static VALUE FUNCTION(rb_gsl_vector,uplus)(VALUE obj) + return obj; + } + +-EXTERN VALUE cgsl_poly; ++extern VALUE cgsl_poly; + + VALUE FUNCTION(rb_gsl_vector,uminus)(VALUE obj) + { +@@ -1009,7 +1009,7 @@ int FUNCTION(rbgsl_vector,equal)(const GSL_TYPE(gsl_vector) *v1, const GSL_TYPE( + } + + #ifdef HAVE_TENSOR_TENSOR_H +-EXTERN VALUE cgsl_tensor, cgsl_tensor_int; ++extern VALUE cgsl_tensor, cgsl_tensor_int; + VALUE rb_gsl_tensor_equal(int argc, VALUE *argv, VALUE obj); + VALUE rb_gsl_tensor_int_equal(int argc, VALUE *argv, VALUE obj); + #ifdef BASE_DOUBLE