3 ###############################################################################
\r
5 # qcc - Quantum Circuit Compiler for Unix #
\r
6 # J. Yamazaki, M. Suzuki and H. Watanabe #
\r
7 # Copyright (C) 2003 QCAD project, all rights reserved. #
\r
9 ###############################################################################
\r
12 ###############################################################################
\r
14 ###############################################################################
\r
21 er_str0="Try 'qcc --help' for more information."
\r
22 er_str1="No output file."
\r
23 er_str2=" is unexpected option."
\r
24 er_str3="'-o' option can be used only once."
\r
25 er_str4="Too many input files."
\r
26 er_str5="No input file."
\r
27 er_str6="File not found."
\r
28 er_str7="'-C' option can be used only once."
\r
30 version_str1="qcc version 0.2"
\r
31 version_str2="Copyright (C) 2003 QCAD project."
\r
39 inst_dir=../calcunits
\r
41 ###############################################################################
\r
44 echo "Usage: qcc [options] file"
\r
46 echo " --help, -h ... Display this information"
\r
47 echo " -c ... Compile into c++, but do not link"
\r
48 echo " -C
\e[36mfile
\e[00m ... Create intermediate c++ file as
\e[36mfile
\e[00m"
\r
49 echo " (is effective only when '-c' is not selected)"
\r
50 echo " -o
\e[36mfile
\e[00m ... Place the output into
\e[36mfile
\e[00m"
\r
51 echo " (is effective for both c++ file and executables)"
\r
52 echo " -v ... Display the programs invoked by the compiler"
\r
53 echo " -V ... Display qcc version number"
\r
55 echo " qcc -c sample.mcd -o sample.cpp OK"
\r
56 echo " qcc sample.mcd -o a.out OK"
\r
57 echo " qcc sample.mcd -C sample.cpp -o a.out OK"
\r
58 echo " qcc -c sample.mcd -C sample.cpp -o a.out
\e[31;01mERROR!
\e[00m"
\r
59 echo "
\e[33mIn the last one, '-C' conflicts with '-o',"
\r
60 echo " then create a.out as c++ file.
\e[00m"
\r
63 ###############################################################################
\r
66 if [ $opt_create -eq 0 ]; then
\r
80 ###############################################################################
\r
83 if [ $opt_output -eq 0 ]; then
\r
97 ###############################################################################
\r
98 ###############################################################################
\r
99 ###############################################################################
\r
100 ###############################################################################
\r
101 # Analyze arguments...
\r
147 if [ $opt_input -eq 0 ]; then
\r
151 echo "$er_str4 '$1'"
\r
162 ###############################################################################
\r
163 # Check arguments...
\r
165 if [ $opt_input -eq 0 ]; then
\r
170 if !([ -r $ifile ]); then
\r
175 ###############################################################################
\r
179 gcc_args="-I../qclib -I$inst_dir"
\r
181 #if [ $opt_verbose -eq 1 ]; then
\r
185 qcpp_args="$qcpp_args $ifile"
\r
187 if [ $opt_stop -eq 1 ]; then
\r
188 if [ $opt_output -eq 1 ]; then
\r
189 qcpp_args="$qcpp_args -o $ofile"
\r
192 if [ $opt_create -eq 0 ]; then
\r
193 ocppfile="qcctmp.cpp"
\r
195 qcpp_args="$qcpp_args -o $ocppfile"
\r
197 gcc_args="$ocppfile $gcc_args ../qclib/qclib.a -lm"
\r
198 if [ $opt_output -eq 1 ]; then
\r
199 gcc_args="$gcc_args -o $ofile"
\r
203 ###############################################################################
\r
205 #echo "qcpp_args = $qcpp_args"
\r
206 #echo "gcc_args = $gcc_args"
\r
207 #echo "opt_stop = $opt_stop"
\r
208 #echo "opt_create = $opt_create"
\r
209 #echo "opt_verbose = $opt_verbose"
\r
210 #echo "opt_input = $opt_input"
\r
211 #echo "opt_output = $opt_output"
\r
212 #echo "ocppfile = $ocppfile"
\r
213 #echo "ofile = $ofile"
\r
214 #echo "ifile = $ifile"
\r
216 ###############################################################################
\r
219 if [ $opt_verbose -eq 1 ]; then
\r
220 echo "qcpp $qcpp_args"
\r
222 if !(qcpp $qcpp_args); then
\r
226 if [ $opt_stop -eq 1 ]; then
\r
230 ###############################################################################
\r
232 if [ $opt_verbose -eq 1 ]; then
\r
238 if [ $opt_create -eq 0 ] && [ -e $ocppfile ]; then
\r