1 | :
|
---|
2 | # hints/posix-bc.sh
|
---|
3 | #
|
---|
4 | # BS2000 (Posix Subsystem) hints by Thomas Dorner <Thomas.Dorner@start.de>
|
---|
5 | #
|
---|
6 | # Thanks to the authors of the os390.sh for the very first draft.
|
---|
7 | #
|
---|
8 | # You can modify almost any parameter set here using Configure with
|
---|
9 | # the appropriate -D option.
|
---|
10 |
|
---|
11 | # remove this line if dynamic libraries are working for you:
|
---|
12 | bs2000_ignoredl='y'
|
---|
13 |
|
---|
14 | # To get ANSI C, we need to use c89
|
---|
15 | # You can override this with Configure -Dcc=gcc
|
---|
16 | # (if you ever get a gcc ported to BS2000 ;-).
|
---|
17 | case "$cc" in
|
---|
18 | '') cc='c89' ;;
|
---|
19 | esac
|
---|
20 |
|
---|
21 | # C-Flags:
|
---|
22 | # -DPOSIX_BC
|
---|
23 | # -DUSE_PURE_BISON
|
---|
24 | # -D_XOPEN_SOURCE_EXTENDED alters system headers.
|
---|
25 | # Prepend your favorites with Configure -Dccflags=your_favorites
|
---|
26 | ccflags="$ccflags -Kc_names_unlimited,enum_long,llm_case_lower,llm_keep,no_integer_overflow -DPOSIX_BC -DUSE_PURE_BISON -DYYMAXDEPTH=65000 -DYYINITDEPTH=1000 -D_XOPEN_SOURCE_EXTENDED"
|
---|
27 |
|
---|
28 | # Now, what kind of BS2000 system are we running on?
|
---|
29 | echo
|
---|
30 | if [ -n "`bs2cmd SHOW-SYSTEM-INFO | egrep 'HSI-ATT.*TYPE.*SR'`" ]; then
|
---|
31 | echo "You are running a BS2000 machine with Sunrise CPUs."
|
---|
32 | echo "Let's hope you have the matching RISC compiler as well."
|
---|
33 | ccflags="-K risc_4000 $ccflags"
|
---|
34 | bs2000_ldflags='-K risc_4000'
|
---|
35 | else
|
---|
36 | echo "Seems like a standard 390 BS2000 machine to me."
|
---|
37 | bs2000_ldflags=''
|
---|
38 | fi
|
---|
39 | echo
|
---|
40 | if [ -z "$bs2000_ignoredl" -a -e /usr/lib/libdl.a ]; then
|
---|
41 | echo "Wow, your BS2000 is State Of The Art and seems to support dynamic libraries."
|
---|
42 | echo "I just can't resist giving them a try."
|
---|
43 | bs2000_lddlflags='-Bsymbolic -Bdynamic'
|
---|
44 | # dynamic linkage of system libraries gave us runtime linker
|
---|
45 | # errors, so we use static linkage while generating our DLLs :-(
|
---|
46 | # bs2000_lddlflags='-Bstatic'
|
---|
47 | bs2000_so='none'
|
---|
48 | bs2000_usedl='define'
|
---|
49 | bs2000_dlext='so'
|
---|
50 | case $bs2000_ldflags in
|
---|
51 | *risc_4000*)
|
---|
52 | bs2000_ld="perl_genso"
|
---|
53 | echo "
|
---|
54 | Now you must buy everything they sell you, musn't you?
|
---|
55 | Didn't somebody tell you that RISC machines and dynamic library support gives
|
---|
56 | you helluva lot of configuration problems at the moment?
|
---|
57 | Sigh. Now you'll expect me to fix it for you, eh?
|
---|
58 | OK, OK, I'll give you a wrapper.
|
---|
59 | Just copy $bs2000_ld anywhere into your path before you try to install
|
---|
60 | additional modules!"
|
---|
61 |
|
---|
62 | cat > $bs2000_ld <<EOF
|
---|
63 | #! /bin/sh
|
---|
64 | #
|
---|
65 | # Perl's wrapper for genso by Thomas.Dorner@start.de
|
---|
66 |
|
---|
67 | GENSO=/usr/bin/genso
|
---|
68 | options=""
|
---|
69 | params=""
|
---|
70 | while [[ \$# -gt 0 ]]; do
|
---|
71 | case \$1 in
|
---|
72 | -K)
|
---|
73 | shift
|
---|
74 | ;;
|
---|
75 | -K*)
|
---|
76 | ;;
|
---|
77 | *.a)
|
---|
78 | lib=\${1##*/lib}
|
---|
79 | options="\$options -L\${1%/lib*.a} -l\${lib%.a}"
|
---|
80 | ;;
|
---|
81 | *.o)
|
---|
82 | params="\$params \$1"
|
---|
83 | ;;
|
---|
84 | *)
|
---|
85 | options="\$options \$1"
|
---|
86 | esac
|
---|
87 | shift
|
---|
88 | done
|
---|
89 | echo \$GENSO \$options \$params
|
---|
90 | exec \$GENSO \$options \$params
|
---|
91 | EOF
|
---|
92 |
|
---|
93 | chmod +x $bs2000_ld
|
---|
94 | if [[ -w /usr/local/bin && ! -f /usr/local/bin/$bs2000_ld ]]; then
|
---|
95 | cp -p $bs2000_ld /usr/local/bin/$bs2000_ld
|
---|
96 | echo "(Actually I just did that as well, have a look into /usr/local/bin.)"
|
---|
97 | fi
|
---|
98 | ;;
|
---|
99 | *)
|
---|
100 | bs2000_ld='genso'
|
---|
101 | esac
|
---|
102 | else
|
---|
103 | if [ -e /usr/lib/libdl.a ]; then
|
---|
104 | echo "Your BS2000 supports dynamic libraries, but you (or we ;-) decided to leave them alone."
|
---|
105 | else
|
---|
106 | echo "Your BS2000 does'n support dynamic libraries so we're just staying static."
|
---|
107 | fi
|
---|
108 | bs2000_ld='c89'
|
---|
109 | bs2000_lddlflags=''
|
---|
110 | bs2000_so='none'
|
---|
111 | bs2000_usedl='n'
|
---|
112 | bs2000_dlext='none'
|
---|
113 | fi
|
---|
114 |
|
---|
115 | case "$ld" in
|
---|
116 | '') ld=$bs2000_ld ;;
|
---|
117 | esac
|
---|
118 |
|
---|
119 | # ccdlflags have yet to be determined.
|
---|
120 | #case "$ccdlflags" in
|
---|
121 | #'') ccdlflags='-c' ;;
|
---|
122 | #esac
|
---|
123 |
|
---|
124 | # cccdlflags have yet to be determined.
|
---|
125 | #case "$cccdlflags" in
|
---|
126 | #'') cccdlflags='' ;;
|
---|
127 | #esac
|
---|
128 |
|
---|
129 | case "$ldflags" in
|
---|
130 | '') ldflags=$bs2000_ldflags ;;
|
---|
131 | esac
|
---|
132 |
|
---|
133 | case "$lddlflags" in
|
---|
134 | '') lddlflags=$bs2000_lddlflags ;;
|
---|
135 | esac
|
---|
136 |
|
---|
137 | # Turning on optimization breaks perl (CORE-DUMP):
|
---|
138 | # You can override this with Configure -Doptimize='-O' or somesuch.
|
---|
139 | case "$optimize" in
|
---|
140 | '') optimize='none' ;;
|
---|
141 | esac
|
---|
142 |
|
---|
143 | # BS2000 doesn't use dynamic memory on its own (yet):
|
---|
144 | case "$so" in
|
---|
145 | '') so=$bs2000_so ;;
|
---|
146 | esac
|
---|
147 |
|
---|
148 | case "$usemymalloc" in
|
---|
149 | '') usemymalloc='n' ;;
|
---|
150 | esac
|
---|
151 |
|
---|
152 | # On BS2000/Posix, libc.a does not really hold anything at all,
|
---|
153 | # so running nm on it is pretty useless.
|
---|
154 | # You can override this with Configure -Dusenm.
|
---|
155 | case "$usenm" in
|
---|
156 | '') usenm='false' ;;
|
---|
157 | esac
|
---|
158 |
|
---|
159 | # Configure -Dusedl -Ddlext=.so -Ddlsrc=dl_dllload.xs.
|
---|
160 | case "$usedl" in
|
---|
161 | '') usedl=$bs2000_usedl ;;
|
---|
162 | esac
|
---|
163 | case "$dlext" in
|
---|
164 | '') dlext=$bs2000_dlext ;;
|
---|
165 | esac
|
---|
166 | #case "$dlsrc" in
|
---|
167 | #'') dlsrc='none' ;;
|
---|
168 | #esac
|
---|
169 | #case "$ldlibpthname" in
|
---|
170 | #'') ldlibpthname=LIBPATH ;;
|
---|
171 | #esac
|
---|