source: to-imperative/trunk/rfp.sh @ 1422

Last change on this file since 1422 was 1422, checked in by orlov, 17 years ago
  • Improved makefiles.
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 1.9 KB
Line 
1#!/bin/bash
2#
3# $Id: rfp.sh 1422 2004-04-27 12:03:13Z orlov $
4#
5
6[ -z "$refal_dir" ] && \
7  refal_dir=$(dirname $(expr "`/bin/ls -l $0`" : ".* \(.*\)"))
8
9[ -z "$cxx" ] && cxx=g++
10cflags="$cflags -c -I$refal_dir/runtime -I$refal_dir/libp++"
11cflags="$cflags -I$refal_dir/library/include"
12ldflags="$ldflags -L$refal_dir/library -L$refal_dir/runtime"
13ldflags="$ldflags -L$refal_dir/libp++ -L$refal_dir/libstdc++-stub"
14ldlibs="$ldlibs -lrf -lrfrt -lp++ -lsupc++ -lgmp"
15
16[ -z "$rfpc" ] && rfpc="$refal_dir/bootstrap/compiler/rfpc"
17
18function execho ()
19{
20        echo " + $1"
21        $1
22        status=$?
23        if [ $status != 0 ]; then
24                echo "Command exited with status $status.  Aborting..."
25                exit
26        fi
27}
28
29while [ -n "$1" ]; do
30        case $1 in
31                -R)
32                        shift
33                        if [ -z "$1" ]; then
34                                echo "-R should be followed by rfpc option."
35                        fi
36                        rflags="$rflags $1"
37                        ;;
38                -C)
39                        shift
40                        if [ -z "$1" ]; then
41                                echo "-C should be followed by C++ compiler option."
42                        fi
43                        cflags="$cflags $1"
44                        ;;
45                -o)
46                        shift
47                        if [ -z "$1" ]; then
48                                echo "-o should be followed by the name for resulting file."
49                        else
50                                res_name=" $1"
51                        fi
52                        ;;
53                *.rf)
54                        execho "$rfpc $rflags $1"
55                        files="$files ${1%.rf}.cc"
56                        ;;
57                *.rfi)
58                        # update read time of corresponding .cc file
59                        [ -r ${1%.rfi}.cc ] && head -1 ${1%.rfi}.cc > /dev/null
60                        execho "$rfpc $rflags $1"
61                        # if .cc file was modified since last read then
62                        # we probably should compile it
63                        [ -N ${1%.rfi}.cc ] && files="$files ${1%.rfi}.cc"
64                        ;;
65                *)
66                        files="$files $1"
67                        ;;
68        esac
69        shift
70done
71
72for f in `echo $files`; do
73        case $f in
74                *.cc)
75                        execho "$cxx -o ${f%.cc}.o $cflags $f"
76                        obj_files="$obj_files ${f%.cc}.o"
77                        ;;
78                *)
79                        obj_files="$obj_files $f"
80                        ;;
81        esac
82done
83
84for f in `echo $obj_files`; do
85        if !(expr "$res_files" : ".*$f.*" > /dev/null); then
86                res_files="$res_files $f"
87        fi
88done
89
90if [ -z "$res_files" ]; then
91        echo "No files to link."
92        exit
93fi
94
95execho "$cxx -o${res_name:-${res_files%%.o*}} $ldflags $res_files $ldlibs"
96
97echo "No errors."
Note: See TracBrowser for help on using the repository browser.