module

MakeMakefile

mkmf.rb is used by Ruby C extensions to generate a Makefile which will correctly compile and link the C extension to Ruby and a third-party library.

Constants

ASSEMBLE_C = config_string('ASSEMBLE_C') || COMPILE_C.sub(/(?<=\\s)-c(?=\\s)/, '-S')

ASSEMBLE_CXX = config_string('ASSEMBLE_CXX') || COMPILE_CXX.sub(/(?<=\\s)-c(?=\\s)/, '-S')

CLEANINGS = "\nclean-static::\nclean-rb-default::\nclean-rb::\nclean-so::\nclean: clean-so clean-static clean-rb-default clean-rb\n\\t\\t-$(Q)$(RM) $(CLEANLIBS#{sep}) $(CLEANOBJS#{sep}) $(CLEANFILES#{sep}) .*.time\n\ndistclean-rb-default::\ndistclean-rb::\ndistclean-so::\ndistclean-static::\ndistclean: clean distclean-so distclean-static distclean-rb-default distclean-rb\n\\t\\t-$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) #{CONFTEST}.* mkmf.log\n\\t\\t-$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES#{sep})\n\\t\\t-$(Q)$(RMDIRS) $(DISTCLEANDIRS#{sep})#{$ignore_error}\n\nrealclean: distclean\n"

COMMON_HEADERS = hdr.join("\\n")

COMMON_LIBS = config_string('COMMON_LIBS', &split) || []

COMPILE_C = config_string('COMPILE_C') || '$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<'

COMPILE_CXX = config_string('COMPILE_CXX') || '$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$<'

COMPILE_RULES = config_string('COMPILE_RULES', &split) || %w[.%s.%s:]

CONFIG = RbConfig::MAKEFILE_CONFIG

CXX_EXT = %w[cc mm cxx cpp]

C_EXT = %w[c m]

EXPORT_PREFIX = config_string('EXPORT_PREFIX') {|s| s.strip}

HDR_EXT = %w[h hpp]

LIBARG = config_string('LIBARG') || '-l%s'

LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L%s'

LINK_SO = (config_string('LINK_SO') || "").sub(/^$/) do\nif CONFIG["DLEXT"] == $OBJEXT\n"ld $(DLDFLAGS) -r -o $@ $(OBJS)\\n"\nelse\n"$(LDSHARED) #{OUTFLAG}$@ $(OBJS) " \\\n"$(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)"\nend\nend

MAIN_DOES_NOTHING = config_string('MAIN_DOES_NOTHING') || "int main(int argc, char **argv)\\n{\\n return 0;\\n}"

ORIG_LIBPATH = ENV['LIB']

RPATHFLAG = config_string('RPATHFLAG') || ''

RULE_SUBST = config_string('RULE_SUBST')

SRC_EXT = C_EXT + CXX_EXT

TRY_LINK = config_string('TRY_LINK') ||\n"$(CC) #{OUTFLAG}#{CONFTEST}#{$EXEEXT} $(INCFLAGS) $(CPPFLAGS) " \\\n"$(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(ARCH_FLAG) $(LOCAL_LIBS) $(LIBS)"

UNIVERSAL_INTS = config_string('UNIVERSAL_INTS') {|s| Shellwords.shellwords(s)} ||\n%w[int short long long\\ long]

Files

  • lib/mkmf.rb