From a86a175c4aaac30870baa8af66dfd1fc42ea1bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Wed, 22 Sep 2021 20:38:45 +0200 Subject: Add check whether Ruby requires explicit specification of C++ standard. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko (cherry picked from commit 8301a3c8e542675e9b5f310d79ad24b9a12baaf8) --- qtruby/configure.in.in | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 qtruby/configure.in.in (limited to 'qtruby/configure.in.in') diff --git a/qtruby/configure.in.in b/qtruby/configure.in.in new file mode 100644 index 00000000..84ad88ec --- /dev/null +++ b/qtruby/configure.in.in @@ -0,0 +1,90 @@ +AC_CHECK_PROG(RUBY_EXECUTABLE, ruby, ruby) + +if test -z "RUBY_EXECUTABLE"; then + DO_NOT_COMPILE="$DO_NOT_COMPILE qtruby" +else + RUBY_MAJOR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(MAJOR))"` + RUBY_MINOR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(MINOR))"` + + RUBY_ARCHDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(archdir))"` + RUBY_SITEARCHDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(sitearchdir))"` + RUBY_SITEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(sitelibdir))"` + RUBY_LIBDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(libdir))"` + RUBY_RUBYLIBDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubylibdir))"` + RUBY_LIBRUBYARG=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(LIBRUBYARG_SHARED))"` + + RUBY_SERIES="$RUBY_MAJOR$RUBY_MINOR" + if test "$RUBY_SERIES" -ge "19"; then + AC_DEFINE_UNQUOTED(HAVE_RUBY_1_9, 1, [Defines if your system has Ruby 1.9.x]) + fi + + if test `${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.key?(%q(rubyhdrdir))"` = "true"; then + RUBY_INCLUDEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubyhdrdir))"` + if test `${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.key?(%q(rubyarchhdrdir))"` = "true"; then + RUBY_ARCHINCLUDEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(rubyarchhdrdir))"` + else + RUBY_ARCH=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(arch))"` + RUBY_ARCHINCLUDEDIR=${RUBY_INCLUDEDIR}/${RUBY_ARCH} + fi + RUBY_CFLAGS="-I${RUBY_INCLUDEDIR} -I${RUBY_ARCHINCLUDEDIR}" + else + RUBY_INCLUDEDIR=`${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG.fetch(%q(archdir))"` + RUBY_CFLAGS="-I${RUBY_INCLUDEDIR}" + fi + + # check if Ruby requires explicit specification of C++ standard + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + SAVED_CXXFLAGS="$CXXFLAGS" + for CXX_STD_TEST in "" 11 14 17; do + CXXFLAGS="$SAVED_CXXFLAGS" + if test "x$CXX_STD_TEST" = "x"; then + AC_MSG_CHECKING([Ruby build with default C++ standard]) + RUBY_CXXFLAGS="" + else + AC_MSG_CHECKING([Ruby build with C++$CXX_STD_TEST]) + RUBY_CXXFLAGS="-std=c++$CXX_STD_TEST" + fi + CXXFLAGS="$SAVED_CXXFLAGS $RUBY_CFLAGS $RUBY_CXXFLAGS" + AC_TRY_COMPILE([ + #include + ],[ ], + ruby_cxx_std=yes, + ruby_cxx_std=no + ) + if test "x$ruby_cxx_std" = "xyes"; then + AC_SUBST(RUBY_CXXFLAGS) + AC_MSG_RESULT(yes) + break + else + AC_MSG_RESULT(no) + fi + done + CXXFLAGS="$SAVED_CXXFLAGS" + AC_LANG_RESTORE + + # Removes trailing slashes, if any, to avoid fail to install with recent libtool. + RUBY_ARCHDIR=${RUBY_ARCHDIR%/} + RUBY_SITEDIR=${RUBY_SITEDIR%/} + RUBY_LIBDIR=${RUBY_LIBDIR%/} + RUBY_RUBYLIBDIR=${RUBY_RUBYLIBDIR%/} + + AC_MSG_RESULT([\ + archdir $RUBY_ARCHDIR, + sitearchdir $RUBY_SITEARCHDIR, + sitedir $RUBY_SITEDIR, + rubylibdir $RUBY_RUBYLIBDIR, + libdir $RUBY_LIBDIR, + includedir $RUBY_INCLUDEDIR, + librubyarg $RUBY_LIBRUBYARG, + cflags $RUBY_CFLAGS, + cxxflags $RUBY_CXXFLAGS]) + AC_SUBST(RUBY_ARCHDIR) + AC_SUBST(RUBY_SITEARCHDIR) + AC_SUBST(RUBY_SITEDIR) + AC_SUBST(RUBY_RUBYLIBDIR) + AC_SUBST(RUBY_LIBDIR) + AC_SUBST(RUBY_INCLUDEDIR) + AC_SUBST(RUBY_LIBRUBYARG) + AC_SUBST(RUBY_CFLAGS) +fi -- cgit v1.2.1