Menu

#140 Compilation error

None
closed-fixed
None
5
2018-08-28
2017-06-27
Eyolf
No

During make, I get the following (Arch Linux, all the required packages installed, as far as I can see):

Compiling tk_base.cpp                     [-Wall -g -DUSE_INLINE_TEXT=1]
tk_base.cpp:31:19: error: namespace_ does not name a type; did you mean isspace_l?
 #define namespace namespace_ // bug in tcl8.6/tkInt.h
                   ^
tk_base.cpp:31:19: error: namespace_ does not name a type; did you mean isspace_l?
 #define namespace namespace_ // bug in tcl8.6/tkInt.h
                   ^
tk_base.cpp:31:19: error: namespace_ does not name a type; did you mean isspace_l?
 #define namespace namespace_ // bug in tcl8.6/tkInt.h
                   ^
tk_base.cpp:31:19: error: namespace_ does not name a type; did you mean isspace_l?
 #define namespace namespace_ // bug in tcl8.6/tkInt.h
                   ^
tk_base.cpp:31:19: error: namespace_ does not name a type; did you mean isspace_l?
 #define namespace namespace_ // bug in tcl8.6/tkInt.h
                   ^
In file included from tk8.6/tkUnixPort.h:28:0,
                 from tk8.6/tkPort.h:27,
                 from tk8.6/tkInt.h:19,
                 from tk_base.cpp:32:
/usr/include/c++/7.1.1/math.h:39:12: error: std::acos has not been declared
 using std::acos;
            ^~~~
/usr/include/c++/7.1.1/math.h:40:12: error: std::asin has not been declared
 using std::asin;
            ^~~~
/usr/include/c++/7.1.1/math.h:41:12: error: std::atan has not been declared
 using std::atan;
            ^~~~
/usr/include/c++/7.1.1/math.h:42:12: error: std::atan2 has not been declared
 using std::atan2;
            ^~~~~
/usr/include/c++/7.1.1/math.h:43:12: error: std::cos has not been declared
 using std::cos;
            ^~~
/usr/include/c++/7.1.1/math.h:44:12: error: std::sin has not been declared
 using std::sin;
            ^~~
/usr/include/c++/7.1.1/math.h:45:12: error: std::tan has not been declared
 using std::tan;
            ^~~
/usr/include/c++/7.1.1/math.h:46:12: error: std::cosh has not been declared
 using std::cosh;
            ^~~~
/usr/include/c++/7.1.1/math.h:47:12: error: std::sinh has not been declared
 using std::sinh;
            ^~~~
/usr/include/c++/7.1.1/math.h:48:12: error: std::tanh has not been declared
 using std::tanh;
            ^~~~
/usr/include/c++/7.1.1/math.h:49:12: error: std::exp has not been declared
 using std::exp;
            ^~~
/usr/include/c++/7.1.1/math.h:50:12: error: std::frexp has not been declared
 using std::frexp;
            ^~~~~
/usr/include/c++/7.1.1/math.h:51:12: error: std::ldexp has not been declared
 using std::ldexp;
            ^~~~~
/usr/include/c++/7.1.1/math.h:52:12: error: std::log has not been declared
 using std::log;
            ^~~
/usr/include/c++/7.1.1/math.h:53:12: error: std::log10 has not been declared
 using std::log10;
            ^~~~~
/usr/include/c++/7.1.1/math.h:54:12: error: std::modf has not been declared
 using std::modf;
            ^~~~
/usr/include/c++/7.1.1/math.h:55:12: error: std::pow has not been declared
 using std::pow;
            ^~~
/usr/include/c++/7.1.1/math.h:56:12: error: std::sqrt has not been declared
 using std::sqrt;
            ^~~~
/usr/include/c++/7.1.1/math.h:57:12: error: std::ceil has not been declared
 using std::ceil;
            ^~~~
/usr/include/c++/7.1.1/math.h:58:12: error: std::fabs has not been declared
 using std::fabs;
            ^~~~
/usr/include/c++/7.1.1/math.h:59:12: error: std::floor has not been declared
 using std::floor;
            ^~~~~
/usr/include/c++/7.1.1/math.h:60:12: error: std::fmod has not been declared
 using std::fmod;
            ^~~~
/usr/include/c++/7.1.1/math.h:63:12: error: std::fpclassify has not been declared
 using std::fpclassify;
            ^~~~~~~~~~
/usr/include/c++/7.1.1/math.h:64:12: error: std::isfinite has not been declared
 using std::isfinite;
            ^~~~~~~~
/usr/include/c++/7.1.1/math.h:65:12: error: std::isinf has not been declared
 using std::isinf;
            ^~~~~
/usr/include/c++/7.1.1/math.h:66:12: error: std::isnan has not been declared
 using std::isnan;
            ^~~~~
/usr/include/c++/7.1.1/math.h:67:12: error: std::isnormal has not been declared
 using std::isnormal;
            ^~~~~~~~
/usr/include/c++/7.1.1/math.h:68:12: error: std::signbit has not been declared
 using std::signbit;
            ^~~~~~~
/usr/include/c++/7.1.1/math.h:69:12: error: std::isgreater has not been declared
 using std::isgreater;
            ^~~~~~~~~
/usr/include/c++/7.1.1/math.h:70:12: error: std::isgreaterequal has not been declared
 using std::isgreaterequal;
            ^~~~~~~~~~~~~~
/usr/include/c++/7.1.1/math.h:71:12: error: std::isless has not been declared
 using std::isless;
            ^~~~~~
/usr/include/c++/7.1.1/math.h:72:12: error: std::islessequal has not been declared
 using std::islessequal;
            ^~~~~~~~~~~
/usr/include/c++/7.1.1/math.h:73:12: error: std::islessgreater has not been declared
 using std::islessgreater;
            ^~~~~~~~~~~~~
/usr/include/c++/7.1.1/math.h:74:12: error: std::isunordered has not been declared
 using std::isunordered;
            ^~~~~~~~~~~
/usr/include/c++/7.1.1/math.h:78:12: error: std::acosh has not been declared
 using std::acosh;
            ^~~~~
/usr/include/c++/7.1.1/math.h:79:12: error: std::asinh has not been declared
 using std::asinh;
            ^~~~~
/usr/include/c++/7.1.1/math.h:80:12: error: std::atanh has not been declared
 using std::atanh;
            ^~~~~
/usr/include/c++/7.1.1/math.h:81:12: error: std::cbrt has not been declared
 using std::cbrt;
            ^~~~
/usr/include/c++/7.1.1/math.h:82:12: error: std::copysign has not been declared
 using std::copysign;
            ^~~~~~~~
/usr/include/c++/7.1.1/math.h:83:12: error: std::erf has not been declared
 using std::erf;
            ^~~
/usr/include/c++/7.1.1/math.h:84:12: error: std::erfc has not been declared
 using std::erfc;
            ^~~~
/usr/include/c++/7.1.1/math.h:85:12: error: std::exp2 has not been declared
 using std::exp2;
            ^~~~
/usr/include/c++/7.1.1/math.h:86:12: error: std::expm1 has not been declared
 using std::expm1;
            ^~~~~
/usr/include/c++/7.1.1/math.h:87:12: error: std::fdim has not been declared
 using std::fdim;
            ^~~~
/usr/include/c++/7.1.1/math.h:88:12: error: std::fma has not been declared
 using std::fma;
            ^~~
/usr/include/c++/7.1.1/math.h:89:12: error: std::fmax has not been declared
 using std::fmax;
            ^~~~
/usr/include/c++/7.1.1/math.h:90:12: error: std::fmin has not been declared
 using std::fmin;
            ^~~~
/usr/include/c++/7.1.1/math.h:91:12: error: std::hypot has not been declared
 using std::hypot;
            ^~~~~
/usr/include/c++/7.1.1/math.h:92:12: error: std::ilogb has not been declared
 using std::ilogb;
            ^~~~~
/usr/include/c++/7.1.1/math.h:93:12: error: std::lgamma has not been declared
 using std::lgamma;
            ^~~~~~
/usr/include/c++/7.1.1/math.h:94:12: error: std::llrint has not been declared
 using std::llrint;
            ^~~~~~
/usr/include/c++/7.1.1/math.h:95:12: error: std::llround has not been declared
 using std::llround;
            ^~~~~~~
/usr/include/c++/7.1.1/math.h:96:12: error: std::log1p has not been declared
 using std::log1p;
            ^~~~~
/usr/include/c++/7.1.1/math.h:97:12: error: std::log2 has not been declared
 using std::log2;
            ^~~~
/usr/include/c++/7.1.1/math.h:98:12: error: std::logb has not been declared
 using std::logb;
            ^~~~
/usr/include/c++/7.1.1/math.h:99:12: error: std::lrint has not been declared
 using std::lrint;
            ^~~~~
/usr/include/c++/7.1.1/math.h:100:12: error: std::lround has not been declared
 using std::lround;
            ^~~~~~
/usr/include/c++/7.1.1/math.h:101:12: error: std::nearbyint has not been declared
 using std::nearbyint;
            ^~~~~~~~~
/usr/include/c++/7.1.1/math.h:102:12: error: std::nextafter has not been declared
 using std::nextafter;
            ^~~~~~~~~
/usr/include/c++/7.1.1/math.h:103:12: error: std::nexttoward has not been declared
 using std::nexttoward;
            ^~~~~~~~~~
/usr/include/c++/7.1.1/math.h:104:12: error: std::remainder has not been declared
 using std::remainder;
            ^~~~~~~~~
/usr/include/c++/7.1.1/math.h:105:12: error: std::remquo has not been declared
 using std::remquo;
            ^~~~~~
/usr/include/c++/7.1.1/math.h:106:12: error: std::rint has not been declared
 using std::rint;
            ^~~~
/usr/include/c++/7.1.1/math.h:107:12: error: std::round has not been declared
 using std::round;
            ^~~~~
/usr/include/c++/7.1.1/math.h:108:12: error: std::scalbln has not been declared
 using std::scalbln;
            ^~~~~~~
/usr/include/c++/7.1.1/math.h:109:12: error: std::scalbn has not been declared
 using std::scalbn;
            ^~~~~~
/usr/include/c++/7.1.1/math.h:110:12: error: std::tgamma has not been declared
 using std::tgamma;
            ^~~~~~
/usr/include/c++/7.1.1/math.h:111:12: error: std::trunc has not been declared
 using std::trunc;
            ^~~~~
make[2]: *** [Makefile:69: tk_base.o] Error 1
make[1]: *** [Makefile:204: recursive] Error 1
make: *** [Makefile:20: all] Error 2

Discussion

  • Gregor Cramer

    Gregor Cramer - 2017-06-27

    I committed r1221, I think it compiles again.

     

    Last edit: Gregor Cramer 2017-06-27
  • Gregor Cramer

    Gregor Cramer - 2017-06-27
    • status: open --> closed-fixed
    • assigned_to: Gregor Cramer
     
  • Eyolf

    Eyolf - 2017-06-27

    Not quite. Now i get the same batch or errors at "panedwindow":

    Compiling tk_panedwindow.cpp              [-Wall -g -DUSE_INLINE_TEXT=1]
    tk_panedwindow.cpp:37:19: error: namespace_ does not name a type; did you mean isspace_l?
     #define namespace namespace_ // bug in tcl8.6/tkInt.h
                       ^
    tk_panedwindow.cpp:37:19: error: namespace_ does not name a type; did you mean isspace_l?
     #define namespace namespace_ // bug in tcl8.6/tkInt.h
                       ^
    tk_panedwindow.cpp:37:19: error: namespace_ does not name a type; did you mean isspace_l?
     #define namespace namespace_ // bug in tcl8.6/tkInt.h
                       ^
    tk_panedwindow.cpp:37:19: error: namespace_ does not name a type; did you mean isspace_l?
     #define namespace namespace_ // bug in tcl8.6/tkInt.h
                       ^
    tk_panedwindow.cpp:37:19: error: namespace_ does not name a type; did you mean isspace_l?
     #define namespace namespace_ // bug in tcl8.6/tkInt.h
                       ^
    In file included from tk8.6/tkUnixPort.h:28:0,
                     from tk8.6/tkPort.h:27,
                     from tk8.6/tkInt.h:19,
                     from tk_panedwindow.cpp:38:
    /usr/include/c++/7.1.1/math.h:39:12: error: std::acos has not been declared
     using std::acos;
                ^~~~
    /usr/include/c++/7.1.1/math.h:40:12: error: std::asin has not been declared
     using std::asin;
                ^~~~
    /usr/include/c++/7.1.1/math.h:41:12: error: std::atan has not been declared
     using std::atan;
                ^~~~
    /usr/include/c++/7.1.1/math.h:42:12: error: std::atan2 has not been declared
     using std::atan2;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:43:12: error: std::cos has not been declared
     using std::cos;
                ^~~
    /usr/include/c++/7.1.1/math.h:44:12: error: std::sin has not been declared
     using std::sin;
                ^~~
    /usr/include/c++/7.1.1/math.h:45:12: error: std::tan has not been declared
     using std::tan;
                ^~~
    /usr/include/c++/7.1.1/math.h:46:12: error: std::cosh has not been declared
     using std::cosh;
                ^~~~
    /usr/include/c++/7.1.1/math.h:47:12: error: std::sinh has not been declared
     using std::sinh;
                ^~~~
    /usr/include/c++/7.1.1/math.h:48:12: error: std::tanh has not been declared
     using std::tanh;
                ^~~~
    /usr/include/c++/7.1.1/math.h:49:12: error: std::exp has not been declared
     using std::exp;
                ^~~
    /usr/include/c++/7.1.1/math.h:50:12: error: std::frexp has not been declared
     using std::frexp;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:51:12: error: std::ldexp has not been declared
     using std::ldexp;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:52:12: error: std::log has not been declared
     using std::log;
                ^~~
    /usr/include/c++/7.1.1/math.h:53:12: error: std::log10 has not been declared
     using std::log10;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:54:12: error: std::modf has not been declared
     using std::modf;
                ^~~~
    /usr/include/c++/7.1.1/math.h:55:12: error: std::pow has not been declared
     using std::pow;
                ^~~
    /usr/include/c++/7.1.1/math.h:56:12: error: std::sqrt has not been declared
     using std::sqrt;
                ^~~~
    /usr/include/c++/7.1.1/math.h:57:12: error: std::ceil has not been declared
     using std::ceil;
                ^~~~
    /usr/include/c++/7.1.1/math.h:58:12: error: std::fabs has not been declared
     using std::fabs;
                ^~~~
    /usr/include/c++/7.1.1/math.h:59:12: error: std::floor has not been declared
     using std::floor;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:60:12: error: std::fmod has not been declared
     using std::fmod;
                ^~~~
    /usr/include/c++/7.1.1/math.h:63:12: error: std::fpclassify has not been declared
     using std::fpclassify;
                ^~~~~~~~~~
    /usr/include/c++/7.1.1/math.h:64:12: error: std::isfinite has not been declared
     using std::isfinite;
                ^~~~~~~~
    /usr/include/c++/7.1.1/math.h:65:12: error: std::isinf has not been declared
     using std::isinf;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:66:12: error: std::isnan has not been declared
     using std::isnan;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:67:12: error: std::isnormal has not been declared
     using std::isnormal;
                ^~~~~~~~
    /usr/include/c++/7.1.1/math.h:68:12: error: std::signbit has not been declared
     using std::signbit;
                ^~~~~~~
    /usr/include/c++/7.1.1/math.h:69:12: error: std::isgreater has not been declared
     using std::isgreater;
                ^~~~~~~~~
    /usr/include/c++/7.1.1/math.h:70:12: error: std::isgreaterequal has not been declared
     using std::isgreaterequal;
                ^~~~~~~~~~~~~~
    /usr/include/c++/7.1.1/math.h:71:12: error: std::isless has not been declared
     using std::isless;
                ^~~~~~
    /usr/include/c++/7.1.1/math.h:72:12: error: std::islessequal has not been declared
     using std::islessequal;
                ^~~~~~~~~~~
    /usr/include/c++/7.1.1/math.h:73:12: error: std::islessgreater has not been declared
     using std::islessgreater;
                ^~~~~~~~~~~~~
    /usr/include/c++/7.1.1/math.h:74:12: error: std::isunordered has not been declared
     using std::isunordered;
                ^~~~~~~~~~~
    /usr/include/c++/7.1.1/math.h:78:12: error: std::acosh has not been declared
     using std::acosh;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:79:12: error: std::asinh has not been declared
     using std::asinh;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:80:12: error: std::atanh has not been declared
     using std::atanh;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:81:12: error: std::cbrt has not been declared
     using std::cbrt;
                ^~~~
    /usr/include/c++/7.1.1/math.h:82:12: error: std::copysign has not been declared
     using std::copysign;
                ^~~~~~~~
    /usr/include/c++/7.1.1/math.h:83:12: error: std::erf has not been declared
     using std::erf;
                ^~~
    /usr/include/c++/7.1.1/math.h:84:12: error: std::erfc has not been declared
     using std::erfc;
                ^~~~
    /usr/include/c++/7.1.1/math.h:85:12: error: std::exp2 has not been declared
     using std::exp2;
                ^~~~
    /usr/include/c++/7.1.1/math.h:86:12: error: std::expm1 has not been declared
     using std::expm1;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:87:12: error: std::fdim has not been declared
     using std::fdim;
                ^~~~
    /usr/include/c++/7.1.1/math.h:88:12: error: std::fma has not been declared
     using std::fma;
                ^~~
    /usr/include/c++/7.1.1/math.h:89:12: error: std::fmax has not been declared
     using std::fmax;
                ^~~~
    /usr/include/c++/7.1.1/math.h:90:12: error: std::fmin has not been declared
     using std::fmin;
                ^~~~
    /usr/include/c++/7.1.1/math.h:91:12: error: std::hypot has not been declared
     using std::hypot;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:92:12: error: std::ilogb has not been declared
     using std::ilogb;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:93:12: error: std::lgamma has not been declared
     using std::lgamma;
                ^~~~~~
    /usr/include/c++/7.1.1/math.h:94:12: error: std::llrint has not been declared
     using std::llrint;
                ^~~~~~
    /usr/include/c++/7.1.1/math.h:95:12: error: std::llround has not been declared
     using std::llround;
                ^~~~~~~
    /usr/include/c++/7.1.1/math.h:96:12: error: std::log1p has not been declared
     using std::log1p;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:97:12: error: std::log2 has not been declared
     using std::log2;
                ^~~~
    /usr/include/c++/7.1.1/math.h:98:12: error: std::logb has not been declared
     using std::logb;
                ^~~~
    /usr/include/c++/7.1.1/math.h:99:12: error: std::lrint has not been declared
     using std::lrint;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:100:12: error: std::lround has not been declared
     using std::lround;
                ^~~~~~
    /usr/include/c++/7.1.1/math.h:101:12: error: std::nearbyint has not been declared
     using std::nearbyint;
                ^~~~~~~~~
    /usr/include/c++/7.1.1/math.h:102:12: error: std::nextafter has not been declared
     using std::nextafter;
                ^~~~~~~~~
    /usr/include/c++/7.1.1/math.h:103:12: error: std::nexttoward has not been declared
     using std::nexttoward;
                ^~~~~~~~~~
    /usr/include/c++/7.1.1/math.h:104:12: error: std::remainder has not been declared
     using std::remainder;
                ^~~~~~~~~
    /usr/include/c++/7.1.1/math.h:105:12: error: std::remquo has not been declared
     using std::remquo;
                ^~~~~~
    /usr/include/c++/7.1.1/math.h:106:12: error: std::rint has not been declared
     using std::rint;
                ^~~~
    /usr/include/c++/7.1.1/math.h:107:12: error: std::round has not been declared
     using std::round;
                ^~~~~
    /usr/include/c++/7.1.1/math.h:108:12: error: std::scalbln has not been declared
     using std::scalbln;
                ^~~~~~~
    /usr/include/c++/7.1.1/math.h:109:12: error: std::scalbn has not been declared
     using std::scalbn;
                ^~~~~~
    /usr/include/c++/7.1.1/math.h:110:12: error: std::tgamma has not been declared
     using std::tgamma;
                ^~~~~~
    /usr/include/c++/7.1.1/math.h:111:12: error: std::trunc has not been declared
     using std::trunc;
                ^~~~~
    make[2]: *** [Makefile:69: tk_panedwindow.o] Error 1
    make[1]: *** [Makefile:204: recursive] Error 1
    
     
  • Xin Xin

    Xin Xin - 2017-06-28

    I have the same error in Knoppix in r1220. Also several earlier revisions had the same error, I think at least r1215, r1217. Did not try r1221.

     
    • Gregor Cramer

      Gregor Cramer - 2017-06-28

      Ok, you said because of missing files, but it is a compilation bug. This bug
      does not happen under all platforms, especially not under mine, but it is fixed
      in r1223.

       
  • Xin Xin

    Xin Xin - 2017-06-28

    Thanks, I was wrong.

     
  • Eyolf

    Eyolf - 2017-06-28

    We're getting there, but I still got compilation errors:

    Compiling book.cpp          [-O3 -Wall -Wcast-qual -fno-exceptions -fno-rtti -DHASHFULL -DTHREECHECK -DNDEBUG -DIS_64BIT -DUSE_BSFQ -flto]
    In file included from /usr/include/c++/7.1.1/iostream:40:0,
                     from book.cpp:28:
    /usr/include/c++/7.1.1/istream: In instantiation of struct std::__is_convertible_to_basic_istream<PolyglotBook&>:
    /usr/include/c++/7.1.1/istream:955:5:   required by substitution of template<class _Istream, class _Tp> typename std::enable_if<std::__and_<std::__not_<std::is_lvalue_reference<_Tp> >, std::__is_convertible_to_basic_istream<_Istream>, std::__is_extractable<_Istream&, _Tp&&, void> >::value, typename std::__is_convertible_to_basic_istream<_Tp>::istream_type>::type std::operator>>(_Istream&&, _Tp&&) [with _Istream = PolyglotBook&; _Tp = long unsigned int&]
    book.cpp:371:21:   required from here
    /usr/include/c++/7.1.1/istream:921:18: error: std::basic_istream<char> is an inaccessible base of PolyglotBook
      decltype(__check(declval<typename remove_reference<_Tp>::type*>()));
               ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /usr/include/c++/7.1.1/istream:921:18: error: std::basic_istream<char> is an inaccessible base of PolyglotBook
    make[2]: *** [Makefile:245: book.o] Error 1
    make[1]: *** [Makefile:16: all] Error 1
    make: *** [Makefile:22: all] Error 2
    
     
  • Gregor Cramer

    Gregor Cramer - 2017-06-28

    This is a compiler problem, see Bug libstdc++/80940. Is it possible to use an older compiler version? The newest compiler versions are always beta versions. With the configure script you are doing this in that way (as an example):

    ./configure --gcc-version=6.8
    
     
  • Eyolf

    Eyolf - 2017-06-29

    This time, I got as far as this:

    Building stockfish-scidb
    g++-6.3: error trying to exec 'lto1': execvp: No such file or directory
    lto-wrapper: fatal error: g++-6.3 returned 1 exit status
    compilation terminated.
    ld: error: lto-wrapper failed
    make[2]: *** [Makefile:249: stockfish-scidb] Error 1
    make[1]: *** [Makefile:16: all] Error 1
    make: *** [Makefile:22: all] Error 2
    
     
  • Eyolf

    Eyolf - 2017-06-29

    I managed to get a complete build, though, by commenting out the engine lines in the make file and using the standalone installation of stockfish. It's a workaround, but at least I'm back in business...

     
  • Xin Xin

    Xin Xin - 2017-06-29

    r1224 compiles in Knoppix.

     

Log in to post a comment.

MongoDB Logo MongoDB
Gen AI apps are built with MongoDB Atlas
Atlas offers built-in vector search and global availability across 125+ regions. Start building AI apps faster, all in one place.
Try Free →