mirror of
https://review.haiku-os.org/buildtools
synced 2025-01-18 20:38:39 +01:00
5873a060ca
* these are dependencies for gcc 4 Graphite engine build. * CLooG 0.18.0 includes ISL 0.11.1 which is the backend that the build script enables. * PPL is needed by GCC build even if it isn't the chosen backend.
204 lines
9.0 KiB
Plaintext
204 lines
9.0 KiB
Plaintext
#
|
|
# /**-------------------------------------------------------------------**
|
|
# ** CLooG **
|
|
# **-------------------------------------------------------------------**
|
|
# ** The Chunky Loop Generator **
|
|
# **-------------------------------------------------------------------**
|
|
# ** First version of this file: january 22th 2002 **
|
|
# **-------------------------------------------------------------------**/
|
|
#
|
|
|
|
For complete informations about this software, how to build and use it,
|
|
please see the postscript file in the ./doc subdirectory (a pdf version
|
|
is available in the web site).
|
|
|
|
Overview :
|
|
I. Description
|
|
II. Building CLooG
|
|
III. Options
|
|
IV. Running CLooG
|
|
V. General Questions
|
|
|
|
# **-------------------------------------------------------------------**
|
|
# ** I. Description **
|
|
# **-------------------------------------------------------------------**/
|
|
|
|
CLooG is a software which generates loops for scanning Z-polyhedra. That is,
|
|
CLooG finds the code or pseudo-code where each integral point of one or more
|
|
parametrized polyhedron or parametrized polyhedra union is reached. CLooG is
|
|
designed to avoid control overhead and to produce a very efficient code.
|
|
|
|
Its input is some data on the polyhedra to scan, basically the system of
|
|
affine inequalities that define them, and a context that defines some
|
|
properties known on the parameters if any. The output is the pseudo scanning
|
|
code. Many facilities are provided to generate a near-to-be-compileable code,
|
|
and every useful functions to generate the code may be called from the CLooG
|
|
library.
|
|
|
|
INPUT | OUTPUT
|
|
(fortunately not exactly the input, | (the real one, with default options)
|
|
check test/readme.cloog for the |
|
|
real input for that problem !) |
|
|
|
|
|
j^ i>=2 |
|
|
| | j<=n+2-i |
|
|
| |\ | i<=n |
|
|
| | \ | |
|
|
m-+-****---+-j<=m | for (i=2;i<=n;i++) {
|
|
| ***** | | for (j=2;j<=min(m,-i+n+2);j++) {
|
|
| ****** | ==> S1 ;
|
|
| *******| | }
|
|
2-+-********-j>=2 | }
|
|
| | |\ |
|
|
0-+-+------+--->i |
|
|
| | | |
|
|
0 2 n |
|
|
|
|
|
Context : n>=2 |
|
|
m>=2 |
|
|
System : 2<=i<=n |
|
|
2<=j<=m |
|
|
j<=n+2-i |
|
|
|
|
# **-------------------------------------------------------------------**
|
|
# ** II. Building CLooG **
|
|
# **-------------------------------------------------------------------**/
|
|
|
|
If you obtained CLooG from the git repository, then you first
|
|
need to obtain the submodules and create a configure script.
|
|
|
|
./get_submodules.sh
|
|
./autogen.sh
|
|
|
|
The first step is only needed if you plan on using the isl backend.
|
|
|
|
The configure shell script attempts to guess correct values for various
|
|
system-dependent variables used during compilation. It uses those values to
|
|
create a Makefile. The file configure.ac is used to create configure by a
|
|
program called autoconf. You only need configure.ac if you want to change
|
|
it or regenerate configure using a newer version of autoconf.
|
|
|
|
The simplest way to compile this package is:
|
|
cd to the directory containing the package's source code and type
|
|
|
|
./configure
|
|
|
|
to configure the package for your system (while running, configure prints
|
|
some messages telling which features it is checking for). To compile the
|
|
package, type
|
|
|
|
make
|
|
|
|
|
|
to install the program and/or the library, type
|
|
|
|
make install
|
|
|
|
you can remove the program binaries and object files from the source code
|
|
directory by typing
|
|
|
|
make clean
|
|
|
|
To also remove the files that configure created (so you can compile the
|
|
package for a different kind of computer) type
|
|
|
|
make distclean
|
|
|
|
# **-------------------------------------------------------------------**
|
|
# ** III. Options **
|
|
# **-------------------------------------------------------------------**/
|
|
|
|
By default, make will install the package's files in /usr/local/bin,
|
|
/usr/local/lib, etc. You can specify an installation prefix other than
|
|
/usr/local by giving onfigure the option --prefix=PATH.
|
|
|
|
By default, configure will use the isl that comes bundled with CLooG.
|
|
Using the --with-isl option of configure the user can specify that "no" isl,
|
|
a previously installed ("system") isl or a "build" isl should be used.
|
|
In the latter case, the user should also specify the build location
|
|
using --with-isl-builddir=PATH. In case of an installed isl,
|
|
the installation location can be specified using the
|
|
--with-isl-prefix=PATH and --with-isl-exec-prefix=PATH options of configure.
|
|
|
|
By default, configure will seek the PolyLib in standard locations.
|
|
If necessary, you can specify the PolyLib's path by giving configure the
|
|
option --with-polylib-prefix=PATH and/or --with-polylib-exec-prefix=PATH.
|
|
|
|
By default, configure will seek the GMP library in standard locations.
|
|
If necessary, you can specify the GMP's path by giving configure the
|
|
option --with-gmp-prefix=PATH and/or --with-gmp-exec-prefix=PATH.
|
|
|
|
By default, when using the PolyLib backend,
|
|
CLooG and its library are built using 64 bits integer
|
|
representation. You can choose to specify explicitly others integer
|
|
representations by using:
|
|
--with-bits=32 for 32 bits integers,
|
|
--with-bits=64 for 64 bits integers (default),
|
|
--with-bits=gmp for multiple precision integers.
|
|
|
|
# **-------------------------------------------------------------------**
|
|
# ** IV. Running CLooG **
|
|
# **-------------------------------------------------------------------**/
|
|
|
|
To run CLooG, simply type 'cloog', optionally followed by the name of an
|
|
input file. You can type 'cloog -h' or 'cloog --help' for some help.
|
|
For more informations, please check the ./doc subdirectory.
|
|
|
|
# **-------------------------------------------------------------------**
|
|
# ** V. General Questions **
|
|
# **-------------------------------------------------------------------**/
|
|
|
|
1. What does CLooG means ?
|
|
|
|
CLooG is the Chunky LOOp Generator, Chunky is an automatic loop optimizer for
|
|
data locality. CLooG is a completely independent part of the Chunky project.
|
|
Pronounce 'CLooG' as 'klug', which means 'sly' in german :-).
|
|
|
|
2. CLooG do not compile, what should I do ?
|
|
|
|
CLooG should compile everywhere (assuming that PolyLib is still there), thus
|
|
there is a problem or the documentation is not clear, in both case it is
|
|
necessary to ask the author(s) !
|
|
|
|
3. I need a feature that CLooG do not implement, what should I do ?
|
|
|
|
There are two ways. First, CLooG is a LGPL software and library. So you
|
|
are welcome to improve it yourself ;-) ! Many project have been successful, it
|
|
is -maybe- a sign that this is not too hard to put your hands inside the
|
|
source. Second, just ask the author(s) :-) ! Maybe a lot of people would be
|
|
interessed by such feature, maybe many people asked for it before, maybe it's
|
|
trivial to implement (and even)... Please just never hesitate to ask the
|
|
author(s) !
|
|
|
|
4. I implemented a cool feature, can I submit it ?
|
|
|
|
Obviously you are welcome to send the author(s) any improvement. But obviously
|
|
we are quite careful with readability, correctness and stability, and the
|
|
author(s) will read, check and check again any contribution before including it.
|
|
Thus, it can take time... There are few basic rules to write contributions:
|
|
- (1) Do never change the indentation of any part of the code that is not yours.
|
|
- (2) Do never send codes that use more than 80 columns.
|
|
- (3) Do never send codes without a lot of comments in (bad or good) english.
|
|
- (4) Do never send codes with obscure and/or non-english variable names.
|
|
- (5) Use C89, just C, only C (note: "//" comments are not C89,
|
|
variable declaration elsewhere than at the beginning of a block, is not C89).
|
|
- (6) Read doc/SubmittingPatches
|
|
Please understand that in order to live for a long time, and to be used in many
|
|
projects the very first priority for CLooG is to be readable and documented.
|
|
|
|
5. Is CLooG bug free ?
|
|
|
|
No, who can ? ClooG is a complex program, and we do not pretend it to be bug
|
|
free. Nevertheless because it has been tested and tested, we are fairly sure
|
|
that CLooG results with default options have good chances to be satisfactory.
|
|
If you find a result that looks strange, inadequate or incorrect, please send:
|
|
- (1) The input file to the author(s).
|
|
- (2) The output.
|
|
- (3) The first line given by typing 'cloog -v'.
|
|
- (4) All your command line options to achieve the result.
|
|
We will try to explain the result or to fix the problem as soon as possible.
|
|
|
|
6. How can I contact the author(s) ?
|
|
|
|
Just send a mail to cloog-development@googlegroups.com
|