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