% require './rbconfig' % C = RbConfig::MAKEFILE_CONFIG.dup % def C.[](name) str = super and (str unless str.empty?); end #define RUBY_BASE_NAME "${RUBY_BASE_NAME}" #define RUBY_VERSION_NAME RUBY_BASE_NAME"-"RUBY_LIB_VERSION % if C["RUBY_LIB_VERSION_STYLE"] #define RUBY_LIB_VERSION_STYLE ${RUBY_LIB_VERSION_STYLE} % elsif !C["RUBY_LIB_VERSION"] #define RUBY_LIB_VERSION_STYLE 3 /* full */ % else #define RUBY_LIB_VERSION "${RUBY_LIB_VERSION}" % end #define RUBY_EXEC_PREFIX "<%='${RUBY_EXEC_PREFIX}' if C['RUBY_EXEC_PREFIX']%>" #define RUBY_LIB_PREFIX "${rubylibprefix}" % unless (sitearch = C["sitearch"]) == '$(arch)' #define RUBY_SITEARCH "<%=sitearch%>" % end #define RUBY_ARCH_PREFIX_FOR(arch) "${rubyarchprefix}" #define RUBY_SITEARCH_PREFIX_FOR(arch) "${rubysitearchprefix}" #define RUBY_LIB "${rubylibdir}" #define RUBY_ARCH_LIB_FOR(arch) "${rubyarchdir}" % if C["sitedir"] == "no" #define NO_RUBY_SITE_LIB 1 % else #define RUBY_SITE_LIB "${sitedir}" #define RUBY_SITE_ARCH_LIB_FOR(arch) "${sitearchdir}" % end % if C["vendordir"] == "no" #define NO_RUBY_VENDOR_LIB 1 % else #define RUBY_VENDOR_LIB "${vendordir}" #define RUBY_VENDOR_ARCH_LIB_FOR(arch) "${vendorarchdir}" % end % if C["RUBY_SEARCH_PATH"] #define RUBY_SEARCH_PATH "${RUBY_SEARCH_PATH}" % end % % R = {} % R["ruby_version"] = '"RUBY_LIB_VERSION"' % R["arch"] = '"arch"' % R["sitearch"] = '"arch"' % R["vendorlibdir"] = '"RUBY_VENDOR_LIB2"' % R["sitelibdir"] = '"RUBY_SITE_LIB2"' % R["vendordir"] = '"RUBY_VENDOR_LIB"' % R["sitedir"] = '"RUBY_SITE_LIB"' % R["rubylibdir"] = '"RUBY_LIB"' % R["rubylibprefix"] = '"RUBY_LIB_PREFIX"' % R["rubyarchprefix"] = '"RUBY_ARCH_PREFIX_FOR(arch)"' % R["rubysitearchprefix"] = '"RUBY_SITEARCH_PREFIX_FOR(arch)"' % R["exec_prefix"] = '"RUBY_EXEC_PREFIX"' % R["prefix"] = '"RUBY_EXEC_PREFIX"' % exec_prefix_pat = /\A"#{Regexp.quote(RbConfig::CONFIG['exec_prefix'])}(?=\/|\z)/ % _erbout.gsub!(/^(#define\s+(\S+)\s+)(.*)/) { % pre, name, repl = $1, $2, $3 % pat = %["#{name}"] % c = C.merge(R.reject {|key, value| key == name or value.include?(pat)}) % RbConfig.expand(repl, c) % repl.gsub!(/^""(?!$)|(.)""$/, '\1') % repl.sub!(exec_prefix_pat, 'RUBY_EXEC_PREFIX"') % pre + repl % }