Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(755)

Unified Diff: gcc/gmp/doc/configuration

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gmp/doc/Makefile.in ('k') | gcc/gmp/doc/gmp.info » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gmp/doc/configuration
diff --git a/gcc/gmp/doc/configuration b/gcc/gmp/doc/configuration
deleted file mode 100644
index fbd3b960d2d21675af238c6cac455a175954ca61..0000000000000000000000000000000000000000
--- a/gcc/gmp/doc/configuration
+++ /dev/null
@@ -1,434 +0,0 @@
-/* doc/configuration (in Emacs -*-outline-*- format). */
-
-Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-The GNU MP Library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library. If not, see http://www.gnu.org/licenses/.
-
-
-
-* Adding a new file
-
-** Adding a top-level file
-
- i) Add it to libgmp_la_SOURCES in Makefile.am.
-
- ii) If libmp.la needs it (usually doesn't), then add it to
- libmp_la_SOURCES too.
-
-** Adding a subdirectory file
-
-For instance for mpz,
-
- i) Add file.c to libmpz_la_SOURCES in mpz/Makefile.am.
-
- ii) Add mpz/file$U.lo to MPZ_OBJECTS in the top-level Makefile.am
-
- iii) If for some reason libmp.la needs it (usually doesn't) then add
- mpz/file$U.lo to libmp_la_DEPENDENCIES in the top-level
- Makefile.am too.
-
-The same applies to mpf, mpq, scanf and printf.
-
-** Adding an mpn file
-
-The way we build libmpn (in the `mpn' subdirectory) is quite special.
-
-Currently only mpn/mp_bases.c is truely generic and included in every
-configuration. All other files are linked at build time into the mpn
-build directory from one of the CPU specific sub-directories, or from
-the mpn/generic directory.
-
-There are four types of mpn source files.
-
- .asm Assembly code preprocessed with m4
- .S Assembly code preprocessed with cpp
- .s Assembly code not preprocessed at all
- .c C code
-
-There are two types of .asm files.
-
- i) ``Normal'' files containing one function, though possibly with
- more than one entry point.
-
- ii) Multi-function files that generate one of a set of functions
- according to build options.
-
-To add a new implementation of an existing function,
-
- i) Put it in the appropriate CPU-specific mpn subdirectory, it'll be
- detected and used.
-
- ii) Any entrypoints tested by HAVE_NATIVE_func in other code must
- have PROLOGUE(func) for configure to grep. This is normal for
- .asm or .S files, but for .c files a dummy comment like the
- following will be needed.
-
- /*
- PROLOGUE(func)
- */
-
-To add a new implementation using a multi-function file, in addition
-do the following,
-
- i) Use a MULFUNC_PROLOGUE(func1 func2 ...) in the .asm, declaring
- all the functions implemented, including carry-in variants.
-
- If there's a separate PROLOGUE(func) for each possible function
- (but this is usually not the case), then MULFUNC_PROLOGUE isn't
- necessary.
-
-To add a new style of multi-function file, in addition do the
-following,
-
- i) Add to the GMP_MULFUNC_CHOICES "case" statement in configure.in
- which lists each multi-function filename and what function files
- it can provide.
-
-To add a completely new mpn function file, do the following,
-
- i) Ensure the filename is a valid C identifier, due to the
- -DOPERATION_$* used to support multi-function files. This means
- "-" can't be used (but "_" can).
-
- ii) Add it to configure.in under one of the following
-
- a) `gmp_mpn_functions' if it exists for every target. This
- means there must be a C version in mpn/generic. (Eg. mul_1)
-
- b) `gmp_mpn_functions_optional' if it's a standard function, but
- doesn't need to exist for every target. Code wanting to use
- this will test HAVE_NATIVE_func to see if it's available.
- (Eg. copyi)
-
- c) `extra_functions' for some targets, if it's a special
- function that only ever needs to exist for certain targets.
- Code wanting to use it can test either HAVE_NATIVE_func or
- HAVE_HOST_CPU_foo, as desired.
-
- iii) If HAVE_NATIVE_func is going to be used, then add a #undef to
- the AH_VERBATIM([HAVE_NATIVE] block in configure.in.
-
- iv) Add file.c to nodist_libdummy_la_SOURCES in mpn/Makefile.am (in
- order to get an ansi2knr rule). If the file is only in
- assembler then this step is unnecessary, but do it anyway so as
- not to forget if later a .c version is added.
-
- v) If the function can be provided by a multi-function file, then
- add to the "case" statement in configure.in which lists each
- multi-function filename and what function files it can provide.
-
-
-** Adding a test program
-
- i) Tests to be run early in the testing can be added to the main
- "tests" sub-directory.
-
- ii) Tests for mpn, mpz, mpq and mpf can be added under the
- corresponding tests subdirectory.
-
- iii) Generic tests for late in the testing can be added to
- "tests/misc". printf and scanf tests currently live there too.
-
- iv) Random number function tests can be added to "tests/rand". That
- directory has some development-time programs too.
-
- v) C++ test programs can be added to "tests/cxx". A line like the
- following must be added for each, since by default automake looks
- for a .c file.
-
- t_foo_SOURCES = t-foo.cc
-
-In all cases the name of the program should be added to check_PROGRAMS
-in the Makefile.am. TESTS is equal to check_PROGRAMS, so all those
-programs get run.
-
-"tests/devel" has a number of programs which are only for development
-purposes and are not for use in "make check". These should be listed
-in EXTRA_PROGRAMS to get Makefile rules created, but they're never
-built or run unless an explicit "make someprog" is used.
-
-** Macos directory
-
-The macos/configure script will automatically pick up additions to
-gmp_mpn_functions, MPZ_OBJECTS, etc, but currently test programs need
-to be added to Makefile.in manually.
-
-When modifying the top-level configure.in ensure that it doesn't upset
-the macos/configure script heuristics.
-
-Unfortunately there's no way to test this stuff without getting an
-actual MacOS 9 system.
-
-
-* Adding a new CPU
-
-In general it's policy to use proper names for each CPU type
-supported. If two CPUs are quite similar and perhaps don't have any
-actual differences in GMP then they're still given separate names, for
-example alphaev67 and alphaev68.
-
-Canonical names:
-
- i) Decide the canonical CPU names GMP will accept.
-
- ii) Add these to the config.sub wrapper if configfsf.sub doesn't
- already accept them.
-
- iii) Document the names in gmp.texi.
-
-Aliases (optional):
-
- i) Any aliases can be added to the config.sub wrapper, unless
- configfsf.sub already does the right thing with them.
-
- ii) Leave configure.in and everywhere else using only the canonical
- names. Aliases shouldn't appear anywhere except config.sub.
-
- iii) Document in gmp.texi, if desired. Usually this isn't a good
- idea, better encourage users to know just the canonical
- names.
-
-Configure:
-
- i) Add patterns to configure.in for the new CPU names. Include the
- following (see configure.in for the variables to set up),
-
- a) ABI choices (if any).
- b) Compiler choices.
- c) mpn path for CPU specific code.
- d) Good default CFLAGS for each likely compiler.
- d) Any special tests necessary on the compiler or assembler
- capabilities.
-
- ii) M4 macros to be shared by asm files in a CPU family are by
- convention in a foo-defs.m4 like mpn/x86/x86-defs.m4. They're
- likely to use settings from config.m4 generated by configure.
-
-Fat binaries:
-
- i) In configure.in, add CPU specific directory(s) to fat_path.
-
- ii) In mpn/<cpu>/fat.c, identify the CPU at runtime and use suitable
- CPUVEC_SETUP_subdir macros to select the function pointers for it.
-
- iii) For the x86s, add to the "$tmp_prefix" setups in configure.in
- which abbreviates subdirectory names to fit an 8.3 filesystem.
- (No need to restrict to 8.3, just ensure uniqueness when
- truncated.)
-
-
-* The configure system
-
-** Installing tools
-
-The current versions of automake, autoconf and libtool in use can be
-checked in the ChangeLog. Look for "Update to ...". Patches may have
-been applied, look for "Regenerate ...".
-
-The GMP build system is in places somewhat dependent on the internals
-of the build tools. Obviously that's avoided as much as possible, but
-where it can't it creates a problem when upgrading or attempting to
-use different tools versions.
-
-** Updating gmp
-
-The following files need to be updated when going to a new version of
-the build tools. Unfortunately the tools generally don't identify
-when an out-of-date version is present.
-
-aclocal.m4 is updated by running "aclocal". (Only needed for a new
-automake or libtool.)
-
-INSTALL.autoconf can be copied from INSTALL in autoconf.
-
-ltmain.sh comes from libtool. Remove it and run "libtoolize --copy",
-or just copy the file by hand.
-
-ansi2knr.c, ansi2knr.1, install-sh and doc/mdate-sh come from automake
-and can be updated by copying or by removing and running "automake
---add-missing --copy".
-
-texinfo.tex can be updated from ftp.gnu.org. Check it still works
-with "make gmp.dvi", "make gmp.ps" and "make gmp.pdf".
-
-configfsf.guess and configfsf.sub can be updated from ftp.gnu.org (or
-from the "config" cvs module at subversions.gnu.org). The gmp
-config.guess and config.sub wrappers are supposed to make such an
-update fairly painless.
-
-depcomp from automake is not needed because configure.in specifies
-automake with "no-dependencies".
-
-** How it works
-
-During development:
-
- Input files Tool Output files
- ---------------------------------------------------------
-
- aclocal
- $prefix/share/aclocal*/*.m4 ----------------> aclocal.m4
-
-
- configure.in \ autoconf
- aclocal.m4 / -----------------------------> configure
-
-
- */Makefile.am \ automake
- configure.in | ----------------------------> Makefile.in
- aclocal.m4 /
-
- configure.in \ autoheader
- aclocal.m4 / -----------------------------> config.in
-
-At build time:
-
- Input files Tool Output files
- --------------------------------------------
-
- */Makefile.in \ configure / */Makefile
- config.in | -------------> | config.h
- gmp-h.in | | config.m4
- mp-h.in / | gmp.h
- | mp.h
- \ fat.h (fat binary build only)
-
-When configured with --enable-maintainer-mode the Makefiles include
-rules to re-run the necessary tools if the input files are changed.
-This can end up running a lot more things than are really necessary.
-
-If a build tree is in too much of a mess for those rules to work
-properly then a bootstrap can be done from the source directory with
-
- aclocal
- autoconf
- automake
- autoheader
-
-The autom4te.cache directory is created by autoconf to save some work
-in subsequent automake or autoheader runs. It's recreated
-automatically if removed, it doesn't get distributed.
-
-** C++ configuration
-
-It's intended that the contents of libgmp.la won't vary according to
-whether --enable-cxx is selected. This means that if C++ shared
-libraries don't work properly then a shared+static with --disable-cxx
-can be done for the C parts, then a static-only with --enable-cxx to
-get libgmpxx.
-
-libgmpxx.la uses some internals from libgmp.la, in order to share code
-between C and C++. It's intended that libgmpxx can only be expected
-to work with libgmp from the same version of GMP. If some of the
-shared internals change their interface, then it's proposed to rename
-them, for instance __gmp_doprint2 or the like, so as to provoke link
-errors rather than mysterious failures from a mismatch.
-
-* Development setups
-
-** General
-
---disable-shared will make builds go much faster, though of course
-shared or shared+static should be tested too.
-
---enable-mpbsd grabs various bits of mpz, which might need to be
-adjusted if things in those routines are changed. Building mpbsd all
-the time doesn't cost much.
-
---prefix to a dummy directory followed by "make install" will show
-what's installed.
-
-"make check" acts on the libgmp just built, and will ignore any other
-/usr/lib/libgmp, or at least it should do. Libtool does various hairy
-things to ensure it hits the just-built library.
-
-** Long long limb testing
-
-On systems where gcc supports long long, but a limb is normally just a
-long, the following can be used to force long long for testing
-purposes. It will probably run quite slowly.
-
- ./configure --host=none ABI=longlong
-
-** Function argument conversions
-
-When using gcc, configuring with something like
-
- ./configure CFLAGS="-g -Wall -Wconversion -Wno-sign-compare"
-
-can show where function parameters are being converted due to having
-function prototypes available, which won't happen in a K&R compiler.
-Doing this in combination with the long long limb setups above is
-good.
-
-Conversions between int and long aren't warned about by gcc when
-they're the same size, which is unfortunate because casts should be
-used in such cases, for the benefit of K&R compilers with int!=long
-and where the difference matters in function calls.
-
-** K&R support
-
-Function definitions must be in the GNU stylized form to work. See
-the ansi2knr.1 man page (included in the GMP sources).
-
-__GMP_PROTO is used for function prototypes, other ANSI / K&R
-differences are conditionalized in various places.
-
-Proper testing of the K&R support requires a compiler which gives an
-error for ANSI-isms. Configuring with --host=none is a good idea, to
-test all the generic C code.
-
-When using an ANSI compiler, the ansi2knr setups can be partially
-tested with
-
- ./configure am_cv_prog_cc_stdc=no ac_cv_prog_cc_stdc=no
-
-This will test the use of $U and the like in the makefiles, but not
-much else.
-
-Forcing the cache variables can be used with a compiler like HP C
-which is K&R by default but to which configure normally adds ANSI mode
-flags. This then should be a good full K&R test.
-
-* Other Notes
-
-** Compatibility
-
-compat.c is the home of functions retained for binary compatibility,
- but now done by other means (like a macro).
-
-struct __mpz_struct etc - this must be retained for C++ compatibility.
- C++ applications defining functions taking mpz_t etc parameters
- will get this in the mangled name because C++ "sees though" the
- typedef mpz_t to the underlying struct.
-
- Incidentally, this probably means for C++ that our mp.h is not
- compatible with an original BSD mp.h, since we use struct
- __mpz_struct for MINT in ours. Maybe we could change to whatever
- the original did, but it seems unlikely anyone would be using C++
- with mp.h.
-
-__gmpn - note that glibc defines some __mpn symbols, old versions of
- some mpn routines, which it uses for floating point printfs.
-
-
-
-
-Local variables:
-mode: outline
-fill-column: 70
-End:
-/* eof doc/configuration */
« no previous file with comments | « gcc/gmp/doc/Makefile.in ('k') | gcc/gmp/doc/gmp.info » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698