Project

General

Profile

Feature #6522 » 0001-Migrate-extconf.rb-documentation-from-README.EXT-to-MakeMakefile.patch

zzak (zzak _), 06/01/2012 06:37 AM

View differences:

README.EXT
Appendix C. Functions Available in extconf.rb
These functions are available in extconf.rb:
have_macro(macro, headers, opt)
Checks whether macro is defined with header. Returns true if the macro
is defined.
have_library(lib, func, opt)
Checks whether the library exists, containing the specified function.
Returns true if the library exists.
find_library(lib, func, path...)
Checks whether a library which contains the specified function exists in
path. Returns true if the library exists.
have_func(func, headers, opt)
Checks whether func exists with header. Returns true if the function
exists. To check functions in an additional library, you need to
check that library first using have_library().
The func shall be either mere function name or function name with
arguments.
Example:
have_func("LONG2NUM(0)")
have_var(var, header, opt)
Checks whether var exists with header. Returns true if the variable
exists. To check variables in an additional library, you need to
check that library first using have_library().
have_header(header, preheaders, opt)
Checks whether header exists. Returns true if the header file exists.
find_header(header, path...)
Checks whether header exists in path. Returns true if the header file
exists.
have_struct_member(type, member, headers, opt)
Checks whether type has member with header. Returns true if the type
is defined and has the member.
have_type(type, headers, opt)
Checks whether type is defined with header. Returns true if the type
is defined.
check_sizeof(type, header)
Checks the size of type in char with header. Returns the size if the
type is defined, otherwise nil.
create_makefile(target)
Generates the Makefile for the extension library. If you don't invoke
this method, the compilation will not be done.
find_executable(bin, path)
Finds command in path, which is File::PATH_SEPARATOR-separated list of
directories. If path is nil or omitted, environment variable PATH
will be used. Returns the path name of the command if it is found,
otherwise nil.
with_config(withval[, default=nil])
Parses the command line options and returns the value specified by
--with-<withval>.
enable_config(config, *defaults)
disable_config(config, *defaults)
Parses the command line options for boolean. Returns true if
--enable-<config> is given, or false if --disable-<config> is given.
Otherwise, yields defaults to the given block and returns the result
if it is called with a block, or returns defaults.
dir_config(target[, default_dir])
dir_config(target[, default_include, default_lib])
Parses the command line options and adds the directories specified by
--with-<target>-dir, --with-<target>-include, and/or --with-<target>-lib
to $CFLAGS and/or $LDFLAGS. --with-<target>-dir=/path is equivalent to
--with-<target>-include=/path/include --with-<target>-lib=/path/lib.
Returns an array of the added directories ([include_dir, lib_dir]).
pkg_config(pkg)
Obtains the information for pkg by pkg-config command. The actual
command name can be overridden by --with-pkg-config command line
option.
See MakeMakefile for functions that are available to extconf.rb
/*
* Local variables:
lib/mkmf.rb
# :startdoc:
#
# :call-seq:
# have_macro(macro, headers, opt)
#
# Returns whether or not +macro+ is defined either in the common header
# files or within any +headers+ you provide.
#
......
end
end
#
# :call-seq:
# have_library(lib, func, opt)
#
# Returns whether or not the given entry point +func+ can be found within
# +lib+. If +func+ is nil, the <code>main()</code> entry point is used by
# +lib+. If +func+ is +nil+, the <code>main()</code> entry point is used by
# default. If found, it adds the library to list of libraries to be used
# when linking your extension.
#
......
end
end
#
# :call-seq:
# find_library(lib, func, paths...)
#
# Returns whether or not the entry point +func+ can be found within the
# library +lib+ in one of the +paths+ specified, where +paths+ is an array
# of strings. If +func+ is nil , then the <code>main()</code> function is
# of strings. If +func+ is +nil+ , then the <code>main()</code> function is
# used as the entry point.
#
# If +lib+ is found, then the path it was found on is added to the list of
......
end
end
#
# :call-seq:
# have_func(func, headers, opt)
#
# Returns whether or not the function +func+ can be found in the common
# header files, or within any +headers+ that you provide. If found, a macro
# is passed as a preprocessor constant to the compiler using the function
# name, in uppercase, prepended with +HAVE_+.
#
# For example, if <code>have_func('foo')</code> returned true, then the
# To check functions in an additional library, you need to check that
# library first using <code>have_library()</code>. The +func+ shall be
# either mere function name or function name with arguments.
#
# For example, if <code>have_func('foo')</code> returned +true+, then the
# +HAVE_FOO+ preprocessor macro would be passed to the compiler.
#
def have_func(func, headers = nil, opt = "", &b)
......
end
end
#
# :call-seq:
# have_var(var, header, opt)
#
# Returns whether or not the variable +var+ can be found in the common
# header files, or within any +headers+ that you provide. If found, a macro
# is passed as a preprocessor constant to the compiler using the variable
# name, in uppercase, prepended with +HAVE_+.
#
# To check variables in an additional library, you need to check that
# library first using <code>have_library()</code>.
#
# For example, if <code>have_var('foo')</code> returned true, then the
# +HAVE_FOO+ preprocessor macro would be passed to the compiler.
#
......
end
end
#
# :call-seq:
# have_header(header, preheaders, opt)
#
# Returns whether or not the given +header+ file can be found on your system.
# If found, a macro is passed as a preprocessor constant to the compiler
# using the header file name, in uppercase, prepended with +HAVE_+.
......
end
end
#
# :call-seq:
# find_header(header, paths...)
#
# Instructs mkmf to search for the given +header+ in any of the +paths+
# provided, and returns whether or not it was found in those paths.
#
......
end
end
#
# :call-seq:
# have_struct_member(type, member, headers, opt)
#
# Returns whether or not the struct of type +type+ contains +member+. If
# it does not, or the struct type can't be found, then false is returned.
# You may optionally specify additional +headers+ in which to look for the
......
end
end
#
# :call-seq:
# have_type(type, headers, opt)
#
# Returns whether or not the static type +type+ is defined. You may
# optionally pass additional +headers+ to check against in addition to the
# common header files.
......
# :startdoc:
#
# :call-seq:
# check_sizeof(type, header)
#
# Returns the size of the given +type+. You may optionally specify
# additional +headers+ to search in for the +type+.
#
......
# :startdoc:
#
# :call-seq:
# find_executable(bin, path)
#
# Searches for the executable +bin+ on +path+. The default path is your
# +PATH+ environment variable. If that isn't defined, it will resort to
# searching /usr/local/bin, /usr/ucb, /usr/bin and /bin.
......
# :startdoc:
#
# :call-seq:
# with_config(withval[, default=nil])
#
# Tests for the presence of a <tt>--with-</tt>_config_ or
# <tt>--without-</tt>_config_ option. Returns true if the with option is
# given, false if the without option is given, and the default value
# <tt>--without-</tt>_config_ option. Returns +true+ if the with option is
# given, +false+ if the without option is given, and the default value
# otherwise.
#
# This can be useful for adding custom definitions, such as debug
......
end
end
#
# :call-seq:
# enable_config(config, *defaults)
#
# Tests for the presence of an <tt>--enable-</tt>_config_ or
# <tt>--disable-</tt>_config_ option. Returns true if the enable option is
# given, false if the disable option is given, and the default value
# <tt>--disable-</tt>_config_ option. Returns +true+ if the enable option is
# given, +false+ if the disable option is given, and the default value
# otherwise.
#
# This can be useful for adding custom definitions, such as debug
......
$extconf_h = header
end
#
# :call-seq:
# dir_config(target[, default_dir])
# dir_config(target[, default_include, default_lib])
#
# Sets a +target+ name that the user can then use to configure various
# "with" options with on the command line by using that name. For example,
# if the target is set to "foo", then the user could use the
......
# :stopdoc:
#
# :call-seq:
# pkg_config(pkg)
#
# Handles meta information about installed libraries. Uses your platform's
# pkg-config program if it has one.
#
# The actual command name can be overridden by
# <code>--with-pkg-config</code> command line option.
def pkg_config(pkg)
if pkgconfig = with_config("#{pkg}-config") and find_executable0(pkgconfig)
# iff package specific config command is given
......
depout
end
#
# :call-seq:
# create_makefile(target)
#
# Generates the Makefile for your extension, passing along any options and
# preprocessor constants that you may have generated through other methods.
#
(1-1/2)