mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
configure.in: shvar_to_cpp in ruby
* configure.in: save configured load path values into verconf.in. * common.mk (verconf.h): create from verconf.in with shvar_to_cpp.rb. * tool/shvar_to_cpp.rb: turn shell variables into C macros. [Bug #7959] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
57531305bc
commit
b38e3f953c
5 changed files with 54 additions and 84 deletions
|
@ -1,4 +1,11 @@
|
|||
Wed May 15 16:56:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Wed May 15 16:58:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* configure.in: save configured load path values into verconf.in.
|
||||
|
||||
* common.mk (verconf.h): create from verconf.in with shvar_to_cpp.rb.
|
||||
|
||||
* tool/shvar_to_cpp.rb: turn shell variables into C macros.
|
||||
[Bug #7959]
|
||||
|
||||
* loadpath.c: split load path staffs from version.c.
|
||||
|
||||
|
|
|
@ -834,6 +834,10 @@ newline.$(OBJEXT): $(NEWLINE_C) {$(VPATH)}defines.h \
|
|||
{$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
|
||||
{$(VPATH)}transcode_data.h {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}subst.h
|
||||
|
||||
verconf.h: verconf.in $(PREP) $(srcdir)/tool/verconf.rb $(RBCONFIG)
|
||||
$(ECHO) creating $@
|
||||
$(Q) $(MINIRUBY) "$(srcdir)/tool/shvar_to_cpp.rb" $< > $@
|
||||
|
||||
DTRACE_DEPENDENT_OBJS = array.$(OBJEXT) \
|
||||
eval.$(OBJEXT) \
|
||||
gc.$(OBJEXT) \
|
||||
|
|
98
configure.in
98
configure.in
|
@ -3475,59 +3475,6 @@ AS_CASE(["$target_os"],
|
|||
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
|
||||
])
|
||||
|
||||
shvar_to_cpp() {
|
||||
var="$1" val="$2"
|
||||
exec_prefix_pat="`echo \"${exec_prefix}\" | sed 's/\\./\\\\./g'`"
|
||||
arch_pat="`echo \"${arch}\" | sed 's/\\./\\\\./g'`"
|
||||
sitearch_pat="`echo \"${sitearch}\" | sed 's/\\./\\\\./g'`"
|
||||
val="`echo '\"'\"${val}\"'\"' |
|
||||
sed \
|
||||
-e 's/\${\([[A-Z][A-Z_]]*\)}/\"\1\"/g' \
|
||||
-e 's|\${sitearchlibdir}|'\"${sitearchlibdir}|g\" \
|
||||
-e 's|\${sitearchincludedir}|'\"${sitearchincludedir}|g\" \
|
||||
-e 's|\${archlibdir}|'\"${archlibdir}|g\" \
|
||||
-e 's|\${archincludedir}|'\"${archincludedir}|g\" \
|
||||
-e 's|\${libdir}|'\"${libdir}|g\" \
|
||||
-e 's/\${ruby_version}/\"RUBY_LIB_VERSION\"/g' \
|
||||
-e 's/\${arch}/\"arch\"/g' \
|
||||
-e 's/\${sitearch}/\"arch\"/g' \
|
||||
-e 's/\${vendorarchdir}/\"RUBY_VENDOR_ARCH_LIB\"/g' \
|
||||
-e 's/\${sitearchdir}/\"RUBY_SITE_ARCH_LIB\"/g' \
|
||||
-e 's/\${vendorlibdir}/\"RUBY_VENDOR_LIB2\"/g' \
|
||||
-e 's/\${sitelibdir}/\"RUBY_SITE_LIB2\"/g' \
|
||||
-e 's/\${vendordir}/\"RUBY_VENDOR_LIB\"/g' \
|
||||
-e 's/\${sitedir}/\"RUBY_SITE_LIB\"/g' \
|
||||
-e 's/\${rubylibdir}/\"RUBY_LIB\"/g' \
|
||||
-e 's/\${rubylibprefix}/\"RUBY_LIB_PREFIX\"/g' \
|
||||
-e 's/\${rubyarchprefix}/\"RUBY_ARCH_PREFIX_FOR(arch)\"/g' \
|
||||
-e 's/\${rubysitearchprefix}/\"RUBY_SITEARCH_PREFIX_FOR(arch)\"/g' \
|
||||
-e 's/\${exec_prefix}/\"RUBY_EXEC_PREFIX\"/g' \
|
||||
-e \"s|${exec_prefix_pat}/|\"'\"RUBY_EXEC_PREFIX\"/|g' \
|
||||
-e \"s|${arch_pat}|\"'\"arch\"|g' \
|
||||
-e \"s|${sitearch_pat}|\"'\"sitearch\"|g' \
|
||||
-e 's|^\\\"NONE/|RUBY_EXEC_PREFIX\\\"/|' \
|
||||
-e 's|^\\\"NONE\\\"|\\\"'\"${prefix}\"'\\\"|' \
|
||||
-e 's/^\\\"\\\"\(.\)/\1/;s/\(.\)\\\"\\\"$/\1/'
|
||||
`"
|
||||
eval $var='"$val"'
|
||||
}
|
||||
|
||||
unexpand_shvar() {
|
||||
var=$1 n="" v="" expr=""
|
||||
shift
|
||||
test "$#" -eq 0 && return
|
||||
for n do
|
||||
eval v='"$'$n'"'
|
||||
v="`echo \"$v\" | sed -e ['s/\${[^${}\"]*}/\"&\"/g'] -e ['s/[][$|.\\?*]/\\\\&/g']`"
|
||||
if test -n "$v"; then
|
||||
expr=["${expr};s|"'\("[^$"]*\)'"$v|\\1\${$n}\"|g"]
|
||||
AS_CASE(["$v"], [*'${'*'}'*], [expr=["$expr;s|$v|\"\${$n}\"|g"]])
|
||||
fi
|
||||
done
|
||||
expr=['s/\${[^${}"]*}/"&"/g;'"${expr};"'s/"\(\${[^${}"]*}\)"/\1/g']
|
||||
eval $var='"`echo \"\\\"${'$var'}\\\"\" | sed \"$expr;s/\\\"//g\"`"'
|
||||
}
|
||||
|
||||
rubylibprefix='${libdir}/${RUBY_BASE_NAME}'
|
||||
AC_ARG_WITH(rubylibprefix,
|
||||
AS_HELP_STRING([--with-rubylibprefix=DIR], [prefix for ruby libraries [[LIBDIR/RUBY_BASE_NAME]]]),
|
||||
|
@ -3612,52 +3559,36 @@ AC_ARG_WITH(vendorarchdir,
|
|||
[vendorarchdir=$withval],
|
||||
[vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
|
||||
|
||||
unexpand_shvar rubylibprefix exec_prefix libdir RUBY_BASE_NAME
|
||||
unexpand_shvar rubyarchprefix exec_prefix libdir arch RUBY_BASE_NAME archlibdir rubylibprefix
|
||||
unexpand_shvar rubysitearchprefix exec_prefix libdir sitearch arch RUBY_BASE_NAME archlibdir sitearchlibdir rubylibprefix
|
||||
if test "${LOAD_RELATIVE+set}"; then
|
||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||
RUBY_EXEC_PREFIX='""'
|
||||
RUBY_EXEC_PREFIX=''
|
||||
else
|
||||
shvar_to_cpp RUBY_EXEC_PREFIX "${exec_prefix}"
|
||||
RUBY_EXEC_PREFIX="${exec_prefix}"
|
||||
fi
|
||||
shvar_to_cpp RUBY_LIB_PREFIX "${rubylibprefix}"
|
||||
shvar_to_cpp RUBY_ARCH_PREFIX_FOR "${rubyarchprefix}"
|
||||
shvar_to_cpp RUBY_SITEARCH_PREFIX_FOR "${rubysitearchprefix}"
|
||||
shvar_to_cpp RIDIR "${ridir}"
|
||||
unexpand_shvar exec_prefix prefix
|
||||
|
||||
if test ${RUBY_LIB_VERSION_STYLE+set}; then
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION_STYLE, $RUBY_LIB_VERSION_STYLE !<verconf>!)
|
||||
else
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION, [$RUBY_LIB_VERSION] !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION, "$RUBY_LIB_VERSION" !<verconf>!)
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, ${RUBY_EXEC_PREFIX} !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, ${RUBY_LIB_PREFIX} !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_ARCH_PREFIX_FOR(arch), ${RUBY_ARCH_PREFIX_FOR} !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_SITEARCH_PREFIX_FOR(arch), ${RUBY_SITEARCH_PREFIX_FOR} !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, "${RUBY_EXEC_PREFIX}" !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, "${rubylibprefix}" !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_ARCH_PREFIX_FOR(arch), "${rubyarchprefix}" !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_SITEARCH_PREFIX_FOR(arch), "${rubysitearchprefix}" !<verconf>!)
|
||||
|
||||
shvar_to_cpp RUBY_LIB "${rubylibdir}"
|
||||
if test "x${RUBY_LIB}" != 'xRUBY_LIB_PREFIX"/"RUBY_LIB_VERSION'; then
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB, ${RUBY_LIB} !<verconf>!)
|
||||
fi
|
||||
shvar_to_cpp RUBY_ARCH_LIB_FOR "${rubyarchdir}"
|
||||
AC_DEFINE_UNQUOTED(RUBY_ARCH_LIB_FOR(arch), ${RUBY_ARCH_LIB_FOR} !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_LIB, "${rubylibdir}" !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_ARCH_LIB_FOR(arch), "${rubyarchdir}" !<verconf>!)
|
||||
if test "x$sitedir" = xno; then
|
||||
AC_DEFINE(NO_RUBY_SITE_LIB, [] !<verconf>!)
|
||||
else
|
||||
shvar_to_cpp RUBY_SITE_LIB "${sitedir}"
|
||||
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB} !<verconf>!)
|
||||
shvar_to_cpp RUBY_SITE_ARCH_LIB_FOR "${sitearchdir}"
|
||||
AC_DEFINE_UNQUOTED(RUBY_SITE_ARCH_LIB_FOR(arch), ${RUBY_SITE_ARCH_LIB_FOR} !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${sitedir}" !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_SITE_ARCH_LIB_FOR(arch), "${sitearchdir}" !<verconf>!)
|
||||
fi
|
||||
if test "x$vendordir" = xno; then
|
||||
AC_DEFINE(NO_RUBY_VENDOR_LIB, [] !<verconf>!)
|
||||
else
|
||||
shvar_to_cpp RUBY_VENDOR_LIB "${vendordir}"
|
||||
AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB} !<verconf>!)
|
||||
shvar_to_cpp RUBY_VENDOR_ARCH_LIB_FOR "${vendorarchdir}"
|
||||
AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCH_LIB_FOR(arch), ${RUBY_VENDOR_ARCH_LIB_FOR} !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, "${vendordir}" !<verconf>!)
|
||||
AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCH_LIB_FOR(arch), "${vendorarchdir}" !<verconf>!)
|
||||
fi
|
||||
|
||||
AC_SUBST(libdirname, ${multiarch+arch}libdir)
|
||||
|
@ -3796,7 +3727,8 @@ guard=INCLUDE_RUBY_CONFIG_H
|
|||
echo "#endif /* $guard */"
|
||||
} | tr -d '\015' |
|
||||
${srcdir}/tool/ifchange "${config_h}" -
|
||||
sed -n 's/ !<verconf>!$//p' confdefs.h | ${srcdir}/tool/ifchange verconf.h -
|
||||
sed -n 's/ !<verconf>!$//p' confdefs.h | ${srcdir}/tool/ifchange verconf.in -
|
||||
rm -f verconf.h
|
||||
tr -d '\015' < largefile.h > confdefs.h
|
||||
rm largefile.h
|
||||
|
||||
|
|
|
@ -37,7 +37,9 @@
|
|||
|
||||
typedef char ruby_lib_version_string[(int)sizeof(RUBY_LIB_VERSION) - 2];
|
||||
|
||||
#ifndef RUBY_LIB
|
||||
#define RUBY_LIB RUBY_LIB_PREFIX "/"RUBY_LIB_VERSION
|
||||
#endif
|
||||
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
|
||||
#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
|
||||
#ifndef RUBY_ARCH_LIB_FOR
|
||||
|
|
25
tool/shvar_to_cpp.rb
Executable file
25
tool/shvar_to_cpp.rb
Executable file
|
@ -0,0 +1,25 @@
|
|||
#!/usr/bin/ruby
|
||||
|
||||
require './rbconfig'
|
||||
C = RbConfig::MAKEFILE_CONFIG.dup
|
||||
C["ruby_version"] = '"RUBY_LIB_VERSION"'
|
||||
C["arch"] = '"arch"'
|
||||
C["sitearch"] = '"arch"'
|
||||
C["vendorarchdir"] = '"RUBY_VENDOR_ARCH_LIB"'
|
||||
C["sitearchdir"] = '"RUBY_SITE_ARCH_LIB"'
|
||||
C["vendorlibdir"] = '"RUBY_VENDOR_LIB2"'
|
||||
C["sitelibdir"] = '"RUBY_SITE_LIB2"'
|
||||
C["vendordir"] = '"RUBY_VENDOR_LIB"'
|
||||
C["sitedir"] = '"RUBY_SITE_LIB"'
|
||||
C["rubylibdir"] = '"RUBY_LIB"'
|
||||
C["rubylibprefix"] = '"RUBY_LIB_PREFIX"'
|
||||
C["rubyarchprefix"] = '"RUBY_ARCH_PREFIX_FOR(arch)"'
|
||||
C["rubysitearchprefix"] = '"RUBY_SITEARCH_PREFIX_FOR(arch)"'
|
||||
C["exec_prefix"] = '"RUBY_EXEC_PREFIX"'
|
||||
|
||||
verconf = File.read(ARGV[0])
|
||||
verconf.gsub!(/^(#define\s+\S+\s+)(.*)/) {
|
||||
$1 + RbConfig.expand($2, C).gsub(/^""(?!$)|(.)""$/, '\1')
|
||||
}
|
||||
|
||||
puts verconf
|
Loading…
Add table
Reference in a new issue