This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Ticket number for bitops in perlexperiment
[perl5.git] / hints / posix-bc.sh
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, mustn'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