SUIF2 installation notes
Development March 23rd, 2007
SUIF2 is the infrastructure for compiler development. If you want to develop a compiler in 2 weeks, SUIF2 may be a good choice for you, at least in SUIF2 documentation, it looks quite powerful and easy to extend.
Setup the working environment
The distance of the dream and reality makes our lives more colorful. The SUIF2 can not pass the compilation in modern C++, for exmaple GCC -4.1.1-r3 in my Gentoo. I googled and found there is literarlly NO success story to compile SUIF2 with GCC 3.x, let alone GCC 4.x. I do believe some graduate students have ported it to the latest GCC as in-house work, but nobody would like to share this work. Ok, let’s face the reality, since gcc 2.96 would mess up my Gentoo’s profile, I decided to install RedHat 7.0 on my old Pentium III box.
It took a little while to find the legacy ISO, but the install procedure was quite smooth, the ugly text installation wizard reminded me the time in my college, some Linux fans scratched heads to make X works. The bottom line is a Linux box with GCC 2.96 and SSH access.
Prepare the dependencies
Besides the dependency on gcc 2.96, SUIF2 also depends on the graphviz and gv for the graphics output. I could not find the RPM for graphviz due to the “RPM dependency hell” of RedHat. This is just the option. Let’s move on.
Build the SUIF2
Just follow this HOWTO.
tar xvfz ~/tmp/basesuif-2.2.0-4.tar.gz
cd nci
patch -p1 < /path/to/patches/gcc296.patch
./install
make setup
make
Done.
NOTICE install would setup the $NCIHOME to the current working directory, you may override it after the build.
Test drive
Here is a canonical helloworld in $NCIHOME/bin, create_suif_hello_world. If the indented output is generated, the basic suif2 environment is setup correctly.
To invoke the SUIF2, you still need PGI C Compiler front end, pgcpp1. You could get it from the SUIF2 website. And you might need to setup the LD_LIBRARY_PATH to load all SUIF2 and pgcpp’s shared objects. In my case, SUIF2 is installed in $HOME/opt:
export LD_LIBRARY_PATH=$HOME/opt/nci/lib:$HOME/opt/nci/solib
Now, for a road test, just prepare a helloworld.c, and run
If you get helloworld.suif, Bravo!
What is the next?
The suif output is for the machine to parse, not readable for men. So we might need to install extra viewer for SUIF2.
wget http://suif.stanford.edu/pub/suif/extras-2.2.0-4.tar.gz
tar xvfz extras*.tar.gz
cd nci
make
Extras would install several viewer for .suif file, for example, suif2c helloworld.suif would generate helloworld.out.c to inspect.
Leave a Comment