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/trunk/_heap2exec
ViewVC logotype

Annotation of /config/trunk/_heap2exec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6027 - (view) (download)

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

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