2734 |
11 May 12 |
peter |
$Id$ |
2 |
19 Feb 03 |
jari |
2 |
|
1939 |
01 May 09 |
peter |
= About yat = |
573 |
06 Apr 06 |
jari |
4 |
|
1939 |
01 May 09 |
peter |
This directory contains the yat library. For an overview of the |
1939 |
01 May 09 |
peter |
project, visit |
2733 |
11 May 12 |
peter |
7 |
|
1939 |
01 May 09 |
peter |
http://dev.thep.lu.se/yat |
573 |
06 Apr 06 |
jari |
9 |
|
1939 |
01 May 09 |
peter |
10 |
|
1939 |
01 May 09 |
peter |
= Configuring and building yat = |
1939 |
01 May 09 |
peter |
12 |
|
1262 |
08 Apr 08 |
jari |
1. If you checked out this project from the subversion repository you |
1262 |
08 Apr 08 |
jari |
must run '`bootstrap`' to initialize the build system. |
1262 |
08 Apr 08 |
jari |
2. Issue '`./configure`' to create the Makefiles. Optionally run |
1262 |
08 Apr 08 |
jari |
configure with '`--enable-debug`', which will turn on debug |
1262 |
08 Apr 08 |
jari |
options. |
1262 |
08 Apr 08 |
jari |
3. Compile with '`make`'. |
2213 |
12 Mar 10 |
peter |
4. '`make doc`' will generate documentation. |
2213 |
12 Mar 10 |
peter |
5. Optionally do '`make check`' to run test programs. |
1303 |
14 May 08 |
peter |
6. Issue '`make install`' to install the package on your system, |
1303 |
14 May 08 |
peter |
documentation will not be installed if documentation was not |
1939 |
01 May 09 |
peter |
generated above. Default installation location is `/usr/local`; |
1303 |
14 May 08 |
peter |
this can be changed with |
1303 |
14 May 08 |
peter |
'`./configure --prefix=/dir/to/install/to`'. |
2437 |
12 Mar 11 |
peter |
7. Optionally do '`make installcheck`' to verify that intallation |
2437 |
12 Mar 11 |
peter |
completed correctly. |
573 |
06 Apr 06 |
jari |
28 |
|
1939 |
01 May 09 |
peter |
The `configure` script has additional options; `./configure --help` |
1939 |
01 May 09 |
peter |
will offer you those choices or refer to Requirements below. |
848 |
28 Apr 07 |
jari |
31 |
|
3734 |
22 Apr 18 |
peter |
= Compile Flag Variables = |
3734 |
22 Apr 18 |
peter |
33 |
|
3734 |
22 Apr 18 |
peter |
Compile flags (`CPPFLAGS` (preprocessor), `CXXFLAGS` (compiler), |
4252 |
18 Nov 22 |
peter |
and `LDFLAGS` (linker)) can be set at via configure, e.g.: |
3734 |
22 Apr 18 |
peter |
36 |
|
3734 |
22 Apr 18 |
peter |
#> ./configure CPPFLAGS=-I/my/local/path/include |
3734 |
22 Apr 18 |
peter |
38 |
|
3734 |
22 Apr 18 |
peter |
This setting will be used both when building the source into libyat as |
3734 |
22 Apr 18 |
peter |
well as propagated into script `yat-config`. If you only want the |
3734 |
22 Apr 18 |
peter |
variable propagated to `yat-config`, you can instead set variables |
3734 |
22 Apr 18 |
peter |
with prefix `YAT_CONFIG_`: |
3734 |
22 Apr 18 |
peter |
43 |
|
3734 |
22 Apr 18 |
peter |
44 |
|
3734 |
22 Apr 18 |
peter |
#> ./configure YAT_CONFIG_CXXFLAGS= |
3734 |
22 Apr 18 |
peter |
46 |
|
3734 |
22 Apr 18 |
peter |
Similarly, if you only want the variable used when building libyat, |
3734 |
22 Apr 18 |
peter |
and not propagated to output of `yat-config` or `pkg-config`, you can |
3734 |
22 Apr 18 |
peter |
use flags with prefix `INTERNAL_`: |
3734 |
22 Apr 18 |
peter |
50 |
|
3734 |
22 Apr 18 |
peter |
#> ./configure INTERNAL_CXXFLAGS="-g 03" |
3734 |
22 Apr 18 |
peter |
52 |
|
1059 |
08 Feb 08 |
jari |
= Requirements = |
1059 |
08 Feb 08 |
jari |
54 |
|
3939 |
16 Jul 20 |
peter |
From version 0.18, yat needs a C++11 compliant compiler to build. In |
3939 |
16 Jul 20 |
peter |
addition, there are a few packages and programs required for compiling |
3939 |
16 Jul 20 |
peter |
yat and generate supporting material. The configure script will look |
3939 |
16 Jul 20 |
peter |
for required programs and report failure to meet the |
3939 |
16 Jul 20 |
peter |
requirements. Here we list some of the requirements, but omit required |
3939 |
16 Jul 20 |
peter |
standard utilities such as echo and sed since these are normally |
3939 |
16 Jul 20 |
peter |
available. |
1059 |
08 Feb 08 |
jari |
62 |
|
1262 |
08 Apr 08 |
jari |
== Required packages == |
1059 |
08 Feb 08 |
jari |
64 |
|
1262 |
08 Apr 08 |
jari |
=== GSL === |
1059 |
08 Feb 08 |
jari |
66 |
|
1262 |
08 Apr 08 |
jari |
GNU Scientific Library, [http://www.gnu.org/software/gsl/ GSL] version |
4279 |
26 Jan 23 |
peter |
2.2 or later. If you have GSL installed in a non-standard location, |
2129 |
23 Dec 09 |
peter |
`./configure --with-gsl=DIR` can be useful to provide the location of |
2129 |
23 Dec 09 |
peter |
GSL. The `gsl-config` script, which is used to retrieve needed |
2129 |
23 Dec 09 |
peter |
compiler and linker flags, is expected to be found in `DIR/bin/`. The |
2129 |
23 Dec 09 |
peter |
check for existing GSL can be turned off with option |
2129 |
23 Dec 09 |
peter |
`--without-gsl`. This can be useful, for example, if gsl-config is not |
2129 |
23 Dec 09 |
peter |
available at configure time but header file will be available at make |
2129 |
23 Dec 09 |
peter |
time. |
1059 |
08 Feb 08 |
jari |
76 |
|
1262 |
08 Apr 08 |
jari |
=== BLAS === |
1059 |
08 Feb 08 |
jari |
78 |
|
1262 |
08 Apr 08 |
jari |
A C implementation of Basic Linear Algebra Subprograms |
1262 |
08 Apr 08 |
jari |
([http://www.netlib.org/blas BLAS]) is required. GSL comes with a |
1262 |
08 Apr 08 |
jari |
reference implementation, but you should consider getting a hardware |
1262 |
08 Apr 08 |
jari |
optimized implementation. ATLAS provides optimized BLAS (see below). |
1059 |
08 Feb 08 |
jari |
83 |
|
1939 |
01 May 09 |
peter |
The `configure` script searches for many different BLAS libraries in a |
2019 |
04 Aug 09 |
peter |
specific order (for details refer to `m4/yat_cblas.m4`). If you want |
2019 |
04 Aug 09 |
peter |
to use a specific CBLAS library, `./configure --with-cblas=LIB` may be |
2028 |
16 Aug 09 |
peter |
useful. Note, however, that the chosen/detected CBLAS library is not |
2028 |
16 Aug 09 |
peter |
hard-coded into the installed libyat, but a user can choose a |
2029 |
18 Aug 09 |
peter |
different CBLAS when she links her application. A way to access which |
2028 |
16 Aug 09 |
peter |
CBLAS was detected during the configuration is to access the |
2028 |
16 Aug 09 |
peter |
yat-config script directly or via the autoconf macros included in the |
2028 |
16 Aug 09 |
peter |
distribution. If you do want to hard-code a choice of CBLAS into the |
2028 |
16 Aug 09 |
peter |
installed libyat, you may provide the appropriate value to LIBS. The |
2028 |
16 Aug 09 |
peter |
following line, for example: |
1939 |
01 May 09 |
peter |
95 |
|
2733 |
11 May 12 |
peter |
#> ./configure LIBS=-lcblas |
2028 |
16 Aug 09 |
peter |
97 |
|
2410 |
13 Jan 11 |
peter |
will hard-code the choice of -lcblas into libyat. |
2028 |
16 Aug 09 |
peter |
99 |
|
1325 |
24 May 08 |
peter |
=== Boost === |
1325 |
24 May 08 |
peter |
101 |
|
4252 |
18 Nov 22 |
peter |
[http://www.boost.org Boost] version 1.66 or later. If you have Boost |
1939 |
01 May 09 |
peter |
installed in a non-standard location, `./configure --with-boost=DIR` |
1939 |
01 May 09 |
peter |
can be useful to provide the location of Boost. Boost header files are |
2786 |
22 Jul 12 |
peter |
expected to be found in `DIR/include/` and boost libraries are |
2916 |
19 Dec 12 |
peter |
expected to be found in `DIR/lib/`. The `configure` script tries to |
3763 |
19 Oct 18 |
peter |
detect libraries `boost_thread`, `boost_thread` and |
3763 |
19 Oct 18 |
peter |
`boost_iostreams`. The name of a boost library typically depends on |
3763 |
19 Oct 18 |
peter |
its configuration (see boost's naming convention) and there may be |
3763 |
19 Oct 18 |
peter |
several versions/configurations of the same library installed. The |
3763 |
19 Oct 18 |
peter |
`configure` tries to pick one of the available libraries, wchih can be |
3763 |
19 Oct 18 |
peter |
overridden with `./configure --with-boost-thread=foo`, `configure |
3763 |
19 Oct 18 |
peter |
--with-boost-system=foo`, and `--with-boost-iostreams=foo`, |
2916 |
19 Dec 12 |
peter |
respectively. The check for boost can be turned off with |
2916 |
19 Dec 12 |
peter |
`--without-boost`. |
1325 |
24 May 08 |
peter |
116 |
|
1262 |
08 Apr 08 |
jari |
=== quiet nan === |
1059 |
08 Feb 08 |
jari |
118 |
|
1262 |
08 Apr 08 |
jari |
Quiet NaN's must be supported. |
1059 |
08 Feb 08 |
jari |
120 |
|
1353 |
23 Jun 08 |
peter |
=== infinity === |
1353 |
23 Jun 08 |
peter |
122 |
|
1353 |
23 Jun 08 |
peter |
infinity for type double must be supported. |
1353 |
23 Jun 08 |
peter |
124 |
|
1262 |
08 Apr 08 |
jari |
== Optional packages == |
1059 |
08 Feb 08 |
jari |
126 |
|
3492 |
23 May 16 |
peter |
=== HTSLIB and Samtools === |
2943 |
04 Jan 13 |
peter |
128 |
|
3883 |
24 Mar 20 |
peter |
In order to enable functionality related to bam files htslib |
4276 |
25 Jan 23 |
peter |
(http://www.htslib.org) version 1.10 (or newer) must be |
4276 |
25 Jan 23 |
peter |
available. Header file <htslib/sam.h> is required as well as |
4276 |
25 Jan 23 |
peter |
'libhts'. If you have header files installed outside compiler's search |
4276 |
25 Jan 23 |
peter |
path (in e.g. '/path/to/htslib/sam.h', you can help the compiler with |
4276 |
25 Jan 23 |
peter |
`./configure CPPFLAGS=-I/path/to`. If library is installed outside |
4276 |
25 Jan 23 |
peter |
linker's search path, in e.g. `<libdir>`, you can run `./configure |
4276 |
25 Jan 23 |
peter |
LDFLAGS=-L<lib dir>`. You can build yat without bam support by running |
4276 |
25 Jan 23 |
peter |
`./configure --without-htslib`. |
2943 |
04 Jan 13 |
peter |
138 |
|
3500 |
26 May 16 |
peter |
The samtools program (version 1.2 or newer) is needed for some tests |
3483 |
17 Mar 16 |
peter |
related to bam functionality. If samtools is not found by configure, |
3483 |
17 Mar 16 |
peter |
these tests will be skipped. If you have samtools available outside |
3483 |
17 Mar 16 |
peter |
PATH, you can help configure to find it with `./configure |
3483 |
17 Mar 16 |
peter |
SAMTOOLS=/path/to/samtools`. |
3364 |
25 Nov 14 |
peter |
144 |
|
3763 |
19 Oct 18 |
peter |
The bcftools program is needed for some tests. If bcftools is not |
3763 |
19 Oct 18 |
peter |
found by configure, these tests will be skipped. If you have bcftools |
3763 |
19 Oct 18 |
peter |
available outside your PATH, you can help configure to find it with |
3763 |
19 Oct 18 |
peter |
`./configure BCFTOOLS=/path/to/bcftools`. |
3763 |
19 Oct 18 |
peter |
149 |
|
2943 |
04 Jan 13 |
peter |
=== ZLIB === |
2943 |
04 Jan 13 |
peter |
151 |
|
2943 |
04 Jan 13 |
peter |
Zlib available from http://www.zlib.net/ is required to build samtools |
2943 |
04 Jan 13 |
peter |
and consequently needed to build yat too, unless you turn off samtools |
2943 |
04 Jan 13 |
peter |
support (please refer to samtools section above). Header file `zlib.h` |
2943 |
04 Jan 13 |
peter |
and library libz are required. If installed in an unconventional |
2943 |
04 Jan 13 |
peter |
location you can help the compiler/linker with `CPPFLAGS=-I<include |
2943 |
04 Jan 13 |
peter |
dir>` and `LDFLAGS=-L<lib dir>`, respectively. |
2943 |
04 Jan 13 |
peter |
158 |
|
1262 |
08 Apr 08 |
jari |
=== ATLAS === |
1262 |
08 Apr 08 |
jari |
160 |
|
1059 |
08 Feb 08 |
jari |
GSL supplies a reference implementation of BLAS. You may want to |
1262 |
08 Apr 08 |
jari |
consider using hardware optimized BLAS. The |
1262 |
08 Apr 08 |
jari |
[http://math-atlas.sourceforge.net/ ATLAS] software provides an |
1262 |
08 Apr 08 |
jari |
automatic hardware optimized BLAS library. |
1059 |
08 Feb 08 |
jari |
165 |
|
1059 |
08 Feb 08 |
jari |
The detection of ATLAS is supported by the yat configuration script |
1059 |
08 Feb 08 |
jari |
but in many cases the ATLAS libraries are installed in |
1262 |
08 Apr 08 |
jari |
non-conventional directory locations. As an example, on Fedora 8, |
1262 |
08 Apr 08 |
jari |
ATLAS libraries are |
1059 |
08 Feb 08 |
jari |
located in /usr/lib/atlas or /usr/lib64/atlas depending on your |
1059 |
08 Feb 08 |
jari |
hardware architecture. If you have ATLAS installed and the configure |
1059 |
08 Feb 08 |
jari |
script fails to locate it, try to add the location to the atlas |
1078 |
12 Feb 08 |
jari |
libraries when running configure: |
1059 |
08 Feb 08 |
jari |
174 |
|
2733 |
11 May 12 |
peter |
#> ./configure LDFLAGS="-L/usr/lib64/atlas" |
1059 |
08 Feb 08 |
jari |
176 |
|
3939 |
16 Jul 20 |
peter |
=== C++11 Compliant Compiler === |
3581 |
19 Jan 17 |
peter |
178 |
|
3939 |
16 Jul 20 |
peter |
The configure script will test that the compiler is in C++11 mode and |
3939 |
16 Jul 20 |
peter |
supports features such as rvalue and std::atomic. If you run configure |
3939 |
16 Jul 20 |
peter |
with option --enable-cxx11 |
3581 |
19 Jan 17 |
peter |
182 |
|
3602 |
22 Jan 17 |
peter |
#> ./configure --enable-cxx11 |
3581 |
19 Jan 17 |
peter |
184 |
|
3939 |
16 Jul 20 |
peter |
and the compiler is not in C++11 mode, the configure script will try |
3939 |
16 Jul 20 |
peter |
different options such as '-std=cxx11' to turn on support for C++11 |
3939 |
16 Jul 20 |
peter |
features. |
3581 |
19 Jan 17 |
peter |
188 |
|
1262 |
08 Apr 08 |
jari |
=== Doxygen === |
1059 |
08 Feb 08 |
jari |
190 |
|
1442 |
27 Aug 08 |
peter |
[http://www.doxygen.org/ Doxygen] 1.5 (or newer) is required for |
2557 |
23 Aug 11 |
peter |
generation of the API documentation. If doxygen application is |
3823 |
16 Jul 19 |
peter |
missing, generation of API documentation is disabled. You can turn off |
3823 |
16 Jul 19 |
peter |
doxygen usage with |
1262 |
08 Apr 08 |
jari |
195 |
|
3823 |
16 Jul 19 |
peter |
#> ./configure DOXYGEN=no |
3823 |
16 Jul 19 |
peter |
197 |
|
1272 |
09 Apr 08 |
peter |
= Documentation = |
1262 |
08 Apr 08 |
jari |
199 |
|
2488 |
27 May 11 |
peter |
The API documentation for the latest release is available in HTML and |
2488 |
27 May 11 |
peter |
can be found through http://dev.thep.lu.se/yat. If you wish to build a |
2488 |
27 May 11 |
peter |
local copy, issue `make doc` and you will find the documents in |
2870 |
12 Nov 12 |
peter |
directory `doc/html/`. |
1262 |
08 Apr 08 |
jari |
204 |
|
1368 |
10 Jul 08 |
peter |
= Developers = |
1368 |
10 Jul 08 |
peter |
206 |
|
2733 |
11 May 12 |
peter |
See file README.developer for developer specific information. |
1368 |
10 Jul 08 |
peter |
208 |
|
2080 |
17 Oct 09 |
peter |
= Mac OS X = |
2080 |
17 Oct 09 |
peter |
210 |
|
2080 |
17 Oct 09 |
peter |
On Mac OS X you can create a universal library, a library that works |
2080 |
17 Oct 09 |
peter |
on multiple systems. You can do this by specifying multiple `-arch` |
2080 |
17 Oct 09 |
peter |
options to the compiler (but not to the preprocessor): |
2080 |
17 Oct 09 |
peter |
214 |
|
2080 |
17 Oct 09 |
peter |
#> ./configure CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ |
2080 |
17 Oct 09 |
peter |
CXXCPP="g++ -E" --disable-dependency-tracking |
2080 |
17 Oct 09 |
peter |
217 |
|
2080 |
17 Oct 09 |
peter |
This will produce a universal yat library with 4 architectures. If |
2080 |
17 Oct 09 |
peter |
your OS X does not support both Power-PC and Intel-based processors, |
2080 |
17 Oct 09 |
peter |
you can omit these architectures. Also, required libraries, GSL and |
2080 |
17 Oct 09 |
peter |
CBLAS, need to be available as universal libraries with desired |
2080 |
17 Oct 09 |
peter |
architectures. |
2080 |
17 Oct 09 |
peter |
223 |
|
1262 |
08 Apr 08 |
jari |
224 |
---------------------------------------------------------------------- |
1262 |
08 Apr 08 |
jari |
225 |
{{{ |
2119 |
12 Dec 09 |
peter |
Copyright (C) 2003 Jari Häkkinen, Peter Johansson |
2119 |
12 Dec 09 |
peter |
Copyright (C) 2004 Jari Häkkinen |
2119 |
12 Dec 09 |
peter |
Copyright (C) 2006, 2007, 2008 Jari Häkkinen, Peter Johansson |
4359 |
23 Aug 23 |
peter |
Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022, 2023 Peter Johansson |
1262 |
08 Apr 08 |
jari |
230 |
|
1437 |
25 Aug 08 |
peter |
This file is part of yat library, http://dev.thep.lu.se/yat |
1262 |
08 Apr 08 |
jari |
232 |
|
1262 |
08 Apr 08 |
jari |
The yat library is free software; you can redistribute it and/or |
1262 |
08 Apr 08 |
jari |
modify it under the terms of the GNU General Public License as |
1486 |
09 Sep 08 |
jari |
published by the Free Software Foundation; either version 3 of the |
1262 |
08 Apr 08 |
jari |
License, or (at your option) any later version. |
1262 |
08 Apr 08 |
jari |
237 |
|
1262 |
08 Apr 08 |
jari |
The yat library is distributed in the hope that it will be useful, but |
1262 |
08 Apr 08 |
jari |
WITHOUT ANY WARRANTY; without even the implied warranty of |
1262 |
08 Apr 08 |
jari |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
1262 |
08 Apr 08 |
jari |
General Public License for more details. |
1262 |
08 Apr 08 |
jari |
242 |
|
1262 |
08 Apr 08 |
jari |
You should have received a copy of the GNU General Public License |
1487 |
10 Sep 08 |
jari |
along with yat. If not, see <http://www.gnu.org/licenses/>. |
1262 |
08 Apr 08 |
jari |
245 |
}}} |