Skip to content
Developed at Lawrence Livermore National Laboratory (LLNL), ROSE is an open source compiler infrastructure to build source-to-source program transformation and analysis tools for large-scale C (C89 and C98), C++ (C++98 and C++11), UPC, Fortran (77/95/2003), OpenMP, Java, Python and PHP applications.
C C++ Fortran Makefile Shell TeX Other
Branch: release
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LicenseInformation (Documentation) Install ROSE license file May 3, 2019
acmacros automake dependency tracking and UPC (gccupc) compiler fix Oct 31, 2011
cmake (windows) Add MSVC version 19.24 Feb 27, 2020
config (Release) Incremented version to 0.9.13.101 Mar 15, 2020
docs (docs) Removed references to research papers Sep 26, 2019
exampleTranslators (merge) Two assertions were violated when using merge on C++ code Jan 2, 2020
install-staging (Binary Analysis) Concolic executor work in progress Aug 19, 2019
projects Merge commit '55a62ae055fd8dfe2e0c39c9bcd588035fa30f84' into HEAD Mar 12, 2020
python (Tup) Expirimental support for the Tup build system Dec 15, 2018
scripts (Binary Analysis) Binary analysis features only defined when requested Mar 9, 2020
solaris-includes (Solaris) Enable Solaris builds May 16, 2019
src (Release) Incremented version to 0.9.13.101 Mar 15, 2020
tests Merge commit 'd9277c83634e26963b0edc9fb8e66b49692629bc' into HEAD Mar 13, 2020
tools (rajaChecker) a test with error planted in purpose Dec 10, 2019
tutorial (C) The C preprocessor is only compiled for certain languages Mar 8, 2020
utilities (compilation database) support 10 minutes default timeout for running… Feb 12, 2020
winspecific (cleanup) moved MSVS_ROSE and MSVS_project_ROSETTA_empty into winspec… Jul 13, 2012
.gitignore (typeforge) Streamlining Typeforge's flow Jul 20, 2019
.gitmodules (submodule and file paths) Jun 16, 2015
CMakeLists.txt (C) The C preprocessor is only compiled for certain languages Mar 8, 2020
COPYRIGHT Added jar files for ANTLR into ROSE source tree, changing things to i… Jul 17, 2008
Makefile.am (typeforge) Now found at https://github.com/LLNL/typeforge Feb 19, 2020
README.md (readme) updated instructions for using apt-get Nov 7, 2019
ROSE_VERSION (ROSE) Incremented version to 0.10.0.0 Mar 16, 2020
Tupfile (Tup) Expirimental support for the Tup build system Dec 15, 2018
Tupfile.ini (Tup) Expirimental support for the Tup build system Dec 15, 2018
Tuprules.tup (C) The C preprocessor is only compiled for certain languages Mar 8, 2020
build (EDG 6.0) Initial commit Jan 17, 2020
configure.ac (ROSE) Incremented version to 0.10.0.0 Mar 16, 2020
cuda-headers.tgz Added CUDA headers to be used when there is no existing installation … Mar 20, 2018
rose_config.h.in.cmake (C) The C preprocessor is only compiled for certain languages Mar 8, 2020
stamp-h.in Moved ROSE to a directory Feb 15, 2008
stamp-h1.in Merged in Jeremiah changes Feb 15, 2008
tup.config (Tup) Optional setting to disable all tests Dec 18, 2019

README.md

ROSE Compiler

ROSE is an open source compiler infrastructure to build source-to-source program transformation and analysis tools for large-scale Fortran 77/95/2003, C, C++, OpenMP, and UPC applications. The intended users of ROSE could be either experienced compiler researchers or library and tool developers who may have minimal compiler experience. ROSE is particularly well suited for building custom tools for static analysis, program optimization, arbitrary program transformation, domain-specific optimizations, complex loop optimizations, performance analysis, and cyber-security.

http://www.rosecompiler.org/

Why Use ROSE

ROSE is not grep, sed, LLVM, or a Perl script. A ROSE Tool uses the ROSE compiler-based infrastructure to parse code into a complete Abstract Syntax Tree (AST). The AST contains all the syntax and semantic information in the original code, and has a rich API supporting sophisticated analysis and transformations. The ROSE Tool queries the AST and reports on and/or changes the AST, then may emit new code from the AST. All ROSE Tools can thus precisely replicate the parsing and semantic analysis behaviour of multiple compiler languages, vendors, and versions. New ROSE Tools can quickly be created by customers or by the ROSE Team. ROSE is open-source, and is portable across a large and expanding range of platforms. ROSE Tools can process large code bases, and the ROSE infrastructure and ROSE Tool collection are continuously upgraded and extended by the LLNL ROSE Team and outside contributors.

Installation Instructions

From the source tree run ./build. Then navigate to your build tree and run configure and make.

../src/configure --prefix=/path/for/ROSE/install \
                 --enable-languages=c,c++ \
                 --with-boost=/path/to/boost/install
make -j${NUM_PROCESSORS}
make install -j${NUM_PROCESSORS}
make check -j${NUM_PROCESSORS}

For Ubuntu 18.04, we have experimental support for installating ROSE pre-built binaries packages using apt-get

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:rosecompiler/rose-development # Replace rose-development with rose-stable for release version
sudo apt-get install rose
sudo apt-get install rose-tools # Optional: Installs ROSE tools in addition to ROSE Core

For full install instructions go to https://github.com/rose-compiler/rose/wiki/How-to-Set-Up-ROSE

ROSE Directories

  • src: all source code for ROSE
  • tests: several subdirectories of test codes for ROSE.
  • tools: usable feature complete tools
  • projects: in development and incomplete tools
  • tutorial: exmples of ROSE features
  • docs: files for bulding the documentation

Documentation

For more information about ROSE and how to use it visit the github wiki at https://github.com/rose-compiler/rose/wiki

The ROSE API can be found at http://doxygen.rosecompiler.org. The API can also be made locally by going to cd $ROSE_BUILD/docs/Rose and runnig make doxygen_docs. The html pages can then be found in ${ROSE_BUILD}/docs/Rose/ROSE_WebPages and can be easily viewed by pointing your browser at ${ROSE_BUILD}/docs/Rose/ROSE_WebPages.

You can’t perform that action at this time.