Dynamic Loading on MkLinux (osname=linux,archname=ppc-linux)
[p5sagit/p5-mst-13.2.git] / hints / os2.sh
1 #! /bin/sh
2 # hints/os2.sh
3 # This file reflects the tireless work of
4 # Ilya Zakharevich <ilya@math.ohio-state.edu>
5 #
6 # Trimmed and comments added by 
7 #     Andy Dougherty  <doughera@lafcol.lafayette.edu>
8 #     Exactly what is required beyond a standard OS/2 installation?
9 #     There are notes about "patched pdksh" I do not understand.
10
11 # Note that symbol extraction code gives wrong answers (sometimes?) on
12 # gethostent and setsid.
13
14 # Note that during the .obj compile you need to move the perl.dll file
15 # to LIBPATH :-(
16
17 # Optimization (GNU make 3.74 cannot be loaded :-():
18 emxload -m 30 sh.exe ls.exe tr.exe id.exe sed.exe # make.exe 
19 emxload -m 30 grep.exe egrep.exe fgrep.exe cat.exe rm.exe mv.exe cp.exe
20 emxload -m 30 uniq.exe basename.exe sort.exe awk.exe echo.exe
21
22 path_sep=\;
23
24 if test -f $sh.exe; then sh=$sh.exe; fi
25
26 startsh="#!$sh"
27
28 sysman=`../UU/loc . /man/man1 c:/man/man1 c:/usr/man/man1 d:/man/man1 d:/usr/man/man1 e:/man/man1 e:/usr/man/man1 f:/man/man1 f:/usr/man/man1 g:/man/man1 g:/usr/man/man1 /usr/man/man1`
29 cc='gcc'
30 usrinc='/emx/include'
31 emxpath="`../UU/loc . /emx c:/emx d:/emx e:/emx f:/emx g:/emx h:/emx /emx`"
32
33 libemx="$emxpath/lib"
34 if test ! -d "$libemx"; then 
35   if test -d "$LIBRARY_PATH"; then
36     usrinc="$LIBRARY_PATH"
37   else
38     libemx="`../UU/loc . X c:/emx/lib d:/emx/lib e:/emx/lib f:/emx/lib g:/emx/lib h:/emx/lib /emx/lib`"
39   fi
40 fi
41
42 if test -d "$emxpath/include"; then 
43   usrinc="$emxpath/include"
44 else
45   if test -d "$C_INCLUDE_PATH"; then
46     usrinc="$C_INCLUDE_PATH"
47   else
48     usrinc="`../UU/loc . X c:/emx/include d:/emx/include e:/emx/include f:/emx/include g:/emx/include h:/emx/include /emx/include`"
49   fi
50 fi
51
52 rsx="`../UU/loc rsx.exe undef $pth`"
53
54 if test "$libemx" = "X"; then echo "Cannot find C library!" >&2; fi
55
56 # Acute backslashitis:
57 libpth="`echo \"$LIBRARY_PATH\" | tr ';\\\' ' /'`"
58 libpth="$libpth $libemx/mt $libemx"
59
60 set `emxrev -f emxlibcm`
61 emxcrtrev=$5
62
63 so='dll'
64
65 # Additional definitions:
66
67 firstmakefile='GNUmakefile'
68 exe_ext='.exe'
69
70 # We provide it
71 i_dlfcn='define'
72
73 aout_d_shrplib='undef'
74 aout_useshrplib='false'
75 aout_obj_ext='.o'
76 aout_lib_ext='.a'
77 aout_ar='ar'
78 aout_plibext='.a'
79 aout_lddlflags='-Zdll'
80 if [ $emxcrtrev -ge 50 ]; then 
81     aout_ldflags='-Zexe -Zsmall-conv'
82 else
83     aout_ldflags='-Zexe'
84 fi
85
86 # To get into config.sh:
87 aout_ldflags="$aout_ldflags"
88
89 aout_d_fork='define'
90 aout_ccflags='-DPERL_CORE -DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. -DPACK_MALLOC -DTWO_POT_OPTIMIZE -DPERL_EMERGENCY_SBRK'
91 aout_cppflags='-DPERL_CORE -DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. -DPACK_MALLOC -DTWO_POT_OPTIMIZE -DPERL_EMERGENCY_SBRK'
92 aout_use_clib='c'
93 aout_usedl='undef'
94 aout_archobjs="os2.o dl_os2.o"
95
96 # variable which have different values for aout compile
97 used_aout='d_shrplib useshrplib plibext lib_ext obj_ext ar plibext d_fork lddlflags ldflags ccflags use_clib usedl archobjs cppflags'
98
99 if [ "$emxaout" != "" ]; then
100     d_shrplib="$aout_d_shrplib"
101     useshrplib="$aout_useshrplib"
102     obj_ext="$aout_obj_ext"
103     lib_ext="$aout_lib_ext"
104     ar="$aout_ar"
105     plibext="$aout_plibext"
106     if [ $emxcrtrev -lt 50 ]; then 
107         d_fork="$aout_d_fork"
108     fi
109     lddlflags="$aout_lddlflags"
110     ldflags="$aout_ldflags"
111     ccflags="$aout_ccflags"
112     cppflags="$aout_cppflags"
113     use_clib="$aout_use_clib"
114     usedl="$aout_usedl"
115 else
116     d_shrplib='define'
117     useshrplib='true'
118     obj_ext='.obj'
119     lib_ext='.lib'
120     ar='emxomfar'
121     plibext='.lib'
122     if [ $emxcrtrev -ge 50 ]; then 
123         d_fork='define'
124     else
125         d_fork='undef'
126     fi
127     lddlflags='-Zdll -Zomf -Zmt -Zcrtdll'
128     # Recursive regmatch may eat 2.5M of stack alone.
129     ldflags='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000'
130     if [ $emxcrtrev -ge 50 ]; then 
131         ccflags='-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DPACK_MALLOC -DDEBUGGING_MSTATS -DTWO_POT_OPTIMIZE -DPERL_EMERGENCY_SBRK'
132     else
133         ccflags='-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DPACK_MALLOC -DDEBUGGING_MSTATS -DEMX_BAD_SBRK'
134     fi
135     use_clib='c_import'
136     usedl='define'
137 fi
138
139 # To get into config.sh (should start at the beginning of line)
140 # or you can put it into config.over.
141 plibext="$plibext"
142 # plibext is not needed anymore.  Just directly set $libperl.
143 libperl="libperl${plibext}"
144
145 #libc="/emx/lib/st/c_import$lib_ext"
146 libc="$libemx/mt/$use_clib$lib_ext"
147
148 if test -r "$libemx/c_alias$lib_ext"; then 
149     libnames="$libemx/c_alias$lib_ext"
150 fi
151 # otherwise puts -lc ???
152
153 # [Maybe we should just remove c from $libswanted ?]
154
155 # Test would pick up wrong rand, so we hardwire the value for random()
156 libs='-lsocket -lm -lbsd'
157 randbits=31
158 archobjs="os2$obj_ext dl_os2$obj_ext"
159
160 # Run files without extension with sh:
161 EXECSHELL=sh
162
163 cccdlflags='-Zdll'
164 dlsrc='dl_dlopen.xs'
165 ld='gcc'
166
167 #cppflags='-DDOSISH -DOS2=2 -DEMBED -I.'
168
169 # for speedup: (some patches to ungetc are also needed):
170 # Note that without this guy tests 8 and 10 of io/tell.t fail, with it 11 fails
171
172 stdstdunder=`echo "#include <stdio.h>" | cpp | egrep -c "char +\* +_ptr"`
173 d_stdstdio='define'
174 d_stdiobase='define'
175 d_stdio_ptr_lval='define'
176 d_stdio_cnt_lval='define'
177
178 if test "$stdstdunder" = 0; then
179   stdio_ptr='((fp)->ptr)'
180   stdio_cnt='((fp)->rcount)'
181   stdio_base='((fp)->buffer)'
182   stdio_bufsiz='((fp)->rcount + (fp)->ptr - (fp)->buffer)'
183   ccflags="$ccflags -DMYTTYNAME"
184   myttyname='define'
185 else
186   stdio_ptr='((fp)->_ptr)'
187   stdio_cnt='((fp)->_rcount)'
188   stdio_base='((fp)->_buffer)'
189   stdio_bufsiz='((fp)->_rcount + (fp)->_ptr - (fp)->_buffer)'
190 fi
191
192 # to put into config.sh
193 myttyname="$myttyname"
194
195 # To have manpages installed
196 nroff='nroff.cmd'
197 # above will be overwritten otherwise, indented to avoid config.sh
198   _nroff='nroff.cmd'
199
200 # should be handled automatically by Configure now.
201 ln='cp'
202 # Will be rewritten otherwise, indented to not put in config.sh
203   _ln='cp'
204 lns='cp'
205
206 nm_opt='-p'
207
208 ####### We define these functions ourselves
209
210 d_getprior='define'
211 d_setprior='define'
212
213 # Make denser object files and DLL
214 case "X$optimize" in
215   X)
216         optimize="-O2 -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -s"
217         ;;
218 esac
219
220 # The next two are commented. pdksh handles #!, extproc gives no path part.
221 # sharpbang='extproc '
222 # shsharp='false'
223
224 # Commented:
225 #startsh='extproc ksh\\n#! sh'
226
227 # Copy pod:
228
229 cp ../README.os2 ../pod/perlos2.pod
230
231 # Now install the external modules. We are in the ./hints directory.
232
233 cd ../os2/OS2
234
235 if ! test -d ../../ext/OS2 ; then
236    mkdir ../../ext/OS2
237 fi
238
239 cp -rfu * ../../ext/OS2/
240
241 # Install tests:
242
243 for xxx in * ; do
244         if $test -d $xxx/t; then
245                 cp -uf $xxx/t/*.t ../../t/lib
246         else
247                 if $test -d $xxx; then
248                         cd $xxx
249                         for yyy in * ; do
250                                 if $test -d $yyy/t; then
251                                     cp -uf $yyy/t/*.t ../../t/lib
252                                 fi
253                         done
254                         cd ..
255                 fi
256         fi
257 done
258
259
260 # Now go back
261 cd ../../hints