[BACK]Return to configuration CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / doc

Annotation of OpenXM_contrib/gmp/doc/configuration, Revision 1.1

1.1     ! maekawa     1: /* doc/configuration (in Emacs -*-outline-*- format). */
        !             2:
        !             3: * How to add a new file
        !             4:
        !             5: ** A file in the `mpn' subdirectory
        !             6:
        !             7: The way we build libmpn (in the `mpn' subdirectory) is quite special.
        !             8:
        !             9: There is (currently) only one ``generic'' file, one that is truly
        !            10: target independent.  That is `mp_bases.c'.  All other files are kept
        !            11: in subdirectories of `mpn' with the subdirectory names indicating the
        !            12: target processor.  For example, in the `alpha' subdirectory, code
        !            13: specific to the Alpha processor is found.
        !            14:
        !            15: When running `configure', a bunch of symbolic links are made in the
        !            16: `mpn' subdirectory.  If the the build host doesn't support symlinks
        !            17: then either hard links or copying is used.
        !            18:
        !            19: There are four types of mpn source files.
        !            20:
        !            21:   .asm   Assembly code preprocessed with m4
        !            22:   .S     Assembly code preprocessed with CPP
        !            23:   .s     Assembly code not preprocessed at all
        !            24:   .c     C code
        !            25:
        !            26: There are two types of .asm files.
        !            27:
        !            28:   i) ``Normal'' files containing one function, possibly with more than
        !            29:      one entry point.
        !            30:
        !            31:   ii) Multi-function files that generate one of a set of functions
        !            32:       according to build options.
        !            33:
        !            34:
        !            35: When adding a new implementation of an existing function,
        !            36:
        !            37:   i) Put it in the appropriate mpn subdirectory.  It'll be detected and
        !            38:      used.
        !            39:
        !            40:   ii) If it's a .asm or .S, be sure to have a PROLOGUE(func) entry
        !            41:       point since configure greps for that to set up the
        !            42:       HAVE_NATIVE_func defines in config.h.
        !            43:
        !            44: When adding a new implementation using a multi-function file, in
        !            45: addition do the following,
        !            46:
        !            47:   i) Use a MULFUNC_PROLOGUE(func1 func2 ...) in the .asm, declaring
        !            48:      all the functions implemented, including carry-in variants.
        !            49:
        !            50:      If there's a separate PROLOGUE(func) for each possible function,
        !            51:      then MULFUNC_PROLOGUE isn't necessary (but this is usually not
        !            52:      the case).
        !            53:
        !            54: When adding a new style of multi-function file, in addition do the
        !            55: following,
        !            56:
        !            57:   i) Add to the "case" statement in configure.in which lists each
        !            58:      multi-function filename and what function files it can provide.
        !            59:
        !            60: When adding a completely new mpn function file, do the following,
        !            61:
        !            62:   i) Add it to configure.in under one of the following
        !            63:
        !            64:      a) `gmp_mpn_functions' if it exists for every target.  This means
        !            65:         there must be a C version in mpn/generic.  (Eg. add_n)
        !            66:
        !            67:      b) `gmp_mpn_functions_optional' if it's a standard function, but
        !            68:         doesn't need to exist for every target.  Code wanting to use
        !            69:         this will test HAVE_NATIVE_func to see if it's available.
        !            70:         (Eg. copyi)
        !            71:
        !            72:      c) `extra_functions' for some targets, if it's a special function
        !            73:         that only ever needs to exist for certain targets.  Code
        !            74:         wanting to use it will generally look for the target, but
        !            75:         HAVE_NATIVE_func can be used if desired.
        !            76:
        !            77:   ii) If you want `HAVE_NATIVE_func' defined in config.h, add
        !            78:       `#undef HAVE_NATIVE_func' to acconfig.h.
        !            79:
        !            80:   iii) If the function can be provided by a multi-function file,
        !            81:        then follow the directions above for them too.
        !            82:
        !            83: ** Add a file in any other directory
        !            84:
        !            85: When adding a top-level file,
        !            86:
        !            87:   i) Add it to libgmp_la_SOURCES in Makefile.am.
        !            88:
        !            89:   ii) If libmp.la needs it, then add it to libmp_la_SOURCES too.
        !            90:
        !            91: When adding an mpz file,
        !            92:
        !            93:   i) Add file.c to libmpz_la_SOURCES in mpz/Makefile.am.
        !            94:
        !            95:   ii) Add mpz/file.lo to MPZ_OBJECTS in the top-level Makefile.am.
        !            96:
        !            97: If a multi-function mpz file is being added,
        !            98:
        !            99:   i) In mpz/Makefile.am,
        !           100:
        !           101:      a) Add the file to EXTRA_DIST.
        !           102:
        !           103:      b) Add rules copying the file at build time to duplicates with
        !           104:         appropriate names.
        !           105:
        !           106:      c) Add each such func.c to nodist_libmpz_la_SOURCES.
        !           107:
        !           108:   ii) Add each c) above also as mpz/func.lo in MPZ_OBJECTS in the
        !           109:       top-level Makefile.am.
        !           110:
        !           111:   iii) In the multi-function file, expect a preprocessor symbol
        !           112:        OPERATION_func to indicate what form is being compiled.
        !           113:
        !           114: The same applies to mpf and mpq (except that multi-function support
        !           115: doesn't exist in mpq/Makefile.am at the moment).
        !           116:
        !           117: See mpz/mul_siui.c or mpf/integer.c for example multi-function files.
        !           118:
        !           119: * Selecting compiler and its flags by hand
        !           120:
        !           121: Specifying CC on the configure command line, will result in a default
        !           122: set of compiler flags, CFLAGS; `-g' for all compilers plus `-O2' for
        !           123: gcc.  Specify CFLAGS to set better flags.
        !           124:
        !           125: Example
        !           126:
        !           127:   $ configure CC=my-gcc
        !           128:
        !           129: will give
        !           130:
        !           131:   CFLAGS = -g -O2
        !           132:
        !           133: Specifying CC on the configure command line will make configure
        !           134: believe it's a 32-bit compiler and not choose a source path with
        !           135: 64-bit assembly code.  Specify CC64 as well as CC to make configure
        !           136: pick 64-bit assembly code.
        !           137:
        !           138:   $ configure CC=my64bit-cc CC64=my64bit-cc CFLAGS="-my -flags"
        !           139:
        !           140: * The configure system
        !           141:
        !           142: ** What we use
        !           143: We use the tools in <ftp://ftp.swox.com/pub/gmp/infrastructure/>.
        !           144:
        !           145: ** How to install new versions of Autoconf / Automake / Libtool
        !           146:
        !           147: *** Build Libtool
        !           148: With a fresh CVS checkout, run the bootstrap script with released
        !           149: versions (not CVS versions) of Autoconf and Automake in PATH.
        !           150:
        !           151: *** Update gmp directory
        !           152: gmp$ rm ltconfig ltmain.sh
        !           153: gmp$ libtoolize --copy
        !           154: gmp$ automake --add-missing --copy
        !           155:
        !           156: ** How it works
        !           157: During development:
        !           158:
        !           159:     Input files        Tool       Output files
        !           160:     ------------------------------------------
        !           161:                      aclocal
        !           162:     acinclude.m4  --------------> aclocal.m4
        !           163:
        !           164:                      autoconf
        !           165:     configure.in \ -------------> configure
        !           166:     aclocal.m4   /
        !           167:
        !           168:                      automake
        !           169:     Makefile.am  \ -------------> Makefile.in
        !           170:     configure.in /
        !           171:
        !           172:                      autoheader
        !           173:     configure.in \ -------------> config.in
        !           174:     acconfig.h   /
        !           175:
        !           176:
        !           177: At build time:
        !           178:
        !           179:     Input files        Tool       Output files
        !           180:     ------------------------------------------
        !           181:
        !           182:                      configure
        !           183:     Makefile.in  \ -------------> / Makefile
        !           184:     config.in    /                | config.h
        !           185:                                   \ config.m4
        !           186:
        !           187: /* eof doc/configuration */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>