|  | 
         
          |  | Building
              E
              0.9.2a on Unix-Like
              Platforms  |  
 Building EUnpack the
        source distribution into a directory, cd into "e/src"
        and say "make". You can treat <directory>/export/dist
        as the directory containing the unpacked E
        distribution, ie, the directory where E
        is to be installed. You can also copy <directory>/export/dist
        somewhere else, and treat that as the directory where E
        is to be installed. That way, it won't be overwritten on the next make.
        Be sure you have an installation of bash >= 2.05. Most Unixoids already
        have an adequate bash installed. Then proceed to the installation instructions for your platform (the
        "Installing" links in this table). This will not remake the parsers. If you wish to do so, set the environment
        variable "MAKE_PARSERS" to "true"
        before running make. If this doesn't work, see BYacc/Java
        Dependencies.  If you have any troubles building E,
        check out the new documentation on Environment
        Variables. Build-Only DependenciesIf you are only installing E
        from a binary distribution, or only rebuilding the Java portion for your
        own use, you can ignore this section. However, if you wish to build an
        E distribution from sources,
        then you will need the equivalent of the following tools as well. The Cygwin
        Distribution
       The E building process relies
        on a number of UNIX tools. These are available for Windows from Cygnus
        Support as the Cygwin package. If you wish to build E
        on Windows, you should download
        and install a version >= 1.3.12. BYacc/Java (Berkeley Yacc for Java)The E source distribution
        contains the executable binary program byaccj.exe for Windows,
        and byaccj for Linux/386/glibc. These are actually BYacc/Java
        from Bob Jamison and others.
        BYacc/Java is the Berkeley Yacc program extended with a "-j"
        flag and others for producing Java output. BYacc/Java is covered by the
        Berkeley License. The sources to byaccj are bundled with the
        E sources, and byaccj
        is optionally made as part of making E.
       BYacc/Java is only needed if you wish to remake the parsers as part of
        making E. Usually, this is
        only necessary of you wish to edit the *.y files in the source
        tree (term.y and e.y). Since BYacc/Java is a C program,
        it was causing porting headaches, and most people interested in rebuilding
        E won't need to rebuild the
        parsers anyway. So we've added a switch: If you set the environment variable
        "MAKE_PARSERS" to "true" before
        running "make", then make will try to build
        BYacc/Java on your system, and then use it to rebuild the parsers. Otherwise,
        it will just use the parsers included in the source tree. Zip FilesOur build process packs up the *.zip files in the distribution
        by using Info-Zip's
        highy portable, and highly ported, zip program. Info-Zip's zipping
        tools are open-sourced with a license that seems to resemble the X11 license,
        but before redistributing it, you should read it for yourself. The E
        distributions do not bundle in these tools. Environment VariablesThe following are the main environment variables controlling building,
        and normally the only ones you will need to be aware of if something goes
        wrong. Others variables are documented in the various makefiles, especially
        makerules.mk. 
        If there are better or more conventional ways to control these building
      issues, please let us know.
          OSTYPE - To determine whether we are compiling on
            the Cygwin platform, we check whether this is set to either "cygwin"
            or "cygwin32" (both have been encountered). If
            so, we set CYGWINOS to "1". All other
            conditionals test CYGWINOS.
          CYGWINOS - See above. If you actually are on a Cygwin
            environment, but OSTYPE has yet a different value, you probably
            shouldn't change it for fear of screwing something else up. So just
            set CYGWINOS to "1" yourself.
          JAVA_HOME - If set, it should be set to the directory
            where the JDK is installed. This is used to find certain executables
            and jar files that come with the JDK distribution.  If not set, then the needed executables (eg, "java")
            are assumed to be on the PATH, and the jar files directly known to
            the makefiles are assumed to be adequate for building. This is known
            to work when compiling with javac, and known not to work
            when compiling with jikes 1.15 and jikes 1.16. See
            below.
          JAVAC - If set, should be set to executable for the
            Java compiler. The Java compiler is assumed to be command line compatible
            with javac or jikes. If the executable is on the
            PATH, then simple names (like "javac")
            can be used rather than full pathnames. This can also include some
            initial compiler options to appear before the others. I often build
            with JAVAC set to "jikes +E +F".
            If you use jikes, please use at least version 1.15. E
            is known not to compile with jikes 1.05. I'm using Jikes 1.16 (download),
            and at least that version needs to be provided with the JDK's rt.jar
            file as an explicit component of the -classpath argument.
            The makefiles do this automatically if JAVA_HOME is set to
            the JDK's install directory. If not set, JAVAC defaults to either "javac"
            or "$(JAVA_HOME)/bin/javac", depending on whether
            JAVA_HOME is set. The makefiles are set up to fail if the layering of the sources is
            violated. However, at least E
            0.8.17 through 0.8.18 violated this layering in a way that I didn't
            detect when I built these releases using these makefiles. The problem
            was that I was compiling with jikes, and jikes is
            too aggressive at finding and compiling files the other files depend
            on. Before building a release for others to use, you should build
            with javac in order to ensure that these upwards dependencies
            are caught. I will do so from not on as well. Thanks to Darius Bacon
            and James Freddy for reporting this bug, and to Dean Tribble for diagnosing
            it.
          JAVACMD - If set, should be set to an executable
            for running Java that's command-line compatible with the JDK's "java"
            executable.  If not set, this defaults to either "java" or
            "$(JAVA_HOME)/jre/bin/java" depending on whether
            JAVA_HOME is set. 
          JAVADOC - If set, should be set to an executable
            for generating Javadoc documentation that's command-line compatible
            with the JDK's "javadoc" executable.  If not set, this defaults to either "javadoc"
            or "$(JAVA_HOME)/bin/javadoc" depending on whether
            JAVA_HOME is set. 
          MAKE_PARSERS - E
            contains a small number (two as of this writing) of *.y files,
            which are compiled into parsers written in Java using BYacc/Java
            (see above). The generated parsers are included in the source distribution
            as sources, even though technically they are not, because most
            people interested in rebuilding E
            will not care to rebuild these parsers. Those that do wish to rebuild these parsers should set MAKE_PARSERS
            to "true". This will cause the BYacc/Java executable,
            byaccj, to be rebuilt from sources, and will cause these
            parsers to be rebuild from their *.y files using byaccj.
            The BYacc/Java sources seem to have problems compiling on some platforms.
            If you encounter such problems, and especially if you figure out how
            to fix it, please let us know. If not set, this defaults to not rebuilding byaccj or the parsers,
            but just using the generated parsers included in the source distribution
            as sources. |  |