# ROSE Compiler Framework/Obtaining ROSE
## Git Repositories

ROSE's source files are managed by git, a distributed revision control and source code management system.
The latest development version of rose. It may not pass all regression tests. (Recommend to use)
* https://github.com/rose-compiler/rose-develop
A release version of ROSE that passes all regression tests.
* https://github.com/rose-compiler/rose
Here are some rough instructions to get you started with building and installing ROSE on your Linux machine:
1. Install the Boost C++ libraries. You can use my quick-and-dirty script: install-boost.sh.
2. Configure your environment
3. Run the $ROSE/build script to perform the Autotools bootstrap
4. Run the $ROSE/configure script with "--with-boost=/path/to/boost", "--prefix=/path/for/installation". Optionally, you should configure --with-gomp_omp_runtime_library=/usr/apps/gcc/4.4.1/lib64/ if you want to play with OpenMP support of ROSE and link with GCC 4.4's OpenMP runtime library.
5. Run "make –j24 install-core" to build and install ROSE
Please note that we only support GCC 4.2.4 and GCC 4.4.5 currently on the ROSE-EDG4 repository. Full documentation is available on our website, http://rosecompiler.org, though instructions specific to ROSE-EDG4 are generally lacking.

#### Autoconf Configuration

The EDG4.7 frontend is enabled by default, you can just configure ROSE by using the following options

#### Example Environment
## Virtual Machine Image

It can take quite some time to install ROSE for the first time. A virtual machine image is provided with a Ubuntu 10.04 OS with ROSE already installed.
You can download it and play it using VMware Player
More information is at ROSE Virtual Machine Image

## git 1.7.10 or later for github.com

github requires git 1.7.10 or later to avoid https cloning errors, as mentioned at https://help.github.com/articles/https-cloning-errors
Ubuntu 10.04's package repository contains git 1.7.0.4. So building later version of git is needed. But you still need an older version of git to get the latest version of git.
Now you can clone the latest git
Install all prerequisite packages needed to build git from source files(assuming you already installed GNU tool chain with GCC compiler, make, etc.)

## EDG source code

If you have an EDG license, we can provide you with ROSE's EDG source code. The original, official EDG source code does NOT work with ROSE since we have modified EDG to better serve our purposes.
Note: We provide you with a snapshot of our Git revision controlled ROSE-EDG source code repository. This way, you can more easily contribute your EDG modifications back into ROSE.
1. Send your EDG (research) license to two ROSE staff members, just in case one is on vacation or on travel.
2. Provide ROSE staff with a drop-off location for the EDG source code (ssh or ftp server, etc.)
3. Once you receive the EDG source code, you have two options:

### As a submodule

a. Use ROSE-EDG as a submodule (assuming you have ROSE's Git source tree):
This is the recommended way to use the EDG git repo we provide. So the assumption is that you use a local git clone of ROSE($ROSE).
Edit submodule path in $ROSE/.gitmodules to point to your ROSE-EDG repository:
Run git-submodule commands:
The commands above will check out a version of the EDG submodule and save it into ROSE/src/frontend/CxxFrontend/EDG

### As a Drop-in

b. As a Drop-in
Move ROSE-EDG tarball into its correct location within the ROSE source tree: $ROSE/src/frontend/EDG
Warning: This method may not work because EDG is a submodule of ROSE and therefore, requires a version synchronization between the two. For example, the latest version of ROSE may not use the latest version of ROSE's EDG.

### The remaining steps

4. In ROSE, run the $ROSE/build script from the top-level of the ROSE source tree, i.e. $ROSE. This script bootstraps Autotools, including the Makefile.ams in the EDG source tree.
5. Configure and build ROSE: Normally, during this process ROSE would attempt to download an EDG binary tarball for you, but since you have the source code, this step will be skipped.

## EDG tarball
### Process

If you don't have access to the EDG source code, you will be able to automatically download a packaged EDG binary tarball during the ROSE build process. The download is triggered during make in $ROSE_BUILD/src/frontend/CxxFrontend.
The EDG binary version is a computed binary compatibility signature relative to your version of ROSE. You can check this version by running the $ROSE/scripts/bincompat-sig, for example:
You may encounter this error:
If you do, simply add ".git" to the end of your origin's URL path. In our example, this translates to:

### List of binaries

View the list of available EDG binaries here: http://www.rosecompiler.org/edg_binaries/edg_binaries.txt.
EDG binaries are generated for these platforms (Last updated on 12/22/2012):
| Platform | EDG 3.3 | EDG 4.0 |
| amd64-linux | GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 | GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 |
| i686-linux | GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 | GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 |
| 32bit-macos-10.5 | GCC 4.0.4 |
| 64bit-macos-10.6 | GCC 4.2.4 |
| 64bit-x86_64-macos-10.6 | GCC 4.2.4 |
| 34bit-debian | GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 | GCC 3.4.6, 4.0.4, 4.1.2, 4.2.4, 4.3.2, 4.4.1 |