source: git/factory/FACTORY.INSTALL @ 1e4b53

spielwiese
Last change on this file since 1e4b53 was 4df5bd, checked in by Oleksandr Motsak <motsak@…>, 13 years ago
ADD: one can use autoreconf, for instance as via autogen.sh for generating a buildsystem RM: INSTALL/mkinstalldirs/install-sh are generated automatically by autotools CHG: please use autogen.sh instead of for_Hans_with_love.sh
  • Property mode set to 100644
File size: 11.0 KB
RevLine 
[c9923b8]1
2
[20e558]3  --- This `INSTALL' file corresponds to Singular-Factory version 1.3b ---
[c9923b8]4
5
[20e558]6                INSTALL file for Singular - Factory
7                ===================================
[c9923b8]8
[20e558]9NOTE: The copyright of Singular-Factory is described in the
[ccf43d5]10      file COPYING
[a56b3a]11
[c9923b8]12Overview                                Installation for the impatient
13========                                ==============================
141. Configuring Factory                  ./configure
152. Building Factory                     make all
[a56b3a]163. Creating GF(q) Tables                make gftables
[c9923b8]174. Installing Factory                   make install
[a56b3a]185. Installing GF(q) Tables              make installgftables
196. Testing Installation of Factory      make installtest
[c9923b8]20
21
221. Configuring Factory
23======================
[a56b3a]24  The `configure' shell script attempts to guess correct values for various
[c9923b8]25system-dependent variables used during compilation.  It uses those values
[a56b3a]26to create a `GNUmakefile' and a `config.h' file containing system-dependent
27definitions.  Finally, it creates a shell script `config.status' that you
28can run in the future to recreate the current configuration, a file
29`config.cache' that saves the results of its tests to speed up
30reconfiguring, and a file `config.log' containing compiler output (useful
31mainly for debugging `configure').
[c9923b8]32
[ed59e2]33  If you need to do unusual things to compile the package, please try to
[a56b3a]34figure out how `configure' could check whether to do them, and mail diffs
35or instructions to the address given in the `README' file so they can be
36considered for the next release.  If at some point `config.cache' contains
[c9923b8]37results you don't want to keep, you may remove or edit it.
38
[a56b3a]39  The file `configure.in' is used to create `configure' by a program called
40`autoconf'.  You only need `configure.in' if you want to change it or
41regenerate `configure' using a newer version of `autoconf'.
42
43  Normally, `configure's guesses are correct.  However, you may want to
44check the values it came up with.  Especially the way `configure' tries to
45figure out the path to the GF(q) tables (`GFTABLEDIR') may be fooled in
46some circumstances.  See the marked sections in the files `config.h' and
47`GNUmakefile' which configure created.  See also the description of the
48`GNUmakefile' target `installtest', which, among others, tests the
49installation of the GF(q) tables.
[ed59e2]50
[c9923b8]51Compiler options
52----------------
[ed59e2]53  Some systems require unusual options for compilation or linking that the
[a56b3a]54`configure' script does not know about.  You can give `configure' initial
[c9923b8]55values for variables by setting them in the environment.  Using a
56Bourne-compatible shell, you can do that on the command line like this:
57
58  CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
59
[a56b3a]60Or on systems that have the `env' program, you can do it like this:
[c9923b8]61
62  env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
63
[a56b3a]64  In contrast to the GNU-world, Factory is translated with `CFLAGS=-O2
65-fomit-frame-pointer' `CXXFLAGS=-O2 -fomit-frame-pointer' by default.  If
66you do not like this, run `configure' with
[c9923b8]67
68  CFLAGS='-g -O' CXXFLAGS='-g -O' ./configure
[ed59e2]69
[c9923b8]70Specifying source and installation directories
71----------------------------------------------
[a56b3a]72  `configure' recognizes the `--srcdir=<srcdir>' option and looks in
73<srcdir> for the source files when building Factory.  This is useful if you
74want to translate Factory with different configurations (see the
75corresponding section).
76
77  By default, `make install' will install the package's files in
78`/usr/local/lib', `/usr/local/include', etc.  You can specify an
79installation prefix other than `/usr/local' by giving `configure' the
80option `--prefix=<path>'.
[ed59e2]81  You can specify separate installation prefixes for architecture-specific
[c9923b8]82files and architecture-independent files.  If you give configure the option
[a56b3a]83`--exec-prefix=<path>' the package will use <path> as the prefix for
[77b22b]84installing the libraries.  The other data files will still use the regular
[c9923b8]85prefix.
[b7ef56]86
[c9923b8]87Configuring and building Factory for different configurations
88-------------------------------------------------------------
89  The configure script that comes with Factory recognizes a number of
90additional options.  Here is a list of them which you can get entering
[a56b3a]91`./configure --help':
[c9923b8]92
[3c8c49]93  --with-memman(=<memman>) specify Factory memory manager.
[a56b3a]94                          <memman> is either `old' (default), `new', or `no'.
[c9923b8]95  --with-gmp(=<gmp_inc_path>(,<gmp_lib_path>))
96                          specify where to find gmp library.
97  --with-Singular         build for use with computer algebra system Singular.
[3c8c49]98  --disable-streamio      build Factory without stream IO
99  --enable-memdebug=<level> switch on memory management debugging.  Meaningful
[a56b3a]100                          with `--with-memman=new' only.  <level> may be either
101                          `no' (default), `normal', or `full'.
[3c8c49]102  --enable-assertions     build Factory with assertions activated
103  --enable-timing         build Factory so it will print timing information
104  --enable-debugoutput    build Factory so it will print debugging information
[a56b3a]105  --enable-gmp            together with `--with-Singular' means: installation
106                          in process, be graceful when there is no `gmp.h'
[b7ef56]107
[a56b3a]108  For more detailed information, see the `README' file.  Note that not all
109possible combinations of the `--with's and `--enable's are meaningful.  The
110dependencies between them are described in the `README' file, too.
[c9923b8]111
112  You can compile the package for more than one configuration at the same
[77b22b]113time.  I recommend to build an optimized and a debug version.  The debug
114version is much slower but includes many assertions that will show you a
[c9923b8]115probable misuse or malfunction of the library.  Here is the sequence of
116commands necessary to do that:
117
118  # debug version
119  cd factory-<version>
120  mkdir DEBUGDIR
121  cd DEBUGDIR
122  CFLAGS=-g CXXFLAGS=-g ../configure \
123    --srcdir=.. --prefix=/usr/local/factory.dbg --enable-assertions
124  make install
125  make installgftables
126  cd ../..
127
128  # optimized version
129  cd factory-<version>
130  mkdir OPTDIR
131  cd OPTDIR
132  ../configure --srcdir=.. --prefix=/usr/local/factory.opt
133  make install
[a56b3a]134  # Better set a symbolic link from one $(gftabledir) to the other.  The
[3c8c49]135  # GF(q) tables are the same for all configurations.
[c9923b8]136  make installgftables
137 
138
[b7ef56]139Configuring for Microsoft Windows NT
140------------------------------------
141  Factory compiles on Microsoft Windows NT 4.0 with the Microsoft Visual
142C++ 5.0 compiler.  There is a preconfigured environment contained in the
143folder `winnt/' which includes `config.h', `factoryconf.h', `factory.h' and
144a Makefile `nt.mak', suitable for use under MS VC++ 5.0.  There is also a
145file called `INSTALL.nt' which contains information about how to build
146under Windows NT.
147
[c9923b8]148Configuring for Macintosh or other non-Unix platforms
149-----------------------------------------------------
[ed59e2]150  Factory translates on Macintosh with the Metroworks CodeWarrior compiler
[77b22b]151now.  If you want to build Factory on this or other non-Unix platforms you
[a56b3a]152either have to configure `config.h' and `GNUmakefile' by hand or you have
153to create a suitable `config.cache' file and run `configure' on a machine
[b7ef56]154that supports it.  Furthermore, you have to create the files `factory.h'
155and `factoryconf.h'.
[a916f5]156
[c9923b8]157
1582. Building Factory
159===================
160  Targets/commands for building Factory:
161
[a56b3a]162`make all'
[c9923b8]163----------
[a56b3a]164  Builds Factory.  According to configuration, `make all' builds only
165Factory (`make cf') or Factory and the Factory memory manager (`make cf;
[77b22b]166make mem').
[c9923b8]167
[a56b3a]168`make clean', `make mostlyclean', `make distclean'
[c9923b8]169--------------------------------------------------
[77b22b]170  Deletes all files from the current directory that have been created by
[a56b3a]171building Factory.  In addition, `make mostlyclean' deletes the GF(q) tables
172if they have been created by `make gftables'.  `make distclean' is like
173`make mostlyclean', but also deletes all files from the current directory
[c9923b8]174that have been created by configuring.  If you have unpacked the source and
[a56b3a]175built the program without creating any other files, `make distclean' leaves
[c9923b8]176only the files that were in the distribution.
177
[a56b3a]178`make TAGS'
[c9923b8]179-----------
[77b22b]180  Updates a tags table for Factory.
[c9923b8]181
[a56b3a]182`make depend'
[c9923b8]183-------------
[77b22b]184  Creates dependencies.  Once created, they will be automatically updated as
[c9923b8]185source files change.  Intended to be used by developers.
186
[a56b3a]187`make ftmpl_inst.o'
[c9923b8]188-------------------
[a56b3a]189  Creates the Factory template instantiations.  Necessary when linking
[77b22b]190Factory with your application.
[c9923b8]191
192
[a56b3a]1933. Creating GF(q) Tables
[c9923b8]194========================
195
196NOTE: Since the format of the GF(q) tables changed from Factory Version
[77b22b]1971.2b to Factory Version 1.3a you should get/create them by new!
[c9923b8]198
199There are two possibilities to get the tables:
[a56b3a]200o Get them from the net where you got Factory from.  Unpack the archive
201  `factory-gftables.tgz' in the source directory (`factory-<version>.tgz')
202  or in the directory in which you are going to build Factory.
203o Create them using Factory itself.  Since this process does not require
204  arithmetics in GF(q) there are not any bootstrapping problems.  There
205  are two targets which accomplish this, the second depending from the
206  first:
207
208   `make gengftables'
[c9923b8]209   ------------------
[a56b3a]210     Creates the executable `gengftables' necessary to build the tables.
[c9923b8]211
[a56b3a]212   `make gftables'
[c9923b8]213   ---------------
[a56b3a]214     Creates a directory `gftables/' and executes `gengftables'.  This is a
[3c8c49]215   rather time consuming process, so you may want to start it in the
[a56b3a]216   background using `nohup' (`nohup make gftables &').
[c9923b8]217
218
2194. Installing Factory
220=====================
221  Targets/commands for installing Factory:
222
[a56b3a]223`make install'
[c9923b8]224--------------
[3c8c49]225  Builds and installs Factory.  This target also creates the directories
226in which Factory will be installed if they do not already exist.
[c9923b8]227The files are installed in the following directories:
228
[a56b3a]229File            Symb.Name       (Default) physical location
[c9923b8]230------------------------------------------------------------------------
231libcf.a         $(libdir)       = /usr/local/lib
232  (Factory itself)
233libcfmem.a      $(libdir)       = /usr/local/lib
234  (Factory memory manager)
235
236factory.h       $(includedir)   = /usr/local/include
237  (Factory user interface header file)
238factoryconf.h   $(includedir)   = /usr/local/include
239  (Factory template configuration header)
240
241templates/*     $(templatedir)  = /usr/local/include/templates
242  (Factory templates)
243ftmpl_inst.cc   $(templatedir)  = /usr/local/include/templates
244  (Factory template instantiation)
245
246gftables/*      $(gftabledir)   = /usr/local/share/factory/gftables
[a56b3a]247  (Factory GF(q) tables, installed by `make installgftables')
[c9923b8]248
[a56b3a]249`make uninstall'
[c9923b8]250----------------
[77b22b]251  Deletes all the installed files that the install target created.  Also
[3c8c49]252attempts to delete the directories created by the installation process.
[c9923b8]253
254
[a56b3a]2555. Installing GF(q) Tables
[c9923b8]256==========================
[a56b3a]257  Targets/commands for installing the GF(q) tables.
258
259`make installgftables'
[c9923b8]260----------------------
[a56b3a]261  Installs the GF(q) tables in `$(gftabledir)' ( by default this is
262`/usr/local/share/factory/gftables').
[c9923b8]263
[a56b3a]264`make unistallgftables'
[c9923b8]265-----------------------
[3c8c49]266  Uninstalls the GF(q) tables and attempts to delete the directories created
267by the installation process.
[a56b3a]268
269
2706. Testing Installation of Factory
271==================================
272`make installtest'
273------------------
274  Builds and runs the small executable `test_install' which tests whether
275Factory and the GF(q) tables have been configured, built, and installed
276correctly.
Note: See TracBrowser for help on using the repository browser.