In most cases it is not needed because Ruby libraries are in the default path. At the same time, rpath pointing to the default path is prohibited by rpmbuild on Fedora. This is related to issue #87 on GitHub.
206 lines
4.7 KiB
Plaintext
206 lines
4.7 KiB
Plaintext
|
|
# Copyright (C) Alexander Borisov
|
|
# Copyright (C) NGINX, Inc.
|
|
|
|
|
|
shift
|
|
|
|
for nxt_option; do
|
|
|
|
case "$nxt_option" in
|
|
-*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
*) value="" ;;
|
|
esac
|
|
|
|
case "$nxt_option" in
|
|
--ruby=*) NXT_RUBY="$value" ;;
|
|
--module=*) NXT_RUBY_MODULE="$value" ;;
|
|
|
|
--help)
|
|
cat << END
|
|
|
|
--ruby=FILE set ruby executable, default: ruby
|
|
--module=NAME set unit ruby module name
|
|
|
|
END
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
echo
|
|
echo $0: error: invalid Ruby option \"$nxt_option\"
|
|
echo
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
if [ ! -f $NXT_AUTOCONF_DATA ]; then
|
|
echo
|
|
echo Please run common $0 before configuring module \"$nxt_module\".
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
. $NXT_AUTOCONF_DATA
|
|
|
|
$echo "configuring Ruby module"
|
|
$echo "configuring Ruby module ..." >> $NXT_AUTOCONF_ERR
|
|
|
|
NXT_RUBY=${NXT_RUBY=ruby}
|
|
NXT_RUBY_MODULE=${NXT_RUBY_MODULE=${NXT_RUBY}}
|
|
|
|
nxt_found=no
|
|
|
|
if /bin/sh -c "$NXT_RUBY -v" >> $NXT_AUTOCONF_ERR 2>&1; then
|
|
|
|
NXT_RUBY_RUBYHDRDIR=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["rubyhdrdir"])'`
|
|
NXT_RUBY_ARCHHDRDIR=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["rubyarchhdrdir"])'`
|
|
NXT_RUBY_INCPATH="-I$NXT_RUBY_ARCHHDRDIR -I$NXT_RUBY_RUBYHDRDIR"
|
|
|
|
NXT_RUBY_LIBNAME=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["RUBY_SO_NAME"])'`
|
|
NXT_RUBY_LIBSCONF=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["LIBS"])'`
|
|
NXT_RUBY_LIBS="-l$NXT_RUBY_LIBNAME $NXT_RUBY_LIBSCONF"
|
|
|
|
nxt_feature="Ruby library"
|
|
nxt_feature_name=""
|
|
nxt_feature_run=no
|
|
nxt_feature_incs="${NXT_RUBY_INCPATH}"
|
|
nxt_feature_libs="${NXT_RUBY_LIBS}"
|
|
nxt_feature_test="
|
|
#include <ruby.h>
|
|
|
|
int main() {
|
|
ruby_init();
|
|
return ruby_cleanup(0);
|
|
}"
|
|
|
|
. auto/feature
|
|
|
|
if [ $nxt_found = no ]; then
|
|
NXT_RUBY_LIBPATH=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["libdir"])'`
|
|
NXT_RUBY_LIBS="-L$NXT_RUBY_LIBPATH -Wl,-rpath,${NXT_RUBY_LIBPATH} $NXT_RUBY_LIBS"
|
|
|
|
nxt_feature="Ruby library in $NXT_RUBY_LIBPATH"
|
|
nxt_feature_name=""
|
|
nxt_feature_run=no
|
|
nxt_feature_incs="${NXT_RUBY_INCPATH}"
|
|
nxt_feature_libs="${NXT_RUBY_LIBS}"
|
|
nxt_feature_test="
|
|
#include <ruby.h>
|
|
|
|
int main() {
|
|
ruby_init();
|
|
return ruby_cleanup(0);
|
|
}"
|
|
|
|
. auto/feature
|
|
fi
|
|
|
|
else
|
|
$echo "checking for Ruby ... not found"
|
|
fi
|
|
|
|
if [ $nxt_found = no ]; then
|
|
$echo
|
|
$echo $0: error: no Ruby found.
|
|
$echo
|
|
exit 1;
|
|
fi
|
|
|
|
|
|
nxt_feature="Ruby version"
|
|
nxt_feature_name=""
|
|
nxt_feature_run=value
|
|
nxt_feature_incs="${NXT_RUBY_INCPATH}"
|
|
nxt_feature_libs="${NXT_RUBY_LIBS}"
|
|
nxt_feature_test="
|
|
#include <ruby.h>
|
|
#include <ruby/version.h>
|
|
|
|
int main() {
|
|
printf(\"%s\", ruby_version);
|
|
return 0;
|
|
}"
|
|
|
|
. auto/feature
|
|
|
|
|
|
if grep ^$NXT_RUBY_MODULE: $NXT_MAKEFILE 2>&1 > /dev/null; then
|
|
$echo
|
|
$echo $0: error: duplicate \"$NXT_RUBY_MODULE\" module configured.
|
|
$echo
|
|
exit 1;
|
|
fi
|
|
|
|
$echo " + Ruby module: ${NXT_RUBY_MODULE}.unit.so"
|
|
|
|
. auto/cc/deps
|
|
|
|
$echo >> $NXT_MAKEFILE
|
|
|
|
NXT_RUBY_MODULE_SRCS=" \
|
|
src/ruby/nxt_ruby.c \
|
|
src/ruby/nxt_ruby_stream_io.c
|
|
"
|
|
|
|
# The Ruby module object files.
|
|
|
|
nxt_objs=$NXT_BUILD_DIR/src/nxt_unit.o
|
|
|
|
for nxt_src in $NXT_RUBY_MODULE_SRCS; do
|
|
|
|
nxt_obj=${nxt_src%.c}-$NXT_RUBY_MODULE.o
|
|
nxt_dep=${nxt_src%.c}-$NXT_RUBY_MODULE.dep
|
|
nxt_dep_flags=`nxt_gen_dep_flags`
|
|
nxt_dep_post=`nxt_gen_dep_post`
|
|
nxt_objs="$nxt_objs $NXT_BUILD_DIR/$nxt_obj"
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
$NXT_BUILD_DIR/$nxt_obj: $nxt_src
|
|
mkdir -p $NXT_BUILD_DIR/src/ruby
|
|
\$(CC) -c \$(CFLAGS) \$(NXT_INCS) $NXT_RUBY_INCPATH \\
|
|
$nxt_dep_flags \\
|
|
-o $NXT_BUILD_DIR/$nxt_obj $nxt_src
|
|
$nxt_dep_post
|
|
|
|
-include $NXT_BUILD_DIR/$nxt_dep
|
|
|
|
END
|
|
|
|
done
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
.PHONY: ${NXT_RUBY_MODULE}
|
|
.PHONY: ${NXT_RUBY_MODULE}-install
|
|
.PHONY: ${NXT_RUBY_MODULE}-uninstall
|
|
|
|
all: ${NXT_RUBY_MODULE}
|
|
|
|
${NXT_RUBY_MODULE}: $NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so
|
|
|
|
$NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so: $nxt_objs
|
|
\$(NXT_MODULE_LINK) -o $NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so \\
|
|
$nxt_objs $NXT_RUBY_LIBS $NXT_LD_OPT
|
|
|
|
|
|
install: ${NXT_RUBY_MODULE}-install
|
|
|
|
${NXT_RUBY_MODULE}-install: ${NXT_RUBY_MODULE} install-check
|
|
install -d \$(DESTDIR)$NXT_MODULES
|
|
install -p $NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so \\
|
|
\$(DESTDIR)$NXT_MODULES/
|
|
|
|
|
|
uninstall: ${NXT_RUBY_MODULE}-uninstall
|
|
|
|
${NXT_RUBY_MODULE}-uninstall:
|
|
rm -f \$(DESTDIR)$NXT_MODULES/${NXT_RUBY_MODULE}.unit.so
|
|
@rmdir -p \$(DESTDIR)$NXT_MODULES 2>/dev/null || true
|
|
|
|
END
|