ports/math/rubygem-rb-gsl/files/patch-ruby3
Yasuhiro Kimura 38449fac63 math/rubygem-rb-gsl: Add upstream patch to fix build with Ruby 3.x
PR:		262505
Approved by:	maintainer timeout
2022-03-29 16:29:13 +09:00

563 lines
18 KiB
Text

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