How to install PFE from the dnw branch

Last revision: January 8, 2013

The most recent version of my updates to Guido Draheim's SourceForge svn repository for PFE are to be found in branches/dnw/pfe-33. They get merged back into trunk/pfe-33 on an indefinite schedule. If you already have an svn checkout of the branch, just do  svn update  in the appropriate directory, and proceed with the build starting at step 4 or 5.

  1. Create a directory for an svn checkout. For example:
      /usr/local/svn/pfe/dnw
    
  2. Given the example directory, execute:
      cd /usr/local/svn/pfe/dnw
      svn co http://pfe.svn.sourceforge.net/svnroot/pfe/branches/dnw/
    
  3. Change to the pfe-33 directory:
      cd /usr/local/svn/pfe/dnw/pfe-33
    
  4. Execute ./configure with arguments appropriate for your system. For example, it used to be that when I did linux, I didn't have access to /usr/local. Then I would execute the following, but without line wrap:
      ./configure --prefix=$HOME --with-cflags=-DUNROLL_NEXT
        --with-regs=many --with-opt=3
    
    When I do OS X on a computer at home, I have access to /usr/local, and I execute the following:
      ./configure --with-regs=all --with-cflags=-DUNROLL_NEXT --with-opt=3
    
  5. Still in the pfe-33 directory, execute:
      make
      make check
      make install
    
    Currently  make check  gives an error for exceptn under OS X. I just ignore it.
Under darwin (OS X Mountain Lion) and linux (Linux Mint 14), I currently do dual 32/64-bit builds with an architecture-dependent tree that extends the default /usr/local tree by adding two directories:
    /usr/local/i386
    /usr/local/x86_64
We assume a gcc compiler that works with both -m32 and -m64. The first three steps below are to be done twice, once for 32 and once for 64 bits, from within the local svn checkout directory, pfe-33.
  1. Remove any previous build subdirectory. For example:
      rm -r Darwin*
    
    or
      rm -r Linux*
    
  2. Execute one of the two scripts doconf32 or doconf64.

  3. Do step 5 above.

  4. Make links:
      cd /usr/local/bin
      ln -s /usr/local/i386/bin/pfe pfe32
      ln -s /usr/local/x86_64/bin/pfe pfe64
    
    You may want to make an extra link named pfe for whichever one of these is to be your default.
With this setup, architecture-independent files, such as Forth source code, go into
  /usr/local/share
and architecture-dependent files go into
  /usr/local/i386/bin
  /usr/local/i386/lib
  /usr/local/i386/include
or into
  /usr/local/x86_64/bin
  /usr/local/x86_64/lib
  /usr/local/x86_64/include
Actually only a few of the include files are architecture-dependent, namely:
  config.h
  _config.h
  _target.h
But with the current PFE configuration logic, the above dual build scheme leaves copies of all PFE header files into both i386/include and x86_64/include.

Note that this scheme does not produce dual-architecture (fat) binaries under darwin.