1584Salexander.borisov@nginx.com 2584Salexander.borisov@nginx.com# Copyright (C) Alexander Borisov 3584Salexander.borisov@nginx.com# Copyright (C) NGINX, Inc. 4584Salexander.borisov@nginx.com 5584Salexander.borisov@nginx.com 6584Salexander.borisov@nginx.comshift 7584Salexander.borisov@nginx.com 8584Salexander.borisov@nginx.comfor nxt_option; do 9584Salexander.borisov@nginx.com 10584Salexander.borisov@nginx.com case "$nxt_option" in 11584Salexander.borisov@nginx.com -*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; 12584Salexander.borisov@nginx.com *) value="" ;; 13584Salexander.borisov@nginx.com esac 14584Salexander.borisov@nginx.com 15584Salexander.borisov@nginx.com case "$nxt_option" in 16584Salexander.borisov@nginx.com --ruby=*) NXT_RUBY="$value" ;; 17584Salexander.borisov@nginx.com --module=*) NXT_RUBY_MODULE="$value" ;; 18584Salexander.borisov@nginx.com 19584Salexander.borisov@nginx.com --help) 20584Salexander.borisov@nginx.com cat << END 21584Salexander.borisov@nginx.com 22584Salexander.borisov@nginx.com --ruby=FILE set ruby executable, default: ruby 23584Salexander.borisov@nginx.com --module=NAME set unit ruby module name 24584Salexander.borisov@nginx.com 25584Salexander.borisov@nginx.comEND 26584Salexander.borisov@nginx.com exit 0 27584Salexander.borisov@nginx.com ;; 28584Salexander.borisov@nginx.com 29584Salexander.borisov@nginx.com *) 30584Salexander.borisov@nginx.com echo 31584Salexander.borisov@nginx.com echo $0: error: invalid Ruby option \"$nxt_option\" 32584Salexander.borisov@nginx.com echo 33584Salexander.borisov@nginx.com exit 1 34584Salexander.borisov@nginx.com ;; 35584Salexander.borisov@nginx.com esac 36584Salexander.borisov@nginx.com 37584Salexander.borisov@nginx.comdone 38584Salexander.borisov@nginx.com 39584Salexander.borisov@nginx.com 40584Salexander.borisov@nginx.comif [ ! -f $NXT_AUTOCONF_DATA ]; then 41584Salexander.borisov@nginx.com echo 42584Salexander.borisov@nginx.com echo Please run common $0 before configuring module \"$nxt_module\". 43584Salexander.borisov@nginx.com echo 44584Salexander.borisov@nginx.com exit 1 45584Salexander.borisov@nginx.comfi 46584Salexander.borisov@nginx.com 47584Salexander.borisov@nginx.com. $NXT_AUTOCONF_DATA 48584Salexander.borisov@nginx.com 49584Salexander.borisov@nginx.com$echo "configuring Ruby module" 50584Salexander.borisov@nginx.com$echo "configuring Ruby module ..." >> $NXT_AUTOCONF_ERR 51584Salexander.borisov@nginx.com 52584Salexander.borisov@nginx.comNXT_RUBY=${NXT_RUBY=ruby} 53584Salexander.borisov@nginx.comNXT_RUBY_MODULE=${NXT_RUBY_MODULE=${NXT_RUBY}} 54584Salexander.borisov@nginx.com 55584Salexander.borisov@nginx.comnxt_found=no 56584Salexander.borisov@nginx.com 57584Salexander.borisov@nginx.comif /bin/sh -c "$NXT_RUBY -v" >> $NXT_AUTOCONF_ERR 2>&1; then 58584Salexander.borisov@nginx.com 59584Salexander.borisov@nginx.com NXT_RUBY_RUBYHDRDIR=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["rubyhdrdir"])'` 60584Salexander.borisov@nginx.com NXT_RUBY_ARCHHDRDIR=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["rubyarchhdrdir"])'` 61584Salexander.borisov@nginx.com NXT_RUBY_INCPATH="-I$NXT_RUBY_ARCHHDRDIR -I$NXT_RUBY_RUBYHDRDIR" 62584Salexander.borisov@nginx.com 63584Salexander.borisov@nginx.com NXT_RUBY_LIBNAME=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["RUBY_SO_NAME"])'` 64584Salexander.borisov@nginx.com NXT_RUBY_LIBSCONF=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["LIBS"])'` 65584Salexander.borisov@nginx.com NXT_RUBY_LIBPATH=`$NXT_RUBY -r rbconfig -e 'printf("%s",RbConfig::CONFIG["libdir"])'` 66584Salexander.borisov@nginx.com NXT_RUBY_LIBS="-L$NXT_RUBY_LIBPATH -Wl,-rpath,${NXT_RUBY_LIBPATH} -l$NXT_RUBY_LIBNAME $NXT_RUBY_LIBSCONF" 67584Salexander.borisov@nginx.com 68584Salexander.borisov@nginx.com nxt_feature="Ruby" 69584Salexander.borisov@nginx.com nxt_feature_name="" 70584Salexander.borisov@nginx.com nxt_feature_run=no 71584Salexander.borisov@nginx.com nxt_feature_incs="${NXT_RUBY_INCPATH}" 72584Salexander.borisov@nginx.com nxt_feature_libs="${NXT_RUBY_LIBS}" 73584Salexander.borisov@nginx.com nxt_feature_test=" 74584Salexander.borisov@nginx.com #include <ruby.h> 75584Salexander.borisov@nginx.com 76584Salexander.borisov@nginx.com int main() { 77584Salexander.borisov@nginx.com ruby_init(); 78584Salexander.borisov@nginx.com return ruby_cleanup(0); 79584Salexander.borisov@nginx.com }" 80584Salexander.borisov@nginx.com 81584Salexander.borisov@nginx.com . auto/feature 82584Salexander.borisov@nginx.com 83584Salexander.borisov@nginx.comelse 84584Salexander.borisov@nginx.com $echo "checking for Ruby ... not found" 85584Salexander.borisov@nginx.comfi 86584Salexander.borisov@nginx.com 87584Salexander.borisov@nginx.comif [ $nxt_found = no ]; then 88584Salexander.borisov@nginx.com $echo 89584Salexander.borisov@nginx.com $echo $0: error: no Ruby found. 90584Salexander.borisov@nginx.com $echo 91584Salexander.borisov@nginx.com exit 1; 92584Salexander.borisov@nginx.comfi 93584Salexander.borisov@nginx.com 94612Salexander.borisov@nginx.com 95612Salexander.borisov@nginx.comnxt_feature="Ruby version" 96612Salexander.borisov@nginx.comnxt_feature_name="" 97612Salexander.borisov@nginx.comnxt_feature_run=value 98612Salexander.borisov@nginx.comnxt_feature_incs="${NXT_RUBY_INCPATH}" 99612Salexander.borisov@nginx.comnxt_feature_libs="${NXT_RUBY_LIBS}" 100612Salexander.borisov@nginx.comnxt_feature_test=" 101612Salexander.borisov@nginx.com #include <ruby.h> 102612Salexander.borisov@nginx.com #include <ruby/version.h> 103612Salexander.borisov@nginx.com 104612Salexander.borisov@nginx.com int main() { 105612Salexander.borisov@nginx.com printf(\"%s\", ruby_version); 106612Salexander.borisov@nginx.com return 0; 107612Salexander.borisov@nginx.com }" 108612Salexander.borisov@nginx.com 109612Salexander.borisov@nginx.com. auto/feature 110612Salexander.borisov@nginx.com 111584Salexander.borisov@nginx.com 112584Salexander.borisov@nginx.comif grep ^$NXT_RUBY_MODULE: $NXT_MAKEFILE 2>&1 > /dev/null; then 113584Salexander.borisov@nginx.com $echo 114584Salexander.borisov@nginx.com $echo $0: error: duplicate \"$NXT_RUBY_MODULE\" module configured. 115584Salexander.borisov@nginx.com $echo 116584Salexander.borisov@nginx.com exit 1; 117584Salexander.borisov@nginx.comfi 118584Salexander.borisov@nginx.com 119584Salexander.borisov@nginx.com$echo " + Ruby module: ${NXT_RUBY_MODULE}.unit.so" 120584Salexander.borisov@nginx.com 121584Salexander.borisov@nginx.com. auto/cc/deps 122584Salexander.borisov@nginx.com 123584Salexander.borisov@nginx.com$echo >> $NXT_MAKEFILE 124584Salexander.borisov@nginx.com 125584Salexander.borisov@nginx.comNXT_RUBY_MODULE_SRCS=" \ 126584Salexander.borisov@nginx.com src/ruby/nxt_ruby.c \ 127584Salexander.borisov@nginx.com src/ruby/nxt_ruby_stream_io.c 128584Salexander.borisov@nginx.com" 129584Salexander.borisov@nginx.com 130584Salexander.borisov@nginx.com# The Ruby module object files. 131584Salexander.borisov@nginx.com 132584Salexander.borisov@nginx.comnxt_objs= 133584Salexander.borisov@nginx.com 134584Salexander.borisov@nginx.comfor nxt_src in $NXT_RUBY_MODULE_SRCS; do 135584Salexander.borisov@nginx.com 136584Salexander.borisov@nginx.com nxt_obj=${nxt_src%.c}-$NXT_RUBY_MODULE.o 137584Salexander.borisov@nginx.com nxt_dep=${nxt_src%.c}-$NXT_RUBY_MODULE.dep 138584Salexander.borisov@nginx.com nxt_dep_flags=`nxt_gen_dep_flags` 139584Salexander.borisov@nginx.com nxt_dep_post=`nxt_gen_dep_post` 140584Salexander.borisov@nginx.com nxt_objs="$nxt_objs $NXT_BUILD_DIR/$nxt_obj" 141584Salexander.borisov@nginx.com 142584Salexander.borisov@nginx.com cat << END >> $NXT_MAKEFILE 143584Salexander.borisov@nginx.com 144584Salexander.borisov@nginx.com$NXT_BUILD_DIR/$nxt_obj: $nxt_src 145584Salexander.borisov@nginx.com mkdir -p $NXT_BUILD_DIR/src/ruby 146584Salexander.borisov@nginx.com \$(CC) -c \$(CFLAGS) \$(NXT_INCS) $NXT_RUBY_INCPATH \\ 147584Salexander.borisov@nginx.com $nxt_dep_flags \\ 148584Salexander.borisov@nginx.com -o $NXT_BUILD_DIR/$nxt_obj $nxt_src 149584Salexander.borisov@nginx.com $nxt_dep_post 150584Salexander.borisov@nginx.com 151584Salexander.borisov@nginx.com-include $NXT_BUILD_DIR/$nxt_dep 152584Salexander.borisov@nginx.com 153584Salexander.borisov@nginx.comEND 154584Salexander.borisov@nginx.com 155584Salexander.borisov@nginx.comdone 156584Salexander.borisov@nginx.com 157584Salexander.borisov@nginx.comcat << END >> $NXT_MAKEFILE 158584Salexander.borisov@nginx.com 159584Salexander.borisov@nginx.com.PHONY: ${NXT_RUBY_MODULE} 160584Salexander.borisov@nginx.com.PHONY: ${NXT_RUBY_MODULE}-install 161584Salexander.borisov@nginx.com.PHONY: ${NXT_RUBY_MODULE}-uninstall 162584Salexander.borisov@nginx.com 163584Salexander.borisov@nginx.comall: ${NXT_RUBY_MODULE} 164584Salexander.borisov@nginx.com 165584Salexander.borisov@nginx.com${NXT_RUBY_MODULE}: $NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so 166584Salexander.borisov@nginx.com 167584Salexander.borisov@nginx.com$NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so: $nxt_objs 168584Salexander.borisov@nginx.com \$(NXT_MODULE_LINK) -o $NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so \\ 169584Salexander.borisov@nginx.com $nxt_objs $NXT_RUBY_LIBS $NXT_LD_OPT 170584Salexander.borisov@nginx.com 171584Salexander.borisov@nginx.com 172584Salexander.borisov@nginx.cominstall: ${NXT_RUBY_MODULE}-install 173584Salexander.borisov@nginx.com 174*706Sigor@sysoev.ru${NXT_RUBY_MODULE}-install: ${NXT_RUBY_MODULE} install-check 175584Salexander.borisov@nginx.com install -d \$(DESTDIR)$NXT_MODULES 176584Salexander.borisov@nginx.com install -p $NXT_BUILD_DIR/${NXT_RUBY_MODULE}.unit.so \\ 177584Salexander.borisov@nginx.com \$(DESTDIR)$NXT_MODULES/ 178584Salexander.borisov@nginx.com 179584Salexander.borisov@nginx.com 180584Salexander.borisov@nginx.comuninstall: ${NXT_RUBY_MODULE}-uninstall 181584Salexander.borisov@nginx.com 182584Salexander.borisov@nginx.com${NXT_RUBY_MODULE}-uninstall: 183584Salexander.borisov@nginx.com rm -f \$(DESTDIR)$NXT_MODULES/${NXT_RUBY_MODULE}.unit.so 184584Salexander.borisov@nginx.com @rmdir -p \$(DESTDIR)$NXT_MODULES 2>/dev/null || true 185584Salexander.borisov@nginx.com 186584Salexander.borisov@nginx.comEND 187