rice 2.2.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +2 -2
  3. data/Doxyfile +1 -1
  4. data/Makefile.in +15 -7
  5. data/README.md +115 -117
  6. data/aclocal.m4 +25 -28
  7. data/ax_cxx_compile_stdcxx.m4 +951 -0
  8. data/configure +486 -61
  9. data/configure.ac +3 -3
  10. data/extconf.rb +6 -2
  11. data/rice/Array.hpp +16 -16
  12. data/rice/Array.ipp +11 -11
  13. data/rice/Class_defn.hpp +1 -0
  14. data/rice/Constructor.hpp +27 -371
  15. data/rice/Director.hpp +3 -3
  16. data/rice/Exception.cpp +2 -7
  17. data/rice/Hash.hpp +8 -5
  18. data/rice/Makefile.am +0 -4
  19. data/rice/Makefile.in +6 -10
  20. data/rice/Object.cpp +1 -1
  21. data/rice/Object.ipp +15 -1
  22. data/rice/Object_defn.hpp +24 -1
  23. data/rice/String.cpp +2 -7
  24. data/rice/Struct.cpp +2 -2
  25. data/rice/Struct.hpp +1 -1
  26. data/rice/Struct.ipp +1 -1
  27. data/rice/config.hpp +2 -2
  28. data/rice/config.hpp.in +2 -2
  29. data/rice/detail/Arguments.hpp +1 -1
  30. data/rice/detail/Auto_Function_Wrapper.ipp +512 -1025
  31. data/rice/detail/Auto_Member_Function_Wrapper.ipp +272 -545
  32. data/rice/detail/ruby.hpp +0 -4
  33. data/rice/detail/ruby_version_code.hpp +1 -1
  34. data/rice/detail/wrap_function.hpp +32 -307
  35. data/rice/protect.hpp +3 -57
  36. data/rice/to_from_ruby.ipp +3 -3
  37. data/ruby/Makefile.in +4 -4
  38. data/ruby/lib/Makefile.in +4 -4
  39. data/ruby/lib/version.rb +1 -1
  40. data/sample/Makefile.am +10 -4
  41. data/sample/Makefile.in +14 -8
  42. data/sample/callbacks/extconf.rb +3 -0
  43. data/sample/callbacks/sample_callbacks.cpp +38 -0
  44. data/sample/callbacks/test.rb +28 -0
  45. data/test/Makefile.am +1 -0
  46. data/test/Makefile.in +15 -9
  47. data/test/embed_ruby.cpp +21 -0
  48. data/test/embed_ruby.hpp +4 -0
  49. data/test/ext/Makefile.in +4 -4
  50. data/test/test_Address_Registration_Guard.cpp +2 -1
  51. data/test/test_Array.cpp +2 -1
  52. data/test/test_Builtin_Object.cpp +2 -1
  53. data/test/test_Class.cpp +2 -1
  54. data/test/test_Data_Object.cpp +2 -1
  55. data/test/test_Data_Type.cpp +2 -1
  56. data/test/test_Director.cpp +2 -1
  57. data/test/test_Enum.cpp +2 -1
  58. data/test/test_Exception.cpp +2 -1
  59. data/test/test_Hash.cpp +2 -1
  60. data/test/test_Identifier.cpp +2 -1
  61. data/test/test_Memory_Management.cpp +2 -1
  62. data/test/test_Module.cpp +2 -1
  63. data/test/test_Object.cpp +13 -1
  64. data/test/test_String.cpp +2 -1
  65. data/test/test_Struct.cpp +2 -1
  66. data/test/test_Symbol.cpp +2 -1
  67. data/test/test_To_From_Ruby.cpp +2 -1
  68. data/test/test_global_functions.cpp +2 -1
  69. data/test/test_rice.rb +4 -0
  70. data/test/unittest.cpp +34 -8
  71. metadata +26 -11
  72. data/check_stdcxx_11.ac +0 -103
  73. data/rice/detail/object_call.hpp +0 -69
  74. data/rice/detail/object_call.ipp +0 -131
  75. data/rice/detail/traits.hpp +0 -43
  76. data/rice/detail/wrap_function.ipp +0 -514
data/configure CHANGED
@@ -645,7 +645,7 @@ RUBY_CPPFLAGS
645
645
  RUBY_VERSION_CODE
646
646
  RUBY
647
647
  RICE_USING_MINGW32
648
- HAVE_CXX11
648
+ HAVE_CXX14
649
649
  host_os
650
650
  host_vendor
651
651
  host_cpu
@@ -2127,12 +2127,7 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
2127
2127
  am_aux_dir=`cd "$ac_aux_dir" && pwd`
2128
2128
 
2129
2129
  if test x"${MISSING+set}" != xset; then
2130
- case \"$am_aux_dir\" in
2131
- *\ * | *\ *)
2132
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
2133
- *)
2134
- MISSING="\${SHELL} \"$am_aux_dir\"/missing" ;;
2135
- esac
2130
+ MISSING="\${SHELL} '$am_aux_dir/missing'"
2136
2131
  fi
2137
2132
  # Use eval to expand $SHELL
2138
2133
  if eval "$MISSING --is-lightweight"; then
@@ -3420,125 +3415,552 @@ else
3420
3415
  RICE_USING_MINGW32="false"
3421
3416
  fi
3422
3417
 
3423
- # ============================================================================
3424
- # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
3425
- # ============================================================================
3418
+ # ===========================================================================
3419
+ # https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
3420
+ # ===========================================================================
3426
3421
  #
3427
3422
  # SYNOPSIS
3428
3423
  #
3429
- # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
3424
+ # AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
3430
3425
  #
3431
3426
  # DESCRIPTION
3432
3427
  #
3433
- # Check for baseline language coverage in the compiler for the C++11
3434
- # standard; if necessary, add switches to CXXFLAGS to enable support.
3428
+ # Check for baseline language coverage in the compiler for the specified
3429
+ # version of the C++ standard. If necessary, add switches to CXX and
3430
+ # CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
3431
+ # or '14' (for the C++14 standard).
3435
3432
  #
3436
- # The first argument, if specified, indicates whether you insist on an
3433
+ # The second argument, if specified, indicates whether you insist on an
3437
3434
  # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
3438
3435
  # -std=c++11). If neither is specified, you get whatever works, with
3439
3436
  # preference for an extended mode.
3440
3437
  #
3441
- # The second argument, if specified 'mandatory' or if left unspecified,
3442
- # indicates that baseline C++11 support is required and that the macro
3443
- # should error out if no mode with that support is found. If specified
3444
- # 'optional', then configuration proceeds regardless, after defining
3445
- # HAVE_CXX11 if and only if a supporting mode is found.
3438
+ # The third argument, if specified 'mandatory' or if left unspecified,
3439
+ # indicates that baseline support for the specified C++ standard is
3440
+ # required and that the macro should error out if no mode with that
3441
+ # support is found. If specified 'optional', then configuration proceeds
3442
+ # regardless, after defining HAVE_CXX${VERSION} if and only if a
3443
+ # supporting mode is found.
3446
3444
  #
3447
3445
  # LICENSE
3448
3446
  #
3449
3447
  # Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
3450
3448
  # Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
3451
3449
  # Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
3452
- # Copyright (c) 2014 Alexey Sokolov <sokolov@google.com>
3450
+ # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
3451
+ # Copyright (c) 2015 Paul Norman <penorman@mac.com>
3452
+ # Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
3453
+ # Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
3454
+ # Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
3453
3455
  #
3454
3456
  # Copying and distribution of this file, with or without modification, are
3455
3457
  # permitted in any medium without royalty provided the copyright notice
3456
- # and this notice are preserved. This file is offered as-is, without any
3458
+ # and this notice are preserved. This file is offered as-is, without any
3457
3459
  # warranty.
3458
3460
 
3459
- #serial 4
3461
+ #serial 11
3462
+
3463
+
3464
+
3465
+
3466
+
3467
+
3468
+
3469
+
3470
+
3471
+
3460
3472
 
3461
3473
 
3462
3474
 
3463
3475
 
3464
3476
 
3465
3477
 
3466
- ax_cxx_compile_cxx11_required=false
3478
+
3479
+
3480
+
3481
+
3482
+
3483
+
3484
+
3485
+
3486
+
3487
+
3488
+ ax_cxx_compile_alternatives="14 1y" ax_cxx_compile_cxx14_required=true
3467
3489
  ac_ext=cpp
3468
3490
  ac_cpp='$CXXCPP $CPPFLAGS'
3469
3491
  ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3470
3492
  ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3471
3493
  ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
3472
3494
  ac_success=no
3473
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
3474
- $as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
3475
- if ${ax_cv_cxx_compile_cxx11+:} false; then :
3495
+
3496
+
3497
+
3498
+ if test x$ac_success = xno; then
3499
+ for alternative in ${ax_cxx_compile_alternatives}; do
3500
+ for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
3501
+ cachevar=`$as_echo "ax_cv_cxx_compile_cxx14_$switch" | $as_tr_sh`
3502
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features with $switch" >&5
3503
+ $as_echo_n "checking whether $CXX supports C++14 features with $switch... " >&6; }
3504
+ if eval \${$cachevar+:} false; then :
3476
3505
  $as_echo_n "(cached) " >&6
3477
3506
  else
3478
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3507
+ ac_save_CXX="$CXX"
3508
+ CXX="$CXX $switch"
3509
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3479
3510
  /* end confdefs.h. */
3480
3511
 
3481
- template <typename T>
3512
+
3513
+ // If the compiler admits that it is not ready for C++11, why torture it?
3514
+ // Hopefully, this will speed up the test.
3515
+
3516
+ #ifndef __cplusplus
3517
+
3518
+ #error "This is not a C++ compiler"
3519
+
3520
+ #elif __cplusplus < 201103L
3521
+
3522
+ #error "This is not a C++11 compiler"
3523
+
3524
+ #else
3525
+
3526
+ namespace cxx11
3527
+ {
3528
+
3529
+ namespace test_static_assert
3530
+ {
3531
+
3532
+ template <typename T>
3482
3533
  struct check
3483
3534
  {
3484
3535
  static_assert(sizeof(int) <= sizeof(T), "not big enough");
3485
3536
  };
3486
3537
 
3487
- struct Base {
3488
- virtual void f() {}
3538
+ }
3539
+
3540
+ namespace test_final_override
3541
+ {
3542
+
3543
+ struct Base
3544
+ {
3545
+ virtual ~Base() {}
3546
+ virtual void f() {}
3547
+ };
3548
+
3549
+ struct Derived : public Base
3550
+ {
3551
+ virtual ~Derived() override {}
3552
+ virtual void f() override {}
3553
+ };
3554
+
3555
+ }
3556
+
3557
+ namespace test_double_right_angle_brackets
3558
+ {
3559
+
3560
+ template < typename T >
3561
+ struct check {};
3562
+
3563
+ typedef check<void> single_type;
3564
+ typedef check<check<void>> double_type;
3565
+ typedef check<check<check<void>>> triple_type;
3566
+ typedef check<check<check<check<void>>>> quadruple_type;
3567
+
3568
+ }
3569
+
3570
+ namespace test_decltype
3571
+ {
3572
+
3573
+ int
3574
+ f()
3575
+ {
3576
+ int a = 1;
3577
+ decltype(a) b = 2;
3578
+ return a + b;
3579
+ }
3580
+
3581
+ }
3582
+
3583
+ namespace test_type_deduction
3584
+ {
3585
+
3586
+ template < typename T1, typename T2 >
3587
+ struct is_same
3588
+ {
3589
+ static const bool value = false;
3590
+ };
3591
+
3592
+ template < typename T >
3593
+ struct is_same<T, T>
3594
+ {
3595
+ static const bool value = true;
3596
+ };
3597
+
3598
+ template < typename T1, typename T2 >
3599
+ auto
3600
+ add(T1 a1, T2 a2) -> decltype(a1 + a2)
3601
+ {
3602
+ return a1 + a2;
3603
+ }
3604
+
3605
+ int
3606
+ test(const int c, volatile int v)
3607
+ {
3608
+ static_assert(is_same<int, decltype(0)>::value == true, "");
3609
+ static_assert(is_same<int, decltype(c)>::value == false, "");
3610
+ static_assert(is_same<int, decltype(v)>::value == false, "");
3611
+ auto ac = c;
3612
+ auto av = v;
3613
+ auto sumi = ac + av + 'x';
3614
+ auto sumf = ac + av + 1.0;
3615
+ static_assert(is_same<int, decltype(ac)>::value == true, "");
3616
+ static_assert(is_same<int, decltype(av)>::value == true, "");
3617
+ static_assert(is_same<int, decltype(sumi)>::value == true, "");
3618
+ static_assert(is_same<int, decltype(sumf)>::value == false, "");
3619
+ static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
3620
+ return (sumf > 0.0) ? sumi : add(c, v);
3621
+ }
3622
+
3623
+ }
3624
+
3625
+ namespace test_noexcept
3626
+ {
3627
+
3628
+ int f() { return 0; }
3629
+ int g() noexcept { return 0; }
3630
+
3631
+ static_assert(noexcept(f()) == false, "");
3632
+ static_assert(noexcept(g()) == true, "");
3633
+
3634
+ }
3635
+
3636
+ namespace test_constexpr
3637
+ {
3638
+
3639
+ template < typename CharT >
3640
+ unsigned long constexpr
3641
+ strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
3642
+ {
3643
+ return *s ? strlen_c_r(s + 1, acc + 1) : acc;
3644
+ }
3645
+
3646
+ template < typename CharT >
3647
+ unsigned long constexpr
3648
+ strlen_c(const CharT *const s) noexcept
3649
+ {
3650
+ return strlen_c_r(s, 0UL);
3651
+ }
3652
+
3653
+ static_assert(strlen_c("") == 0UL, "");
3654
+ static_assert(strlen_c("1") == 1UL, "");
3655
+ static_assert(strlen_c("example") == 7UL, "");
3656
+ static_assert(strlen_c("another\0example") == 7UL, "");
3657
+
3658
+ }
3659
+
3660
+ namespace test_rvalue_references
3661
+ {
3662
+
3663
+ template < int N >
3664
+ struct answer
3665
+ {
3666
+ static constexpr int value = N;
3667
+ };
3668
+
3669
+ answer<1> f(int&) { return answer<1>(); }
3670
+ answer<2> f(const int&) { return answer<2>(); }
3671
+ answer<3> f(int&&) { return answer<3>(); }
3672
+
3673
+ void
3674
+ test()
3675
+ {
3676
+ int i = 0;
3677
+ const int c = 0;
3678
+ static_assert(decltype(f(i))::value == 1, "");
3679
+ static_assert(decltype(f(c))::value == 2, "");
3680
+ static_assert(decltype(f(0))::value == 3, "");
3681
+ }
3682
+
3683
+ }
3684
+
3685
+ namespace test_uniform_initialization
3686
+ {
3687
+
3688
+ struct test
3689
+ {
3690
+ static const int zero {};
3691
+ static const int one {1};
3692
+ };
3693
+
3694
+ static_assert(test::zero == 0, "");
3695
+ static_assert(test::one == 1, "");
3696
+
3697
+ }
3698
+
3699
+ namespace test_lambdas
3700
+ {
3701
+
3702
+ void
3703
+ test1()
3704
+ {
3705
+ auto lambda1 = [](){};
3706
+ auto lambda2 = lambda1;
3707
+ lambda1();
3708
+ lambda2();
3709
+ }
3710
+
3711
+ int
3712
+ test2()
3713
+ {
3714
+ auto a = [](int i, int j){ return i + j; }(1, 2);
3715
+ auto b = []() -> int { return '0'; }();
3716
+ auto c = [=](){ return a + b; }();
3717
+ auto d = [&](){ return c; }();
3718
+ auto e = [a, &b](int x) mutable {
3719
+ const auto identity = [](int y){ return y; };
3720
+ for (auto i = 0; i < a; ++i)
3721
+ a += b--;
3722
+ return x + identity(a + b);
3723
+ }(0);
3724
+ return a + b + c + d + e;
3725
+ }
3726
+
3727
+ int
3728
+ test3()
3729
+ {
3730
+ const auto nullary = [](){ return 0; };
3731
+ const auto unary = [](int x){ return x; };
3732
+ using nullary_t = decltype(nullary);
3733
+ using unary_t = decltype(unary);
3734
+ const auto higher1st = [](nullary_t f){ return f(); };
3735
+ const auto higher2nd = [unary](nullary_t f1){
3736
+ return [unary, f1](unary_t f2){ return f2(unary(f1())); };
3737
+ };
3738
+ return higher1st(nullary) + higher2nd(nullary)(unary);
3739
+ }
3740
+
3741
+ }
3742
+
3743
+ namespace test_variadic_templates
3744
+ {
3745
+
3746
+ template <int...>
3747
+ struct sum;
3748
+
3749
+ template <int N0, int... N1toN>
3750
+ struct sum<N0, N1toN...>
3751
+ {
3752
+ static constexpr auto value = N0 + sum<N1toN...>::value;
3489
3753
  };
3490
- struct Child : public Base {
3491
- virtual void f() override {}
3754
+
3755
+ template <>
3756
+ struct sum<>
3757
+ {
3758
+ static constexpr auto value = 0;
3492
3759
  };
3493
3760
 
3494
- typedef check<check<bool>> right_angle_brackets;
3761
+ static_assert(sum<>::value == 0, "");
3762
+ static_assert(sum<1>::value == 1, "");
3763
+ static_assert(sum<23>::value == 23, "");
3764
+ static_assert(sum<1, 2>::value == 3, "");
3765
+ static_assert(sum<5, 5, 11>::value == 21, "");
3766
+ static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
3767
+
3768
+ }
3769
+
3770
+ // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
3771
+ // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
3772
+ // because of this.
3773
+ namespace test_template_alias_sfinae
3774
+ {
3775
+
3776
+ struct foo {};
3777
+
3778
+ template<typename T>
3779
+ using member = typename T::member_type;
3780
+
3781
+ template<typename T>
3782
+ void func(...) {}
3783
+
3784
+ template<typename T>
3785
+ void func(member<T>*) {}
3786
+
3787
+ void test();
3788
+
3789
+ void test() { func<foo>(0); }
3790
+
3791
+ }
3792
+
3793
+ } // namespace cxx11
3794
+
3795
+ #endif // __cplusplus >= 201103L
3796
+
3797
+
3798
+
3495
3799
 
3496
- int a;
3497
- decltype(a) b;
3800
+ // If the compiler admits that it is not ready for C++14, why torture it?
3801
+ // Hopefully, this will speed up the test.
3802
+
3803
+ #ifndef __cplusplus
3804
+
3805
+ #error "This is not a C++ compiler"
3806
+
3807
+ #elif __cplusplus < 201402L
3808
+
3809
+ #error "This is not a C++14 compiler"
3810
+
3811
+ #else
3812
+
3813
+ namespace cxx14
3814
+ {
3815
+
3816
+ namespace test_polymorphic_lambdas
3817
+ {
3818
+
3819
+ int
3820
+ test()
3821
+ {
3822
+ const auto lambda = [](auto&&... args){
3823
+ const auto istiny = [](auto x){
3824
+ return (sizeof(x) == 1UL) ? 1 : 0;
3825
+ };
3826
+ const int aretiny[] = { istiny(args)... };
3827
+ return aretiny[0];
3828
+ };
3829
+ return lambda(1, 1L, 1.0f, '1');
3830
+ }
3831
+
3832
+ }
3833
+
3834
+ namespace test_binary_literals
3835
+ {
3836
+
3837
+ constexpr auto ivii = 0b0000000000101010;
3838
+ static_assert(ivii == 42, "wrong value");
3839
+
3840
+ }
3841
+
3842
+ namespace test_generalized_constexpr
3843
+ {
3844
+
3845
+ template < typename CharT >
3846
+ constexpr unsigned long
3847
+ strlen_c(const CharT *const s) noexcept
3848
+ {
3849
+ auto length = 0UL;
3850
+ for (auto p = s; *p; ++p)
3851
+ ++length;
3852
+ return length;
3853
+ }
3854
+
3855
+ static_assert(strlen_c("") == 0UL, "");
3856
+ static_assert(strlen_c("x") == 1UL, "");
3857
+ static_assert(strlen_c("test") == 4UL, "");
3858
+ static_assert(strlen_c("another\0test") == 7UL, "");
3859
+
3860
+ }
3861
+
3862
+ namespace test_lambda_init_capture
3863
+ {
3864
+
3865
+ int
3866
+ test()
3867
+ {
3868
+ auto x = 0;
3869
+ const auto lambda1 = [a = x](int b){ return a + b; };
3870
+ const auto lambda2 = [a = lambda1(x)](){ return a; };
3871
+ return lambda2();
3872
+ }
3873
+
3874
+ }
3875
+
3876
+ namespace test_digit_separators
3877
+ {
3878
+
3879
+ constexpr auto ten_million = 100'000'000;
3880
+ static_assert(ten_million == 100000000, "");
3881
+
3882
+ }
3883
+
3884
+ namespace test_return_type_deduction
3885
+ {
3886
+
3887
+ auto f(int& x) { return x; }
3888
+ decltype(auto) g(int& x) { return x; }
3889
+
3890
+ template < typename T1, typename T2 >
3891
+ struct is_same
3892
+ {
3893
+ static constexpr auto value = false;
3894
+ };
3895
+
3896
+ template < typename T >
3897
+ struct is_same<T, T>
3898
+ {
3899
+ static constexpr auto value = true;
3900
+ };
3901
+
3902
+ int
3903
+ test()
3904
+ {
3905
+ auto x = 0;
3906
+ static_assert(is_same<int, decltype(f(x))>::value, "");
3907
+ static_assert(is_same<int&, decltype(g(x))>::value, "");
3908
+ return x;
3909
+ }
3910
+
3911
+ }
3912
+
3913
+ } // namespace cxx14
3914
+
3915
+ #endif // __cplusplus >= 201402L
3498
3916
 
3499
- typedef check<int> check_type;
3500
- check_type c;
3501
- check_type&& cr = static_cast<check_type&&>(c);
3502
3917
 
3503
- auto d = a;
3504
- auto l = [](){};
3505
3918
 
3506
3919
  _ACEOF
3507
3920
  if ac_fn_cxx_try_compile "$LINENO"; then :
3508
- ax_cv_cxx_compile_cxx11=yes
3921
+ eval $cachevar=yes
3509
3922
  else
3510
- ax_cv_cxx_compile_cxx11=no
3923
+ eval $cachevar=no
3511
3924
  fi
3512
3925
  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3926
+ CXX="$ac_save_CXX"
3513
3927
  fi
3514
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
3515
- $as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
3516
- if test x$ax_cv_cxx_compile_cxx11 = xyes; then
3517
- ac_success=yes
3928
+ eval ac_res=\$$cachevar
3929
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
3930
+ $as_echo "$ac_res" >&6; }
3931
+ if eval test x\$$cachevar = xyes; then
3932
+ CXX="$CXX $switch"
3933
+ if test -n "$CXXCPP" ; then
3934
+ CXXCPP="$CXXCPP $switch"
3935
+ fi
3936
+ ac_success=yes
3937
+ break
3938
+ fi
3939
+ done
3940
+ if test x$ac_success = xyes; then
3941
+ break
3942
+ fi
3943
+ done
3518
3944
  fi
3519
-
3520
3945
  ac_ext=cpp
3521
3946
  ac_cpp='$CXXCPP $CPPFLAGS'
3522
3947
  ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3523
3948
  ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3524
3949
  ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
3525
3950
 
3526
- if test x$ax_cxx_compile_cxx11_required = xtrue; then
3951
+ if test x$ax_cxx_compile_cxx14_required = xtrue; then
3527
3952
  if test x$ac_success = xno; then
3528
- as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
3953
+ as_fn_error $? "*** A compiler with support for C++14 language features is required." "$LINENO" 5
3529
3954
  fi
3955
+ fi
3956
+ if test x$ac_success = xno; then
3957
+ HAVE_CXX14=0
3958
+ { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++14 support was found" >&5
3959
+ $as_echo "$as_me: No compiler with C++14 support was found" >&6;}
3530
3960
  else
3531
- if test x$ac_success = xno; then
3532
- HAVE_CXX11=0
3533
- { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
3534
- $as_echo "$as_me: No compiler with C++11 support was found" >&6;}
3535
- else
3536
- HAVE_CXX11=1
3537
-
3538
- $as_echo "#define HAVE_CXX11 1" >>confdefs.h
3539
-
3540
- fi
3961
+ HAVE_CXX14=1
3541
3962
 
3963
+ $as_echo "#define HAVE_CXX14 1" >>confdefs.h
3542
3964
 
3543
3965
  fi
3544
3966
 
@@ -3553,6 +3975,7 @@ $as_echo "#define HAVE_CXX11 1" >>confdefs.h
3553
3975
 
3554
3976
 
3555
3977
 
3978
+
3556
3979
  # Check whether --with-ruby was given.
3557
3980
  if test "${with_ruby+set}" = set; then :
3558
3981
  withval=$with_ruby; RUBY=$withval
@@ -5804,7 +6227,7 @@ esac
5804
6227
  #echo DX_ENV=$DX_ENV
5805
6228
 
5806
6229
 
5807
- RICE_SAMPLES="enum map inheritance"
6230
+ RICE_SAMPLES="enum map inheritance callbacks"
5808
6231
 
5809
6232
 
5810
6233
  RICE_ROOT=`pwd`
@@ -7313,7 +7736,9 @@ $as_echo X/"$am_mf" |
7313
7736
  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
7314
7737
  $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
7315
7738
  as_fn_error $? "Something went wrong bootstrapping makefile fragments
7316
- for automatic dependency tracking. Try re-running configure with the
7739
+ for automatic dependency tracking. If GNU make was not used, consider
7740
+ re-running the configure script with MAKE=\"gmake\" (or whatever is
7741
+ necessary). You can also try re-running configure with the
7317
7742
  '--disable-dependency-tracking' option to at least be able to build
7318
7743
  the package (albeit without support for automatic dependency tracking).
7319
7744
  See \`config.log' for more details" "$LINENO" 5; }