Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / config / lwptool
1 #!/bin/sh
2
3 # This is a little helper script to build LWP static, and pthread shared and static
4 # objects from a single source file. We use libtool to do the heavy lifting for
5 # the pthreaded builds, but build the LWP objects here ourselves.
6
7 lwpcc=
8 mtcc=
9 linker=
10 ranlib=
11 mode=
12 object=
13 done=
14
15 while [ -z "$done" ] && [ $# -gt 0 ] ; do
16 case "$1" in
17 --lwpcc)
18 shift
19 lwpcc="$1"
20 shift
21 ;;
22 --mtcc)
23 shift
24 mtcc="$1"
25 shift
26 ;;
27 --linker)
28 shift
29 linker="$1"
30 shift
31 ;;
32 --mode)
33 shift
34 mode="$1"
35 shift
36 ;;
37 --ranlib)
38 shift
39 ranlib="$1"
40 shift
41 ;;
42 -o)
43 shift
44 object="$1"
45 shift
46 ;;
47 --)
48 shift;
49 done=yes
50 ;;
51 *)
52 echo "Usage: lwptool --mode compile|link -o <object> --lwpcc <lwp compiler> --mtcc <pthread compiler> -- ..." >&2;
53 exit 1;
54 ;;
55 esac
56 done
57
58 case "$mode" in
59 compile)
60 if [ -z "$object" ] || [ -z "$lwpcc" ] || \
61 [ -z "$mtcc" ] || [ -z "$mode" ] ; then
62 echo "Usage: lwptool --mode compile -o <object>" >&2;
63 echo " --lwpcc <lwp compiler>" >&2;
64 echo " --mtcc <pthread compiler> blah -- ..." >&2;
65 exit 1
66 fi
67
68 lwpobj=`echo $object | sed -e 's/.lo$/.o/'`
69 lwpobj=".lwp/$lwpobj"
70
71 mkdir .lwp 2>/dev/null
72 echo $lwpcc -o $lwpobj "$@"
73 $lwpcc -o $lwpobj "$@" || exit 1
74 echo $mtcc -o $object "$@"
75 $mtcc -o $object "$@" || exit 1
76 ;;
77 link)
78 if [ -z "$object" ] || [ -z "$linker" ] || \
79 [ -z "$ranlib" ] ; then
80 echo "Usage: l§wptool --mode linker -o <object>" >&2;
81 echo " --linker <linker and options>" >&2;
82 echo " --ranlib <ranlib>" >&2;
83 exit 1
84 fi
85
86 # This will go horribly wrong if we ever have objects with shell
87 # special characters in their names
88
89 objects=
90 while [ $# -gt 0 ] ; do
91 arg=$1;
92 realobject=`echo $arg | sed -e 's/\(.*\).lo/.lwp\/\1.o/'`
93 objects="$objects $realobject"
94 shift
95 done
96
97 rm -f $object 2>/dev/null
98 echo $linker $object $objects
99 $linker $object $objects
100 echo $ranlib $object
101 $ranlib $object
102 ;;
103 esac