From 8301a3c8e542675e9b5f310d79ad24b9a12baaf8 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: [PATCH] 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 --- korundum/bin/Makefile.am | 2 ++ .../{rubylib/korundum => }/configure.in.in | 35 +++++++++++++++++-- korundum/rubylib/korundum/Makefile.am | 2 ++ qtruby/bin/Makefile.am | 2 ++ qtruby/{rubylib/qtruby => }/configure.in.in | 35 +++++++++++++++++-- qtruby/rubylib/designer/uilib/Makefile.am | 2 ++ qtruby/rubylib/qtruby/Makefile.am | 2 ++ 7 files changed, 76 insertions(+), 4 deletions(-) rename korundum/{rubylib/korundum => }/configure.in.in (74%) rename qtruby/{rubylib/qtruby => }/configure.in.in (74%) diff --git a/korundum/bin/Makefile.am b/korundum/bin/Makefile.am index 508f7731..47a8bb02 100644 --- a/korundum/bin/Makefile.am +++ b/korundum/bin/Makefile.am @@ -1,3 +1,5 @@ +CXXFLAGS += $(RUBY_CXXFLAGS) + INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS) bin_PROGRAMS = krubyinit diff --git a/korundum/rubylib/korundum/configure.in.in b/korundum/configure.in.in similarity index 74% rename from korundum/rubylib/korundum/configure.in.in rename to korundum/configure.in.in index 0a987639..c420adc9 100644 --- a/korundum/rubylib/korundum/configure.in.in +++ b/korundum/configure.in.in @@ -32,6 +32,37 @@ else 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%/} @@ -46,7 +77,8 @@ else libdir $RUBY_LIBDIR, includedir $RUBY_INCLUDEDIR, librubyarg $RUBY_LIBRUBYARG, - cflags $RUBY_CFLAGS]) + cflags $RUBY_CFLAGS, + cxxflags $RUBY_CXXFLAGS]) AC_SUBST(RUBY_ARCHDIR) AC_SUBST(RUBY_SITEARCHDIR) AC_SUBST(RUBY_SITEDIR) @@ -56,4 +88,3 @@ else AC_SUBST(RUBY_LIBRUBYARG) AC_SUBST(RUBY_CFLAGS) fi - diff --git a/korundum/rubylib/korundum/Makefile.am b/korundum/rubylib/korundum/Makefile.am index 840b6ab6..74995c3d 100644 --- a/korundum/rubylib/korundum/Makefile.am +++ b/korundum/rubylib/korundum/Makefile.am @@ -1,3 +1,5 @@ +CXXFLAGS += $(RUBY_CXXFLAGS) + INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS) rubylibdir = $(RUBY_ARCHDIR) diff --git a/qtruby/bin/Makefile.am b/qtruby/bin/Makefile.am index a1005f0b..988ba3d4 100644 --- a/qtruby/bin/Makefile.am +++ b/qtruby/bin/Makefile.am @@ -1,3 +1,5 @@ +CXXFLAGS += $(RUBY_CXXFLAGS) + INCLUDES = $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS) bin_PROGRAMS = qtrubyinit diff --git a/qtruby/rubylib/qtruby/configure.in.in b/qtruby/configure.in.in similarity index 74% rename from qtruby/rubylib/qtruby/configure.in.in rename to qtruby/configure.in.in index db0594a3..84ad88ec 100644 --- a/qtruby/rubylib/qtruby/configure.in.in +++ b/qtruby/configure.in.in @@ -32,6 +32,37 @@ else 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%/} @@ -46,7 +77,8 @@ else libdir $RUBY_LIBDIR, includedir $RUBY_INCLUDEDIR, librubyarg $RUBY_LIBRUBYARG, - cflags $RUBY_CFLAGS]) + cflags $RUBY_CFLAGS, + cxxflags $RUBY_CXXFLAGS]) AC_SUBST(RUBY_ARCHDIR) AC_SUBST(RUBY_SITEARCHDIR) AC_SUBST(RUBY_SITEDIR) @@ -56,4 +88,3 @@ else AC_SUBST(RUBY_LIBRUBYARG) AC_SUBST(RUBY_CFLAGS) fi - diff --git a/qtruby/rubylib/designer/uilib/Makefile.am b/qtruby/rubylib/designer/uilib/Makefile.am index 45876ed6..80363009 100644 --- a/qtruby/rubylib/designer/uilib/Makefile.am +++ b/qtruby/rubylib/designer/uilib/Makefile.am @@ -1,3 +1,5 @@ +CXXFLAGS += $(RUBY_CXXFLAGS) + INCLUDES = -I$(top_srcdir)/smoke -I$(top_srcdir)/qtruby/rubylib/qtruby $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS) rubylibdir = $(RUBY_ARCHDIR) diff --git a/qtruby/rubylib/qtruby/Makefile.am b/qtruby/rubylib/qtruby/Makefile.am index 7083719c..c273c599 100644 --- a/qtruby/rubylib/qtruby/Makefile.am +++ b/qtruby/rubylib/qtruby/Makefile.am @@ -1,3 +1,5 @@ +CXXFLAGS += $(RUBY_CXXFLAGS) + INCLUDES = -I$(top_srcdir)/smoke $(all_includes) -I$(RUBY_ARCHDIR) $(RUBY_CFLAGS) noinst_HEADERS = qtruby.h marshall.h smokeruby.h extconf.rb