Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / INSTALL
1 GSL - GNU Scientific Library
2 ============================
3
4 Installation Instructions
5 =========================
6
7 GSL follows the standard GNU installation procedure.  To compile GSL
8 you will need an ANSI C-compiler.  After unpacking the distribution
9 the Makefiles can be prepared using the configure command,
10
11   ./configure
12
13 You can then build the library by typing,
14
15   make
16
17 Both static and shared versions of the libraries will be compiled by
18 default.  Compilation of shared libraries can be turned off by
19 specifying the `--disable-shared' option to `configure', e.g.
20   
21   ./configure --disable-shared
22
23 If you encounter problems building the library try using the above
24 option, because some platforms do not support shared libraries.  If
25 you change any compilation options you will need to remove any
26 existing compiled files with,
27
28   make clean
29
30 before running "make" again, so the new settings take effect.
31
32 For notes about problems with specific platforms and compilers see the
33 next section of this file (below).
34
35 An extensive test suite is available.  After compiling the library
36 with "make", it can be invoked with "make check" at the top level.
37 The test output should be directed to a file rather than a terminal,
38 with the command,
39
40    make check > log 2>&1
41
42 to allow any errors to be examined in detail.  By default, only test
43 failures are shown.  To see the complete output, set the environment
44 variable GSL_TEST_VERBOSE=1.
45
46 If you run the tests and get some failures, please see the notes on
47 platform specific problems below.  If you find failures that are not
48 mentioned, please report them to bug-gsl@gnu.org.
49
50 The library can be installed using the command,
51
52   make install
53
54 The default installation directory prefix is /usr/local.  Installing
55 in this directory will require root privileges on most systems (use
56 "su" or "sudo").
57
58 The installation directory can be changed with the --prefix option to
59 configure.  Consult the "Further Information" section below for
60 instructions on installing the library in another location or changing
61 other default compilation options.
62
63                     ------------------------------
64
65 Platform Specific Compilation Notes
66 ===================================
67
68 This section documents any known issues with installing GSL on
69 specific platforms.
70
71   * General hints for all platforms
72   * AIX
73   * Compaq/DEC Alpha
74   * HP-UX
75   * IRIX
76   * MacOS X / PowerPC
77   * Microsoft Windows
78   * OpenBSD
79   * OS/2
80   * Solaris
81
82 Hints for any platform
83 ======================
84
85 1) If there are problems building the library try using
86
87         ./configure --disable-shared
88
89 This will turn off the compilation of shared libraries and may allow
90 the build process to complete successfully.  
91
92 If you get any problems try this first.
93
94 2) If you want to pass C++ functions with exceptions to GSL, the
95 library needs to be compiled with the GCC option -fexceptions
96
97     ./confugire CFLAGS="-fexceptions ..."
98
99 to allow C++ exceptions to be handled.
100
101 3) With gcc-2.95/2.96 the tests fail in the eigen/ directory.  This is
102 due to a compiler optimization bug which causes errors in the
103 manipulation of complex numbers.  
104
105 This is fixed in more recent versions of gcc.  Do not use the library
106 if you encounter this problem---install a newer version of gcc.
107
108 4) Attempts to run 'strip' on the static library libgsl.a will probably
109 produce a broken library (it is known to happen with GNU binutils
110 strip, and probably affects others too). The libgsl.a ar archive made
111 by libtool contains files with the same filenames from different
112 directories, and this causes the strip program to overwrite these
113 archive entries.  If you need to produce a compact version of the
114 library compile without -g instead of using strip.
115
116 make install-strip does not work, due to a minor problem with autoconf
117 which is fixed in the 2.5 development version of autoconf.  In the
118 meantime compile without -g instead if you need to reduce the file size.
119
120 5) The configure script can fail with a segmentation fault on bash-2.01
121
122     $ ./configure
123     Segmentation fault
124
125 This is due to a bug in bash, related to the MAIL environment
126 variable.  To work around it use 
127
128     $ unset ENV MAIL MAILPATH
129     $ ./configure
130
131 which should avoid the problem.
132
133 Hints for AIX
134 =============
135
136 For compilation problems with the native compiler xlc, try disabling
137 shared libraries,
138
139     setenv CC 'xlc'
140     setenv CFLAGS '-O -qmaxmem=8192'
141     ./configure --disable-shared
142     make
143
144 If you get the error,
145
146    ld: 0711-781 ERROR: TOC overflow. 
147
148 you can try building the library with a larger linker
149 table-of-contents by setting LDFLAGS before compilation,
150
151    ./configure LDFLAGS="-Wl,-bbigtoc" 
152
153 On older versions of AIX (e.g. 4.2) the size of the command-line is
154 limited to 24kb, which causes linking to fail (due to the large number
155 of files to be linked). Unfortunately this limit cannot be increased.
156 To link the library you may need to use a manual approach of
157 incrementally combining the object files in smaller groups. 
158
159 On more recent versions of AIX (e.g >= 5.1) use
160
161   chdev -l sys0 -a ncargs=NNN
162
163 to increase the allowed number of arguments. NNN is the amount of
164 space measured in 4k blocks (default 6, maximum 1024)
165
166 If compiling with GCC the following error
167
168   fp-aix.c: In function `gsl_ieee_set_mode':
169   fp-aix.c:30: error: `fprnd_t' undeclared (first use in this function)
170
171 can occur if /usr/includes/float.h is not used, and instead the
172 float.h of the installed gcc is picked up instead -- it may be missing
173 the necessary structs.  To work around it copy the missing parts
174 (between #ifdef _ALL_SOURCE and its #endif) from /usr/includes/float.h
175 into a new header file and #include that in fp-aix.c
176
177 Hints for Compaq/DEC Alpha
178 ==========================
179
180 When comping with GCC use the -mieee and -mfp-rounding-mode options 
181 as appropriate, e.g.
182
183     ./configure CFLAGS="-mieee -mfp-rounding-mode=d -g -O2"
184
185 The library should compile successfully with Compaq's C compiler on
186 Tru64 Unix 'cc' using the -std, -ieee and -fprm options.  Use
187
188     ./configure CC=cc 
189     make CFLAGS="-std -ieee -fprm d"
190
191 to build the library this way.
192
193 Use GNU tar to unpack the tar file, as Tru64 tar gives an error
194 halfway through.
195
196 Hints for HP-UX
197 ===============
198
199 The default mode of the HP-UX C compiler does not use ANSI C.
200
201 To compile GSL you need to select ANSI C mode with the following
202 configuration option:
203
204       ./configure CFLAGS="-Ae"  
205
206 To switch on optimization use CFLAGS="-Ae -O".
207
208 Hints for IRIX (SGI)
209 ====================
210
211 The library should be compiled with the CFLAGS option
212 -OPT:IEEE_NaN_inf=ON to ensure correct IEEE arithmetic.  The tests in
213 sys/ will fail without this option.  The older deprecated option
214 -OPT:IEEE_comparisons=ON will also work.
215
216 The 32 bit IRIX compiler gives warnings about "long double" not being
217 supported. These can be ignored or turned off with,
218
219    ./configure CFLAGS="-woff 728" 
220
221 or 
222
223    make CFLAGS="-woff 728"
224
225 The compiler also gives warnings about certain libraries that are "not
226 used for resolving any symbol". This is harmless and the warnings can
227 be ignored.
228
229 You may get warnings about " /usr/bin/ld: arg list too long" when
230 building shared libraries.  If so, try increasing the ncargs kernel
231 parameter with the systune(1m) command.
232
233 For 64-bit compilation use the following options,
234
235   ./configure CC=cc CFLAGS="-64" LDFLAGS="-64" 
236
237 or for gcc
238
239   CFLAGS="-mabi-64" LDFLAGS="-mabi=64 -mips4 -L/usr/local/lib/mabi=64"
240
241 Hints for MacOS X and PowerPC
242 =============================
243
244 To install in /usr/local on MacOS systems, do "sudo make install" to
245 gain root privileges.
246
247 Note that GSL contains files with filenames of 32 characters or more.
248 Therefore you need to be careful in unpacking the tar file, as some
249 MacOS applications such as Stuffit Expander will truncate filenames to
250 31 characters.  Using GNU tar and gunzip directly is the safe way to
251 unpack the distribution.
252
253 There are problems with dynamic linker, so the library should be
254 compiled with,
255
256   ./configure --disable-shared
257
258 It has been reported that shared libraries can be built if MacOS X
259 specific versions of libtool, automake and autoconf from
260 http://fink.sourceforge.net/ are installed, and the GSL source is
261 reconfigured from scratch (./autogen.sh; ./configure; make)
262
263 To avoid warnings about long-double, use the flag
264
265   CFLAGS="-Wno-long-double ....(other options here)"
266
267 in addition to the normal compilation options.
268
269 The GCC 3.3 compiler shipped by Apple contains a bug which causes the
270 wavelet tests to fail on "data untouched" tests at optimisation level
271 -O2.  You may be able work around this by compiling with CFLAGS="-O1
272 ..." instead.
273
274 F J Frankin <MEP95JFF@sheffield.ac.uk> reported that some early
275 versions of GCC-2.95 have a problem with long argument lists on PPC
276 architecture, and this prevents GSL from compiling correctly (e.g. the
277 test program in the blas directory gives a segmentation fault when
278 run).  This problem is fixed in more recent versions of GCC.
279
280
281 Hints for Microsoft Windows
282 ===========================
283
284 GSL should compile with GCC under Cygwin on Microsoft Windows.  
285 There is a gsl package in the standard Cygwin distribution which
286 contains any patches needed.
287
288 With Mingw/MSYS some floating point issues have been reported which
289 cause failures in the monte/ test directory.
290
291 Hints for OpenBSD
292 =================
293
294 As of July 2001 the OpenBSD log1p() function on i386 causes failures
295 in the gsl complex tests.  The configure script has been hardcoded to
296 substitute gsl_log1p instead on OpenBSD.  The log1p() bug has been
297 reported and so may be fixed in future versions of OpenBSD.
298
299 Hints for OS/2
300 ==============
301
302 The configure script fails to detect the function 'isnan', leading to
303 a slew of errors 'isnan redefined'.
304
305 To work around this problem, run configure and edit the resulting
306 config.h file to comment out the line which defines HAVE_ISINF.
307
308 Hints for Solaris
309 =================
310
311 If you are using the Sun compilers then the library should be compiled
312 with the Sun C compiler 'cc', not 'CC' which is the C++ compiler.
313
314 The Sun compiler tools are stored in non-standard directories -- make
315 sure that all the compiler and linker tools (cc, ar, ranlib, ld) are
316 on the PATH.  A typical PATH should include the directories
317 /opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb in that order.
318
319 For example,
320
321   $ PATH=/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:$PATH
322   $ ./configure CC=cc CFLAGS=-O
323
324 If you see configure output 
325   
326    checking for ar... :
327
328 it means that 'ar' has not been found, and the library will fail to
329 build.
330
331 If you use the Sun compiler you should use the Sun linker and
332 assembler.  If you use GCC, you can use the GNU linker and assembler
333 or the Sun linker and assembler.
334
335 There may be some warnings about "end of loop code not reached". These
336 can be ignored -- they come from the do { ... ; return ; } while(0)
337 statement in the GSL_ERROR macro.
338
339                     ------------------------------
340
341 Further information on the standard GNU installation procedure
342 ==============================================================
343
344 The sections below describe the general features of the standard GNU
345 installation procedure.
346
347 Basic Installation
348 ==================
349
350    These are generic installation instructions.
351
352    The `configure' shell script attempts to guess correct values for
353 various system-dependent variables used during compilation.  It uses
354 those values to create a `Makefile' in each directory of the package.
355 It may also create one or more `.h' files containing system-dependent
356 definitions.  Finally, it creates a shell script `config.status' that
357 you can run in the future to recreate the current configuration, a file
358 `config.cache' that saves the results of its tests to speed up
359 reconfiguring, and a file `config.log' containing compiler output
360 (useful mainly for debugging `configure').
361
362    If you need to do unusual things to compile the package, please try
363 to figure out how `configure' could check whether to do them, and mail
364 diffs or instructions to the address given in the `README' so they can
365 be considered for the next release.  If at some point `config.cache'
366 contains results you don't want to keep, you may remove or edit it.
367
368    The file `configure.in' is used to create `configure' by a program
369 called `autoconf'.  You only need `configure.in' if you want to change
370 it or regenerate `configure' using a newer version of `autoconf'.
371
372 The simplest way to compile this package is:
373
374   1. `cd' to the directory containing the package's source code and type
375      `./configure' to configure the package for your system.  If you're
376      using `csh' on an old version of System V, you might need to type
377      `sh ./configure' instead to prevent `csh' from trying to execute
378      `configure' itself.
379
380      Running `configure' takes a while.  While running, it prints some
381      messages telling which features it is checking for.
382
383   2. Type `make' to compile the package.
384
385   3. Optionally, type `make check' to run any self-tests that come with
386      the package.
387
388   4. Type `make install' to install the programs and any data files and
389      documentation.
390
391   5. You can remove the program binaries and object files from the
392      source code directory by typing `make clean'.  To also remove the
393      files that `configure' created (so you can compile the package for
394      a different kind of computer), type `make distclean'.  There is
395      also a `make maintainer-clean' target, but that is intended mainly
396      for the package's developers.  If you use it, you may have to get
397      all sorts of other programs in order to regenerate files that came
398      with the distribution.
399
400 Compilers and Options
401 =====================
402
403    Some systems require unusual options for compilation or linking that
404 the `configure' script does not know about.  You can give `configure'
405 initial values for variables by setting them in the environment.  Using
406 a Bourne-compatible shell, you can do that on the command line like
407 this:
408      CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
409
410 Or on systems that have the `env' program, you can do it like this:
411      env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
412
413 Compiling For Multiple Architectures
414 ====================================
415
416    You can compile the package for more than one kind of computer at the
417 same time, by placing the object files for each architecture in their
418 own directory.  To do this, you must use a version of `make' that
419 supports the `VPATH' variable, such as GNU `make'.  `cd' to the
420 directory where you want the object files and executables to go and run
421 the `configure' script.  `configure' automatically checks for the
422 source code in the directory that `configure' is in and in `..'.
423
424    If you have to use a `make' that does not supports the `VPATH'
425 variable, you have to compile the package for one architecture at a time
426 in the source code directory.  After you have installed the package for
427 one architecture, use `make distclean' before reconfiguring for another
428 architecture.
429
430 Installation Names
431 ==================
432
433    By default, `make install' will install the package's files in
434 `/usr/local/bin', `/usr/local/man', etc.  You can specify an
435 installation prefix other than `/usr/local' by giving `configure' the
436 option `--prefix=PATH'.
437
438    You can specify separate installation prefixes for
439 architecture-specific files and architecture-independent files.  If you
440 give `configure' the option `--exec-prefix=PATH', the package will use
441 PATH as the prefix for installing programs and libraries.
442 Documentation and other data files will still use the regular prefix.
443
444    If the package supports it, you can cause programs to be installed
445 with an extra prefix or suffix on their names by giving `configure' the
446 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
447
448 Optional Features
449 =================
450
451    Some packages pay attention to `--enable-FEATURE' options to
452 `configure', where FEATURE indicates an optional part of the package.
453 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
454 is something like `gnu-as' or `x' (for the X Window System).  The
455 `README' should mention any `--enable-' and `--with-' options that the
456 package recognizes.
457
458    For packages that use the X Window System, `configure' can usually
459 find the X include and library files automatically, but if it doesn't,
460 you can use the `configure' options `--x-includes=DIR' and
461 `--x-libraries=DIR' to specify their locations.
462
463 Specifying the System Type
464 ==========================
465
466    There may be some features `configure' can not figure out
467 automatically, but needs to determine by the type of host the package
468 will run on.  Usually `configure' can figure that out, but if it prints
469 a message saying it can not guess the host type, give it the
470 `--host=TYPE' option.  TYPE can either be a short name for the system
471 type, such as `sun4', or a canonical name with three fields:
472      CPU-COMPANY-SYSTEM
473
474 See the file `config.sub' for the possible values of each field.  If
475 `config.sub' isn't included in this package, then this package doesn't
476 need to know the host type.
477
478    If you are building compiler tools for cross-compiling, you can also
479 use the `--target=TYPE' option to select the type of system they will
480 produce code for and the `--build=TYPE' option to select the type of
481 system on which you are compiling the package.
482
483 Sharing Defaults
484 ================
485
486    If you want to set default values for `configure' scripts to share,
487 you can create a site shell script called `config.site' that gives
488 default values for variables like `CC', `cache_file', and `prefix'.
489 `configure' looks for `PREFIX/share/config.site' if it exists, then
490 `PREFIX/etc/config.site' if it exists.  Or, you can set the
491 `CONFIG_SITE' environment variable to the location of the site script.
492 A warning: not all `configure' scripts look for a site script.
493
494 Operation Controls
495 ==================
496
497    `configure' recognizes the following options to control how it
498 operates.
499
500 `--cache-file=FILE'
501      Use and save the results of the tests in FILE instead of
502      `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
503      debugging `configure'.
504
505 `--help'
506      Print a summary of the options to `configure', and exit.
507
508 `--quiet'
509 `--silent'
510 `-q'
511      Do not print messages saying which checks are being made.
512
513 `--srcdir=DIR'
514      Look for the package's source code in directory DIR.  Usually
515      `configure' can determine that directory automatically.
516
517 `--version'
518      Print the version of Autoconf used to generate the `configure'
519      script, and exit.
520
521 `configure' also accepts some other, not widely useful, options.
522