-
Notifications
You must be signed in to change notification settings - Fork 7
Meinersbur/pencilcc
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
pencilcc
=============
Driver for PENCIL compile toolchain.
Requirements (might be incomplete)
----------------------------------
- C99 compiler (Tested with gcc 4.9.1)
- autoconf (Tested with version 2.69)
- automake (Tested with version 1.14)
- libtool (Tested with version 2.4.2)
- pkg-config (Tested with version 0.26)
- ppcg (Bundled in ppcg submodule)
- Integer Set Library (Bundled in ppcg/isl submodule)
- GNU Bignum Library (Tested with version 5.1.3)
- PET (bundled in ppcg/pet submodule)
- Clang headers and libraries (Tested with versions 3.3-3.6)
- Clang requirements (C++ compiler, headers for libedit, zlib, ...)
- pencil headers (Bundled in pencil-headers submodule)
- PRL (Bundled in prl submodule)
- polybench (Tested with version 3.2; automatically downloaded by the get-polybench.sh script and bundled in the dist version)
- Python3 (Tested with version 3.4.2)
Installation
------------
./configure
make
sudo make install
in the pencilcc directory. See './configure --help' for options.
'make install' will install pencilcc, penciltool, ppcg, the PENCIL and PRL headers, and PRL shared library.
Usage
-----
pencilcc is a compiler invocation replacement. Replace your compiler call by pencilcc. Call 'pencilcc --help' for options. Every option not recognized is passed to the compiler (cc) after optimization took place.
penciltool is a prefix for the main compiler invocation, like libtool. Replace a call to 'gcc <gcc_options>' by 'penciltool <ppcg_options> gcc <gcc_options>'. Files will be preprocessed by ppcg before being passed to gcc.
By default *.pencil.c and *.pencil files are assumed to contain pure PENCIL code (sublanguage of C99) and every other file C99 code with embedded PENCIL (#pragma scop/#pragma endscop).
pencilcc/penciltool have three configuration modes:
`build`) Then executed from the build directory, it will use the files from the source-tree and build directory. I.e., installation is not necessary.
`install`) Use the path configured by --prefix to find the required tools and files. Used by default when not started from the build directory.
`system`) Uses no paths, but assumes that all files and tools are in the default search paths (e.g. /usr/bin, /usr/include, /usr/lib)
Configuration modes can be changed explicitly using the --pencil-config command line option.
Known Issues
------------
- pencilcc assumes the compiler accepts gcc command line syntax
- pencilcc assumes the compiler invocation includes linking; i.e. the options -c (compile to .o) and -E (precompile) are not recognized
- Some warnings are unavoidable (e.g. unkonwn attribute)
- ppcg --version reports UNKNOWN for its own version
Future Features
---------------
- Detect -c and -E (+ others) compile modes
- Honor -x switch
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Packages 0
No packages published