Changeset 4200b7e
- Timestamp:
- Jun 27, 2021, 9:53:50 PM (4 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 2ac218d
- Parents:
- 2e19e91
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified INSTALL ¶
r2e19e91 r4200b7e 1 cfa-cc: The Cforall->C Compiler System1 cfa-cc: Cforall to C Trans-compiler 2 2 ====================================== 3 3 4 4 Cforall is built using GNU Make and the GNU Autoconf system. It also requires 5 g++ version >= 4.6, bison and flex. On systems where GNU Make is the default5 g++ version >= 6, bison and flex. On systems where GNU Make is the default 6 6 make, the system is built by entering the commands: 7 7 8 For dev s using the root git:8 For developers using the root git: 9 9 10 ./autogen.sh 11 ./configure 12 make 13 make install 10 $ ./autogen.sh 11 $ ./configure 12 $ make -j 8 install 14 13 15 14 For users using the distributed tarball: 16 15 17 ./configure 18 make 19 make install 16 $ ./configure 17 $ make -j 8 install 18 19 where 8 is the number of CPUs on your computer. 20 20 21 21 22 Options for 'configure' 22 ----------------------- 23 ====================================== 23 24 The script 'configure' accepts many command line arguments. Run './configure 24 25 --help' to see a list of all of them. This document attempts to summarize the … … 31 32 it is important not to put quotes around the directory path; Cforall may 32 33 appear to build, but the installed version may not work properly. 34 35 36 Build Test 37 ====================================== 38 39 $ cd ./test 40 $ make -j 8 all-tests 41 42 The tests take about 2-5 minutes and can be stopped at any time. -
TabularUnified README ¶
r2e19e91 r4200b7e 1 cfa-cc: The Cforall->C Compiler System1 cfa-cc: Cforall to C Trans-compiler 2 2 ====================================== 3 3 … … 6 6 responsibility for the consequences of any malfunction of the software, 7 7 including the malfunction of any programs compiled using the software. 8 8 9 9 10 What is Cforall? … … 25 26 into a modern programming language. 26 27 28 27 29 What is cfa-cc? 28 30 --------------- 29 cfa-cc is a collection of programs centred around a translator that takes30 Cforall code as input and outputs corresponding C code. This is complemented 31 by a compiler driver in the style of "gcc", which handles preprocessing, 32 compiling, assembling, and linking and invokes the translator at appropriate 33 moments.31 cfa-cc is a collection of programs centred around a translator (trans-compiler) 32 that takes Cforall code as input and outputs augmented C code that implements 33 new features. The translator is complemented by a compiler driver in the style 34 of "gcc", which handles preprocessing (including cfa-cc after cpp), compiling, 35 assembling, and linking. 34 36 35 What is required in order to use cfa-cc? 37 cfa-cc is currently written in C++, but eventually be rewritten in Cforall. 38 39 40 How to download and build cfa-cc? 36 41 ---------------------------------------- 37 Building cfa-cc requires GNU Make and gcc/g++ 4. cfa-cc is written in C++. 42 Download cfa-cc using 38 43 39 The compiler driver uses an installed version of gcc to handle all aspects of 40 the compilation process except for the Cforall->C translation. Currently, only 41 gcc 4.x is supported. 44 $ git clone https://github.com/cforall/cforall.git 42 45 43 How is cfa-cc used? 46 Read the ./INSTALL file for build instructions. 47 48 49 How to use cfa-cc? 44 50 ------------------- 45 The compiler driver "cfa" accepts all of the arguments ofgcc, and is used in51 The compiler driver "cfa" accepts all of the arguments for gcc, and is used in 46 52 the same way. For example: 47 53 48 49 54 cfa -c test.c 55 cfa test.o 50 56 51 Cforall source files must end with '.c' in order to be compiled by the compiler 52 driver. In addition, the flag "-CFA" causes cfa to invoke the preprocessor and 53 translator and send the translator output to standard output. 57 Cforall source files may end with '.c' or '.cfa' in order to be compiled by the 58 compiler driver. In addition, the flag "-CFA" causes cfa to invoke the C 59 preprocessor and Cforall translator and write the translator output to standard 60 output. 54 61 55 It is possible to invoke the translator directly. The translator is installed56 by default as /usr/local/lib/cfa-cpp. A typical invocation is:57 62 58 /usr/local/lib/cfa-cpp -cp infile outfile 63 How to use C code with cfa-cc? 64 ----------------------------------- 65 cfa-cc should be able to compile and link most ANSI C programs with associated 66 C standard libraries. 59 67 60 If outfile is omitted, output goes to standard output; if infile is also 61 omitted, input comes from standard input. Options to the translator other than 62 "-cp" will not produce valid C code and are only useful for debugging the 63 translator. 68 Like C++, Cforall supports overloading, resulting in duplicate names that are 69 disambiguated using name mangling in the translated C code. To prevent 70 mangling of C names, it is necessary to wrap C declarations in an extern "C" 71 block, as for C++. For example: 64 72 65 How can C code be used with cfa-cc? 66 ----------------------------------- 67 cfa-cc should be able to compile most ANSI C programs. It is also possible to 68 link against C libraries in most cases. Since Cforall supports overloading, 69 however, names used in Cforall code are mangled in the output C code. This 70 caused linker failures when the names refer to functions and objects in code 71 compiled with a standard C compiler. For this reason, it is necessary to 72 enclose the declarations of these functions and objects in extern "C" {} 73 blocks. For example: 74 75 extern "C" { 76 #include <stdio.h> 77 #include <stdlib.h> 78 } 73 extern "C" { 74 #include <curses.h> 75 #include <getopt.h> 76 } 79 77 80 78 The extern "C" turns off name mangling for functions and objects declared 81 within the block. As a result, it is not possible to overload their names. 79 within the block. All C standard headers are pre-wrapped, so most wrapping is 80 unnecessary. 81 82 82 83 83 What's wrong with cfa-cc? 84 84 ------------------------- 85 85 86 The authors consider this software to be in an unstable state. It is quite 87 likely that there are many reasonable programs that will fail to compile. We 88 encourage users to report their experiences to cforall@plg.uwaterloo.ca, but we 89 make no promises regarding support. 86 The authors consider cfa-cc to be in a semi-stable state. It is possible for 87 reasonable Cforall programs to fail compilation. A list of bugs and fixes is 88 available here: https://cforall.uwaterloo.ca/trac. We encourage users to 89 report their experiences to cforall@plg.uwaterloo.ca, but we can make no 90 promises regarding support. 90 91 91 We have fixed most of the problems that we are aware of. There are some 92 exceptions: 92 Also, the Cforall features web-page https://cforall.uwaterloo.ca/features lists 93 small syntactic and semantic differences with standard C. 93 94 94 - initializers are poorly implemented; in particular, file-scope initializers95 may result in the generation of invalid C code96 97 - the ISO C99 designated initialization syntax '[n] = m' or '.n = m' is not98 supported; use a colon in place of the equal sign99 100 - some legitimate programs will produce warnings from the C compiler; these are101 harmless (in particular, the creation of libcfa.a in the build process should102 cause four warnings from gcc)103 104 - abstract types introduced using the keyword 'type' are not implemented105 (although 'type' can be used to introduce type parameters)106 107 - the implicit coercion of structure types to the type of their first member is108 not implemented109 95 110 96 Who is responsible for cfa-cc? 111 97 ------------------------------ 112 cfa-cc was written by Peter Buhr, Richard Bilson, and Rodolfo Esteves. 113 Questions and comments can be sent to cforall@plg.uwaterloo.ca. 98 Cforall was designed and implemented by Andrew Beach, Richard Bilson, Michael 99 Brooks, Peter A. Buhr, Thierry Delisle Glen Ditchfield, Rodolfo G. Esteves, 100 Aaron Moss, Colby Parsons, Rob Schluntz, Fangren Yu, Mubeen Zulfiqar, and others. 114 101 115 The Cforall project maintains a web page: 116 117 https://cforall.uwaterloo.ca 102 Check the Cforall web site https://cforall.uwaterloo.ca for news and updates.
Note: See TracChangeset
for help on using the changeset viewer.