summaryrefslogtreecommitdiffstats
path: root/qtruby/configure.in.in
diff options
context:
space:
mode:
authorSlávek Banko <slavek.banko@axis.cz>2021-09-22 20:38:45 +0200
committerSlávek Banko <slavek.banko@axis.cz>2021-09-22 20:38:45 +0200
commit8301a3c8e542675e9b5f310d79ad24b9a12baaf8 (patch)
treed40d1bc1f37094819f52c6813f023fa641f0ec37 /qtruby/configure.in.in
parenta62663c5fdfe5093a2a720e31b55cef3de707e6a (diff)
downloadtdebindings-8301a3c8e542675e9b5f310d79ad24b9a12baaf8.tar.gz
tdebindings-8301a3c8e542675e9b5f310d79ad24b9a12baaf8.zip
Add check whether Ruby requires explicit specification of C++ standard.
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Diffstat (limited to 'qtruby/configure.in.in')
-rw-r--r--qtruby/configure.in.in90
1 files changed, 90 insertions, 0 deletions
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.h>
+ ],[ ],
+ 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