Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /config/releases/release-110.71/_heap2exec
ViewVC logotype

Annotation of /config/releases/release-110.71/_heap2exec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3435 - (view) (download)

1 : mblume 1747 #!@SHELL@
2 :    
3 : mblume 1923 CMD=`basename "$0"`
4 :    
5 :     usage() {
6 :     echo "usage: $CMD [--linkwith-<format>] heapfile execfile"
7 :     echo " <format> = exec | so | a"
8 :     exit 1
9 :     }
10 :    
11 :     die () {
12 :     echo "${CMD}: $1"
13 :     exit 1
14 :     }
15 :    
16 : mblume 1747 if [ x${SMLNJ_HOME} = x ] ; then
17 :     BIN_DIR="@BINDIR@"
18 :     else
19 :     BIN_DIR=${SMLNJ_HOME}/bin
20 :     fi
21 :    
22 :     ARCH_N_OPSYS=`"$BIN_DIR/.arch-n-opsys"`
23 :     if [ "$?" != "0" ]; then
24 : mblume 1923 die "unable to determine architecture/operating system"
25 : mblume 1747 fi
26 :     eval $ARCH_N_OPSYS
27 :    
28 :     RUNX=${BIN_DIR}/.run/runx.${ARCH}-${OPSYS}
29 : mblume 1923 RUN_SO=${BIN_DIR}/.run/run.${ARCH}-${OPSYS}.so
30 :     RUN_A=${BIN_DIR}/.run/run.${ARCH}-${OPSYS}.a
31 : mblume 1747 H2A=${BIN_DIR}/heap2asm
32 :    
33 : mblume 1923 FORMAT=
34 : mblume 1747 if [ $# != 2 ] ; then
35 : mblume 1923 if [ $# = 3 ] ; then
36 :     case $1 in
37 :     --linkwith-exec)
38 :     FORMAT=exec
39 :     ;;
40 :     --linkwith-so)
41 :     FORMAT=so
42 :     ;;
43 :     --linkwith-a)
44 :     FORMAT=a
45 :     ;;
46 :     *)
47 :     usage
48 :     ;;
49 :     esac
50 :     shift
51 :     else
52 :     usage
53 :     fi
54 :     else
55 :     case ${OPSYS} in
56 :     darwin)
57 :     FORMAT=exec
58 :     ;;
59 :     freebsd|linux)
60 :     FORMAT=a
61 :     ;;
62 :     *)
63 :     die "no default runtime link format known for ${OPSYS}"
64 :     ;;
65 :     esac
66 : mblume 1747 fi
67 : mblume 1923 if [ -z "$FORMAT" ] ; then
68 :     die "no runtime object format specified"
69 :     fi
70 : mblume 1747
71 :     heapfile=$1
72 :     execfile=$2
73 :    
74 : mblume 1923 CC=cc
75 :     LD=ld
76 :    
77 :     EXEC_PROG=
78 :     EXEC_FLAGS=
79 :     EXEC_LIBS=
80 :     SO_PROG=
81 :     SO_FLAGS=
82 :     SO_LIBS=
83 :     A_PROG=
84 :     A_FLAGS=
85 :     A_LIBS=
86 :    
87 :     case ${OPSYS} in
88 :     darwin)
89 :     EXEC_PROG=${LD}
90 :     EXEC_LIBS=-lc
91 :     ;;
92 :     freebsd)
93 :     SO_PROG=${CC}
94 :     SO_FLAGS=-Wl,--export-dynamic
95 :     SO_LIBS=-lm
96 :     A_PROG=${CC}
97 :     A_FLAGS=-Wl,--export-dynamic
98 :     A_LIBS=-lm
99 :     ;;
100 :     linux)
101 :     SO_PROG=${CC}
102 :     SO_FLAGS=-Wl,--export-dynamic
103 :     A_PROG=${CC}
104 :     A_FLAGS=-Wl,--export-dynamic
105 :     A_LIBS="-lm -ldl"
106 :     ;;
107 :     *)
108 :     ;;
109 :     esac
110 :    
111 :     if [ ! -f $H2A ]; then
112 :     echo "${CMD}: heap2asm is not installed"
113 : mblume 1747 exit 2
114 : mblume 1923 fi
115 :    
116 :     RESULT=0
117 :     if ${H2A} "$heapfile" "$execfile".s ; then
118 :     if [ -f "$execfile".s ] ; then
119 :     if ${CC} -c -o "$execfile".o "$execfile".s ; then
120 :     rm "$execfile".s
121 :     else
122 :     rm "$execfile".s
123 :     die "${execfile}.o creation failed"
124 :     fi
125 :     else
126 :     die "${execfile}.s creation failed"
127 :     fi
128 :     if [ "$FORMAT" = exec -a -f "${RUNX}" ] ; then
129 :     [ -z "${EXEC_PROG}" ] && die "no linker specified for runtime format $FORMAT"
130 :     ${EXEC_PROG} ${EXEC_FLAGS} -o "$execfile" ${RUNX} "$execfile".o ${EXEC_LIBS}
131 :     RESULT=$?
132 :     elif [ "$FORMAT" = so -a -f "${RUN_SO}" ] ; then
133 :     [ -z "${SO_PROG}" ] && die "no linker specified for runtime format $FORMAT"
134 :     ${SO_PROG} ${SO_FLAGS} -o "$execfile" ${RUN_SO} "$execfile".o ${SO_LIBS}
135 :     RESULT=$?
136 :     elif [ "$FORMAT" = a -a -f "${RUN_A}" ] ; then
137 :     [ -z "${A_PROG}" ] && die "no linker specified for runtime format $FORMAT"
138 :     ${A_PROG} ${A_FLAGS} -o "$execfile" ${RUN_A} "$execfile".o ${A_LIBS}
139 :     RESULT=$?
140 :     else
141 :     echo "${CMD}: linkable runtime system object ($FORMAT) not available"
142 :     rm "$execfile".o
143 :     exit 2
144 :     fi
145 :     rm "$execfile".o
146 : mblume 1747 else
147 : mblume 1923 die "heap2asm failed"
148 : mblume 1747 fi
149 :    
150 : mblume 1923 if [ $RESULT != 0 ] ; then
151 :     die "linking failed with return code $RESULT"
152 :     fi
153 :    
154 : mblume 1747 exit 0

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0