]> git.lyx.org Git - lyx.git/blobdiff - INSTALL
second part of Claus' patch
[lyx.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index 57a240626e58db146b5df00bd81a542e62c41176..eef62e211f1a2d96e661af0e5a68251f68254970 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,11 +1,3 @@
-Note for CVS checkouts
-----------------------
-
-If you have checked this out from CVS, you need to have
-automake, autoconf, and gettext installed.  Then,
-type "./autogen.sh" to build the needed configuration
-files and proceed as stated below.
-
 Compiling and installing LyX
 ============================
 
@@ -28,19 +20,42 @@ These four steps will compile, test and install LyX:
            if you want a smaller binary. 
 
 
+Note for CVS checkouts
+----------------------
+
+If you have checked this out from CVS, you need to have
+automake, autoconf, and gettext installed.  Then,
+type "./autogen.sh" to build the needed configuration
+files and proceed as stated below.
+
+You will also probably need GNU m4 (perhaps installed as gm4).
 Requirements
 ------------
 
-You will need to have both an Xforms library and Xpm library to compile 
-LyX.  It is imperative that you have the correct versions of these 
+First of all, you will also need a recent C++ compiler, where recent
+means that the compilers are close to C++ standard conforming.
+Compilers that are known to compile LyX are egcs 1.1.x, gcc 2.95.x and
+later, and Digital C++ version 6.1 and later. Please tell us your
+experience with other compilers. It is _not_ possible to compile LyX
+with gcc 2.7.x and 2.8.x, and this is not likely to change in the
+future.
+
+Note that, contrary to LyX 1.0.x, LyX 1.2.x makes great use of C++
+Standard Template Library (STL); this means that gcc users will have
+to install the relevant libstdc++ library to be able to compile this
+version.
+
+Both an Xforms and Xpm libraries should be installed to compile LyX.
+It is imperative that you have the correct versions of these
 libraries, and their associated header files.
 
-As of LyX version 1.1.5, you will need to have Xforms library and
-header version 0.88 or 0.89.  Version 0.88 is a stable release and the
-recommended version, but 0.89.6 seems to be work very well too.  On
-some systems, such as linux ELF, there are shared library versions of
-the Xforms library, which require an installation step to configure
-the system.
+As of LyX version 1.2.0, you will need to have Xforms library and
+header version 0.88 or 0.89. Version 0.89.6 is the one which works
+best, but the old stable 0.88.1 version is still supported. On some
+systems, such as linux ELF, there are shared library versions of the
+Xforms library, which require an installation step to configure the
+system.
 
 Xforms is available (free) only in binary format, source code is not
 available.  If it is not available for your machine, contact the Xforms
@@ -52,32 +67,18 @@ developers to request a version for your system.  You can get it from
     ftp://ftp.fu-berlin.de/unix/X11/gui/xforms
     ftp://ftp.cs.ruu.nl/pub/XFORMS/
 
-In addition, you must have libXpm version 4.7 (or newer; 4.8 rumoured
-to work).
+If you use a rpm-based linux distribution, such as RedHat or Mandrake,
+we recommend that you grab a version of xforms from
+  ftp://ftp.lyx.org/pub/lyx/contrib 
+as the rpm packages commonly found are compiled against glibc 2.0
+instead of 2.[12], and this causes occasional crashes.
 
-To use the thesaurus, you will need to install libAikSaurus, available
-from :
+In addition, you must have libXpm version 4.7 or newer.
 
-    http://aiken.clan11.com/aiksaurus/ 
+Note that the Qt and Gnome frontends are still under development, and
+as a result are only useful if you want to help out with testing and
+development.
  
-You will also probably need GNU m4 (perhaps installed as gm4).
-libXpm can be found at:
-           http://www.funet.fi/pub/Linux/sunsite/X11/libs/!INDEX.html
-           (or similar locations at other sunsites like sunsite.unc.edu)
-
-You will also need a recent C++ compiler, where recent means that the
-compilers are close to C++ standard conforming.  Compilers that are
-known to compile LyX are egcs 1.1.x, gcc 2.95.x and later, and Digital
-C++ version 6.1 and later.  Please tell us your experience with other
-compilers.  It is _not_ possible to compile LyX with gcc 2.7.x and
-2.8.x, and this is not likely to change in the future.
-
-Note that, contrary to LyX 1.0.x, LyX 1.1.x makes great use of C++
-Standard Template Library (STL); this means that gcc users will have
-to install the relevant libstdc++ library to be able to compile this
-version.
-
 If you make modifications to files in src/ (for example by applying a
 patch), you will need to have the GNU gettext package installed, due
 to some dependencies in the makefiles. You can find the latest version
@@ -88,7 +89,11 @@ from:
 LyX contains a hack to work around this, but you should not rely too
 much on it.
 
+To use the thesaurus, you will need to install libAikSaurus, available
+from :
 
+    http://aiken.clan11.com/aiksaurus/ 
 Finally, the two following programs should be available at
 configuration time:
 
@@ -99,9 +104,9 @@ configuration time:
     the machine on which LyX is built is not the one where it will
     run). 
 
-  o LaTeX2e should be correctly setup for the user you are logged
+  o LaTeX2e should be correctly setup for the user you are logged in
     as. Otherwise, LyX will not be able to run a number of tests. Note
-    that users can run these tests manually with Option->Configure.
+    that users can run these tests manually with Edit>Reconfigure.
 
 
 Creating the Makefile
@@ -139,6 +144,10 @@ flags:
     the same system. You can optionally specify a "version" of your own,
     by doing something like : ./configure --with-version-suffix=-latestcvs
 
+    Note that the standard configure options --program-prefix,--program-suffix
+    and the others will not affect the shared LyX directory etc. so it
+    is recommended that you use --with-version-suffix (or --prefix) instead.
+
   o --enable-optimization=VALUE enables you to set optimization to a
     higher level as the default (-O), for example --enable-optimization=-O3.
 
@@ -169,8 +178,7 @@ LyX:
 Moreover, the following generic configure flags may be useful:
 
   o --prefix=DIRECTORY specifies the root directory to use for
-    installation. [defaults to where lyx has already been installed or
-    /usr/local]
+    installation. [defaults to /usr/local]
 
   o --datadir=DIRECTORY gives the directory where all extra LyX 
     files (lyxrc example, documentation, templates and layouts
@@ -206,7 +214,7 @@ desperate cases:
     the compilation of LyX.  Opposite is --disable-warnings.  By default,
     this flag is on for development versions only.
 
-  o --enable-assertions that make the compilier generater run-time
+  o --enable-assertions that make the compiler generate run-time
     code which checks that some variables have sane values. Opposite
     is --disable-assertions.  By default, this flag is on for
     development versions only. 
@@ -221,7 +229,7 @@ desperate cases:
     flag, please report it as a bug. 
 
   o --without-liberty suppresses the detection of the -liberty library
-    (see the section 'Problems').
+    (see the section `Problems').
 
 
 Compiling and installing LyX
@@ -235,7 +243,7 @@ Once you've got the Makefile created, you just have to type:
 All should be OK ;)
 
 Since the binaries with debug information tend to be huge (although
-this does not affect the run-time memory footprint), you maight want
+this does not affect the run-time memory footprint), you might want
 to strip the lyx binary. In this case replace "make install" with
 
   make install-strip
@@ -270,15 +278,9 @@ Preparing a binary distribution for the use of others
 ------------------------------------------------------
 
   o Compile LyX with the right compiler switches for your
-    architecture. In particular you might want to ensure that
-    libraries like xforms and xpm are statically linked. To this end,
-    you can use a command like
-
-                make LYX_LIBS='/foo/libforms.a /bar/libXpm.a'
-
-    Moreover, make sure you use the --without-latex-config switch
+    architecture. Make sure you use the --without-latex-config switch
     of configure, since others might not be interested by your
-   configuration :-) 
+    configuration :-) 
 
   o Create a file README.bin describing your distribution and
     referring to *you* if problems arise. As a model, you can use the 
@@ -333,49 +335,8 @@ notify us.
     then you need to upgrade the version of the xforms library you have
     installed.
 
-  o It is possible to compile lyx with Tru64 Unix cxx compiler
-    version 6.2, provided one uses
-       CXX='cxx -std strict_ansi'
-       CXXFLAGS='-ptr /tmp/lyx_cxx_repository -g'
-       CC=cc
-
-    Note that this will not work when compiling directly from the cvs
-    repository, due to the tricks used by automake for dependencies. Ask
-    Jean-Marc.Lasgouttes@inria.fr for a workaround.
-
-  o On Tru64 Unix, you may have to compile with
-    --with-included-string to work around a Tru64 linker limitation
-    (the STL string template creates names which may be too long). We
-    also had reports that it helps with gcc 2.95.2 on solaris 2.6. 
-
-  o On Tru64 Unix with cxx, you may have a compilation error in
-    lyx_main.C if you have GNU gettext installed. This is due to a bug
-    in gettext. To solve this, you can either (1) configure with
-    --with-included-gettext or (2) add -D__STDC__ to cxx flags.
-
-  o According to John Collins <collins@phys.psu.edu>, on SunOS 4.1.3 you may 
-    find two sets of X libraries, and they are of course incompatible :-)
-    One is the set provided as part of OpenWindows, and one is the standard
-    X distribution (e.g., X11R5).  If you encounter problems (or if, for
-    some obscure reasons configure cannot find your X libraries) you can
-    use the following options:
-
-     o --x-libraries=DIRECTORY that indicates where the X libraries reside.
-
-     o --x-includes=DIRECTORY that indicate where the X include files reside.
-
-    The standard X11R5 libraries should work when the OpenWindows ones
-    don't.
-
-  o Some systems lack functions that LyX needs.  To fix this, configure
-    tries to link against the -liberty library, if it is available. 
-    If you experience problems with missing symbols at link time, you 
-    could try to install libiberty.a, which comes with several GNU 
-    packages (in particular libg++).  In any case, please report your 
-    problems to lyx-devel@lists.lyx.org. 
-
-    The option --without-liberty disable the detection of -liberty.  It
-    is meant for debugging purpose only.
+  o On solaris 2.6, you may have to compile with --with-included-string
+    if compiling with gcc 2.95.2.
 
   o According to David Sundqvist <David_Sundqvist@vd.volvo.se>, some
     changes are needed to compile with aCC on HP-UX 10.20. These are the
@@ -386,22 +347,55 @@ notify us.
                              # which currently break.
 
     LIBS = -lforms -lXpm  -lSM -lICE -lc -lm -lX11 -lCsup # must link with Csup
-    LDFLAGS = -L/opt/aCC/lib # perhaps not needed. 
-
-
-  o On Digital Unix with gcc, you can get warnings like
-
-warning, LyXFamilyNames not found in original or external symbol tables, value defaults to 0
-
-    These concern symbols beginning with an uppercase letter and seems
-    to be harmless. Similarly, the compilation can end with the
-    following warning:
-
-/bin/ld:
-Warning: Linking some objects which contain exception information sections
-        and some which do not. This may cause fatal runtime exception handling
-        problems (last obj encountered without exceptions was ../intl/libintl.a).
-
-
-    You can safely ignore it. 
-
+    LDFLAGS = -L/opt/aCC/lib # perhaps not needed.
+
+  o LyX can be compiled on Tru64 Unix with either GNU's gcc or the default
+    Compaq cxx compiler.
+
+    There are no Alpha-specific problems with gcc.
+
+    The following notes all refer to compilation with the Compaq cxx compiler.
+
+    LyX cannot be compiled on Tru64 Unix 4.0d or 4.0e with the default cxx
+    compiler. You should upgrade to at least cxx V6.2, to be found at
+    ftp::/ftp.compaq.com/pub/products/C-CXX/tru64/cxx/CXX622V40.tar. Users
+    running Tru64 Unix 4.0f and greater should have no real problems compiling
+    LyX.
+
+    cxx V6.2 will compile LyX out of the box.
+    cxx V6.3-020 is also known to work, although there is a bug in
+    /usr/include/cxx/deque that will break compilation in FormPreferences.C.
+    Compaq are investigating, but a patch that works /now/ is: 
+
+--- /usr/include/cxx/deque_safe Mon Mar  4 21:09:50 2002
++++ /usr/include/cxx/deque      Mon Mar  4 21:09:00 2002
+@@ -570,9 +570,11 @@
+       {
+         if (size() >= x.size())
+           erase(copy(x.begin(), x.end(), begin()), end());
+-        else
+-          copy(x.begin() + size(), x.end(),
+-               inserter(*this,copy(x.begin(),x.begin()+size(),begin())));
++        else {
++         const_iterator mid = x.begin() + difference_type(size());
++         copy(x.begin(), mid, begin());
++         insert(end(), mid, x.end());
++       }
+       }
+       return *this;
+     }
+
+    At the time of writing, cxx V6.5-026 is the latest cxx compiler. It is
+    /not/ recommended. Not only do the bugs in the system header files still
+    exist, but the compiler itself appears to be both buggy and extremely
+    bloated (trebles the size of the stripped LyX binary).
+
+    In order to compile LyX with the cxx compiler, you should run configure
+    with the following flags:
+       CXX='cxx -std strict_ansi'
+       CXXFLAGS='-nopure_cname -nocleanup -ptr /tmp/lyx_cxx_repository -O2'
+       CC='cc -std1'
+    The -nopure_cname flag is needed for compilers V6.3 and above because
+    LyX makes use of functions like popen, pclose that are defined in the
+    c version of <stdio.h> but are not formally part of any c/c++ standard.
+    They are not, therefore, included in the <cstdio> header file.