summaryrefslogtreecommitdiffhomepage
path: root/auto/modules/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'auto/modules/ruby')
-rw-r--r--auto/modules/ruby28
1 files changed, 27 insertions, 1 deletions
diff --git a/auto/modules/ruby b/auto/modules/ruby
index 68324b44..dbedfd72 100644
--- a/auto/modules/ruby
+++ b/auto/modules/ruby
@@ -56,6 +56,7 @@ nxt_found=no
if /bin/sh -c "$NXT_RUBY -v" >> $NXT_AUTOCONF_ERR 2>&1; then
+ NXT_RUBY_CFLAGS=
NXT_RUBY_RUBYHDRDIR=`$NXT_RUBY -rrbconfig -e 'print RbConfig::CONFIG["rubyhdrdir"]'`
NXT_RUBY_ARCHHDRDIR=`$NXT_RUBY -rrbconfig -e 'print RbConfig::CONFIG["rubyarchhdrdir"]'`
NXT_RUBY_SITEDIR=`$NXT_RUBY -rrbconfig -e 'print RbConfig::CONFIG["sitedir"]'`
@@ -72,6 +73,31 @@ if /bin/sh -c "$NXT_RUBY -v" >> $NXT_AUTOCONF_ERR 2>&1; then
NXT_RUBY_LIBPATH=`$NXT_RUBY -rrbconfig -e 'print RbConfig::CONFIG["libdir"]'`
NXT_RUBY_LIBS="-l$NXT_RUBY_LIBNAME $NXT_RUBY_LIBSCONF"
+ if [ $NXT_CC_NAME = clang ]; then
+ # Workaround Clang bug
+ nxt_feature="-fdeclspec"
+ nxt_feature_name=
+ nxt_feature_run=
+ nxt_feature_incs="-fdeclspec"
+ nxt_feature_libs=
+ nxt_feature_test="#include <stdlib.h>
+
+ __declspec(noreturn) static void f(void);
+
+ static void f(void) {
+ exit(0);
+ }
+
+ int main(void) {
+ f();
+ }"
+ . auto/feature
+
+ if [ $nxt_found = yes ]; then
+ NXT_RUBY_CFLAGS="$NXT_RUBY_CFLAGS -fdeclspec"
+ fi
+ fi
+
nxt_feature="Ruby library"
nxt_feature_name=""
nxt_feature_run=value
@@ -205,7 +231,7 @@ for nxt_src in $NXT_RUBY_MODULE_SRCS; do
$NXT_BUILD_DIR/$nxt_obj: $nxt_src $NXT_VERSION_H
mkdir -p $NXT_BUILD_DIR/src/ruby
- \$(CC) -c \$(CFLAGS) -DNXT_RUBY_MOUNTS_H=\"$NXT_RUBY_MOUNTS_HEADER\" \\
+ \$(CC) -c \$(CFLAGS) $NXT_RUBY_CFLAGS -DNXT_RUBY_MOUNTS_H=\"$NXT_RUBY_MOUNTS_HEADER\" \\
\$(NXT_INCS) $NXT_RUBY_INCPATH \\
$nxt_dep_flags \\
-o $NXT_BUILD_DIR/$nxt_obj $nxt_src