class Object

Public Instance Methods

configuration(srcdir) click to toggle source
# File ruby/lib/lib/ruby/site_ruby/2.2/mkmf-rice.rb, line 124
def configuration(srcdir)
  configuration = configuration_orig(srcdir)
  configuration.each do |config|
    # Make sure we link the extension using the C++ compiler
    config.gsub!(/^LDSHARED\s*=.*$/, "LDSHARED = #{$LDSHARED_CXX}")

    # Make sure set the C++ flags correctly
    config.gsub!(/^CXXFLAGS\s*=.*$/, "CXXFLAGS = $(CFLAGS) #{$CXXFLAGS}")
  end
  configuration << "\nCXX = #{$CXX}"
  return configuration
end
Also aliased as: configuration_orig, configuration_orig
configuration_orig(srcdir)
Alias for: configuration
create_header(header = 'extconf.hpp') click to toggle source
# File ruby/lib/lib/ruby/site_ruby/2.2/mkmf-rice.rb, line 146
def create_header(header = 'extconf.hpp')
  create_header_orig(header)
end
Also aliased as: create_header_orig, create_header_orig
create_header_orig(header = 'extconf.hpp')
Alias for: create_header
create_makefile(target, srcprefix = nil) click to toggle source
# File ruby/lib/lib/ruby/site_ruby/2.2/mkmf-rice.rb, line 151
def create_makefile(target, srcprefix = nil)
  makefile_creator = RiceMakefileCreator.new
  makefile_creator.create_makefile(target, srcprefix)
end
Also aliased as: create_makefile_orig, create_makefile_orig
create_makefile_orig(target, srcprefix = nil)
Alias for: create_makefile
init_mkmf_rice(config = CONFIG) click to toggle source

A script to override some defaults in mkmf.rb for C++ code compilation.

If this looks like a big hack, that's because it is.

# File ruby/lib/lib/ruby/site_ruby/2.2/mkmf-rice.rb, line 27
def init_mkmf_rice(config = CONFIG)
  # Set some defaults that we got from autoconf -- they're more likely
  # to be correct than what Ruby was built with
  $CXX = "c++"
  $LIBS = "-lexecinfo -lprocstat -lcrypt -lm -lpthread -L/usr/local/lib  -lc"
  $LIBRUBYARG = "-lruby22"
  $LIBRUBYARG_STATIC = "-lruby22-static"
  $RICE_CPPFLAGS = ""
  $RICE_LDFLAGS = ""
  $RICE_PREFIX = File.join(File.dirname(File.expand_path(__FILE__)))

  $RICE_USING_MINGW32 = false

  # We use this for the samples
  $DEFLIBPATH.unshift(with_config('libpath')) if with_config('libpath')

  lib_dirs = []

  lib_dir = "#{$RICE_PREFIX}/lib"
  lib64_dir = "#{$RICE_PREFIX}/lib64"

  lib_dirs << "-L#{lib_dir}" if File.directory?(lib_dir)
  lib_dirs << "-L#{lib64_dir}" if File.directory?(lib64_dir)

  $CPPFLAGS << " #{$RICE_CPPFLAGS} -I#{$RICE_PREFIX}/include"
  $LDFLAGS << " #{$RICE_LDFLAGS} #{lib_dirs.join(" ")} -lrice"

  # Turn on debugging and verbose warnings by default on compilers that
  # support it
  $CXXFLAGS = ''
  if $CXX == 'g++'
    $CXXFLAGS << ' -Wall -g'
  end

  # Fix-up the linker used for confidence tests
  TRY_LINK.sub!(/^#{Regexp.quote("$(CC)")}/, $CXX)
  TRY_LINK.sub!(/^#{config['CC']}/, $CXX)
  TRY_LINK.sub!(/#{Regexp.quote("$(CFLAGS)")}/, "$(CXXFLAGS)")

  # Set $LDSHARED_CXX to the linker to be used for C++ libraries (usually
  # the C++ compiler itself)
  case config['target_os']
  when 'darwin'
    $LDSHARED_CXX =        replace_cc_with_cxx(config['LDSHARED']) +        ' -read_only_relocs suppress'
  when 'mswin32'
    if $RICE_USING_MINGW32 then
      init_rice_mkmf_cross_compile_mingw2_for_vc6
    end
  else
    $LDSHARED_CXX =        replace_cc_with_cxx(config['LDSHARED'])
  end
end
init_rice_mkmf_cross_compile_mingw2_for_vc6() click to toggle source
# File ruby/lib/lib/ruby/site_ruby/2.2/mkmf-rice.rb, line 89
def init_rice_mkmf_cross_compile_mingw2_for_vc6
  $LDSHARED_CXX = "#{$CXX} -shared -s"
  $OBJEXT = 'o'
  $DLDFLAGS.gsub!(/^-link.*\.pdb$/, '')

  constants = {
    :TRY_LINK =>
      "#{$LDSHARED_CXX} -oconftest $(INCFLAGS) $(CPPFLAGS) " +        "$(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(ARCH_FLAG) " +        "$(LOCAL_LIBS) $(LIBS)",
    :LINK_SO =>
      "#{$LDSHARED_CXX} $(DLDFLAGS) $(LIBPATH) -o$@ " +        "$(OBJS) $(LOCAL_LIBS) $(LIBS)",
    :LIBARG =>
        '-l%s',
    :LIBPATHFLAG =>
        ' -L %s',
    :COMPILE_RULES =>
        %w[.%s.%s:],
    :RULE_SUBST =>
        '%s',
    :COMPILE_CXX =>
        '$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) -c $<',
    :OUTFLAG =>
        '-o',
  }

  constants.each do |name, value|
    Object.instance_eval { remove_const name }
    Object.const_set(name, value)
  end
end
replace_cc_with_cxx(str) click to toggle source
# File ruby/lib/lib/ruby/site_ruby/2.2/mkmf-rice.rb, line 83
def replace_cc_with_cxx(str)
  return str.sub(
      /^(cc|\$\(CC\)|#{CONFIG['CC']})(?=\s)/,
      $CXX)
end