Adding a compile rule to mkmf.rb

Discussion in 'Ruby' started by Gerardo Santana Gómez Garrido, Mar 8, 2006.

  1. I want to write an extconf.rb file for a Ruby extension. The problem
    is that my source file has a suffix that is not any of the expected by
    mkmf.rb: ec. The suffixes expected are:

    SRC_EXT =3D ["c", "cc", "m", "cxx", "cpp", "C"]

    I could add the suffix:

    SRC_EXT << "ec"

    and even define my own COMPILE_EC rule:

    COMPILE_EC =3D '$(ESQL) $(CFLAGS) -c $<'

    but how can I extend create_makefile to use this rule, without
    modifying mkmf.rb?

    --
    Gerardo Santana
    "Between individuals, as between nations, respect for the rights of
    others is peace" - Don Benito Ju=E1rez
    http://santanatechnotes.blogspot.com/
     
    Gerardo Santana Gómez Garrido, Mar 8, 2006
    #1
    1. Advertising

  2. On Mar 7, 2006, at 10:04 PM, Gerardo Santana G=F3mez Garrido wrote:

    > I want to write an extconf.rb file for a Ruby extension. The problem
    > is that my source file has a suffix that is not any of the expected by
    > mkmf.rb: ec. The suffixes expected are:
    >
    > SRC_EXT =3D ["c", "cc", "m", "cxx", "cpp", "C"]
    >
    > I could add the suffix:
    >
    > SRC_EXT << "ec"
    >
    > and even define my own COMPILE_EC rule:
    >
    > COMPILE_EC =3D '$(ESQL) $(CFLAGS) -c $<'
    >
    > but how can I extend create_makefile to use this rule, without
    > modifying mkmf.rb?
    >
    > --
    > Gerardo Santana
    > "Between individuals, as between nations, respect for the rights of
    > others is peace" - Don Benito Ju=E1rez
    > http://santanatechnotes.blogspot.com/
    >


    I don't think you can :(. I just looked at mkmf, and it looks like =20
    the only way to make an extension for ruby as far as mkmf is =20
    concerned with C or C++. mkmf doesn't really look for anything =20
    dynamically, those constants seem to be more to save typing than =20
    anything else. :( It's too bad, it would be neat if mkmf was =20
    extendable in this manner.
     
    Logan Capaldo, Mar 8, 2006
    #2
    1. Advertising

  3. Gerardo Santana Gómez Garrido

    rickhg12hs Guest

    Don't know how you could extend mkmf.rb as you describe, but you could
    take the approach that SWIG offers. In the installation of SWIG,
    you'll find Makefile.swig and extconf.rb skeletons (in
    /usr/share/swig/1.3.25/ruby/ for my installation).

    Makefile.swig has rules for creating the SWIG wrapper (generates a C or
    C++ source file wrapper using swig) and also for creating the Makefile
    (using ruby,mkmf.rb, and your extconf.rb). Your extconf.rb will
    typically check for your library, etc., so that it will be linked into
    your extension.

    [from Makefile.swig]
    # File : Makefile.swig
    # Makefile for a SWIG module. Use this file if you are
    # producing a Ruby extension for general use or distribution.
    #
    # 1. Prepare extconf.rb.
    # 2. Modify this file as appropriate.
    # 3. Type 'make -f Makefile.swig' to generate wrapper code and
    Makefile.
    # 4. Type 'make' to build your extension.
    # 5. Type 'make install' to install your extension.

    Perhaps you could create an appropriate Makefile.whatever and an
    extconf.rb that will create your extension.

    Good luck!
     
    rickhg12hs, Mar 8, 2006
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page