source: trunk/third/perl/hints/os2.sh @ 14545

Revision 14545, 9.3 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
Line 
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#     (see in README.os2)
10
11# Note that symbol extraction code gives wrong answers (sometimes?) on
12# gethostent and setsid.
13
14# Optimization (GNU make 3.74 cannot be loaded :-():
15emxload -m 30 sh.exe ls.exe tr.exe id.exe sed.exe # make.exe
16emxload -m 30 grep.exe egrep.exe fgrep.exe cat.exe rm.exe mv.exe cp.exe
17emxload -m 30 uniq.exe basename.exe sort.exe awk.exe echo.exe
18
19path_sep=\;
20
21if test -f $sh.exe; then sh=$sh.exe; fi
22
23startsh="#!$sh"
24cc='gcc'
25
26# Make denser object files and DLL
27case "X$optimize" in
28  X)
29        optimize="-O2 -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -s"
30        ld_dll_optimize="-s"
31        ;;
32esac
33
34# Get some standard things (indented to avoid putting in config.sh):
35 oifs="$IFS"
36 IFS=" ;"
37 set $MANPATH
38 tryman="$@"
39 set $LIBRARY_PATH
40 libemx="$@"
41 set $C_INCLUDE_PATH
42 usrinc="$@"
43 IFS="$oifs"
44 tryman="`./UU/loc . /man $tryman`"
45 tryman="`echo $tryman | tr '\\\' '/'`"
46 
47 # indented to avoid having it *two* times at start
48 libemx="`./UU/loc os2.a /emx/lib $libemx`"
49
50usrinc="`./UU/loc stdlib.h /emx/include $usrinc`"
51usrinc="`dirname $usrinc | tr '\\\' '/'`"
52libemx="`dirname $libemx | tr '\\\' '/'`"
53
54if test -d $tryman/man1; then
55  sysman="$tryman/man1"
56else
57  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`"
58fi
59
60emxpath="`dirname $libemx`"
61if test ! -d "$emxpath"; then
62  emxpath="`./UU/loc . /emx c:/emx d:/emx e:/emx f:/emx g:/emx h:/emx /emx`"
63fi
64
65if test ! -d "$libemx"; then
66  libemx="$emxpath/lib"
67fi
68if test ! -d "$libemx"; then
69  if test -d "$LIBRARY_PATH"; then
70    libemx="$LIBRARY_PATH"
71  else
72    libemx="`./UU/loc . X c:/emx/lib d:/emx/lib e:/emx/lib f:/emx/lib g:/emx/lib h:/emx/lib /emx/lib`"
73  fi
74fi
75
76if test ! -d "$usrinc"; then
77  if test -d "$emxpath/include"; then
78    usrinc="$emxpath/include"
79  else
80    if test -d "$C_INCLUDE_PATH"; then
81      usrinc="$C_INCLUDE_PATH"
82    else
83      usrinc="`./UU/loc . X c:/emx/include d:/emx/include e:/emx/include f:/emx/include g:/emx/include h:/emx/include /emx/include`"
84    fi
85  fi
86fi
87
88rsx="`./UU/loc rsx.exe undef $pth`"
89
90if test "$libemx" = "X"; then echo "Cannot find C library!" >&2; fi
91
92# Acute backslashitis:
93libpth="`echo \"$LIBRARY_PATH\" | tr ';\\\' ' /'`"
94libpth="$libpth $libemx/mt $libemx"
95
96set `emxrev -f emxlibcm`
97emxcrtrev=$5
98# indented to not put it into config.sh
99  _defemxcrtrev=-D_EMX_CRT_REV_=$emxcrtrev
100
101so='dll'
102
103# Additional definitions:
104
105firstmakefile='GNUmakefile'
106exe_ext='.exe'
107
108# We provide it
109i_dlfcn='define'
110
111aout_d_shrplib='undef'
112aout_useshrplib='false'
113aout_obj_ext='.o'
114aout_lib_ext='.a'
115aout_ar='ar'
116aout_plibext='.a'
117aout_lddlflags="-Zdll $ld_dll_optimize"
118# Cannot have 32000K stack: get SYS0170  ?!
119if [ $emxcrtrev -ge 50 ]; then
120    aout_ldflags='-Zexe -Zsmall-conv -Zstack 16000'
121else
122    aout_ldflags='-Zexe -Zstack 16000'
123fi
124
125# To get into config.sh:
126aout_ldflags="$aout_ldflags"
127
128aout_d_fork='define'
129aout_ccflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
130aout_cppflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
131aout_use_clib='c'
132aout_usedl='undef'
133aout_archobjs="os2.o dl_os2.o"
134
135# variable which have different values for aout compile
136used_aout='d_shrplib useshrplib plibext lib_ext obj_ext ar plibext d_fork lddlflags ldflags ccflags use_clib usedl archobjs cppflags'
137
138if [ "$emxaout" != "" ]; then
139    d_shrplib="$aout_d_shrplib"
140    useshrplib="$aout_useshrplib"
141    obj_ext="$aout_obj_ext"
142    lib_ext="$aout_lib_ext"
143    ar="$aout_ar"
144    plibext="$aout_plibext"
145    if [ $emxcrtrev -lt 50 ]; then
146        d_fork="$aout_d_fork"
147    fi
148    lddlflags="$aout_lddlflags"
149    ldflags="$aout_ldflags"
150    ccflags="$aout_ccflags"
151    cppflags="$aout_cppflags"
152    use_clib="$aout_use_clib"
153    usedl="$aout_usedl"
154else
155    d_shrplib='define'
156    useshrplib='true'
157    obj_ext='.obj'
158    lib_ext='.lib'
159    ar='emxomfar'
160    plibext='.lib'
161    if [ $emxcrtrev -ge 50 ]; then
162        d_fork='define'
163    else
164        d_fork='undef'
165    fi
166    lddlflags="-Zdll -Zomf -Zmt -Zcrtdll $ld_dll_optimize"
167    # Recursive regmatch may eat 2.5M of stack alone.
168    ldflags='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000'
169    if [ $emxcrtrev -ge 50 ]; then
170        ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. $_defemxcrtrev"
171    else
172        ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DEMX_BAD_SBRK $_defemxcrtrev"
173    fi
174    use_clib='c_import'
175    usedl='define'
176fi
177
178# indented to miss config.sh
179  _ar="$ar"
180
181# To get into config.sh (should start at the beginning of line)
182# or you can put it into config.over.
183plibext="$plibext"
184# plibext is not needed anymore.  Just directly set $libperl.
185libperl="libperl${plibext}"
186
187#libc="/emx/lib/st/c_import$lib_ext"
188libc="$libemx/mt/$use_clib$lib_ext"
189
190if test -r "$libemx/c_alias$lib_ext"; then
191    libnames="$libemx/c_alias$lib_ext"
192fi
193# otherwise puts -lc ???
194
195# [Maybe we should just remove c from $libswanted ?]
196
197# Test would pick up wrong rand, so we hardwire the value for random()
198libs='-lsocket -lm -lbsd'
199randbits=31
200archobjs="os2$obj_ext dl_os2$obj_ext"
201
202# Run files without extension with sh:
203EXECSHELL=sh
204
205cccdlflags='-Zdll'
206dlsrc='dl_dlopen.xs'
207ld='gcc'
208
209#cppflags='-DDOSISH -DOS2=2 -DEMBED -I.'
210
211# for speedup: (some patches to ungetc are also needed):
212# Note that without this guy tests 8 and 10 of io/tell.t fail, with it 11 fails
213
214stdstdunder=`echo "#include <stdio.h>" | cpp | egrep -c "char +\* +_ptr"`
215d_stdstdio='define'
216d_stdiobase='define'
217d_stdio_ptr_lval='define'
218d_stdio_cnt_lval='define'
219
220if test "$stdstdunder" = 0; then
221  stdio_ptr='((fp)->ptr)'
222  stdio_cnt='((fp)->rcount)'
223  stdio_base='((fp)->buffer)'
224  stdio_bufsiz='((fp)->rcount + (fp)->ptr - (fp)->buffer)'
225  ccflags="$ccflags -DMYTTYNAME"
226  myttyname='define'
227else
228  stdio_ptr='((fp)->_ptr)'
229  stdio_cnt='((fp)->_rcount)'
230  stdio_base='((fp)->_buffer)'
231  stdio_bufsiz='((fp)->_rcount + (fp)->_ptr - (fp)->_buffer)'
232fi
233
234# to put into config.sh
235myttyname="$myttyname"
236
237# To have manpages installed
238nroff='nroff.cmd'
239# above will be overwritten otherwise, indented to avoid config.sh
240  _nroff='nroff.cmd'
241
242# should be handled automatically by Configure now.
243ln='cp'
244# Will be rewritten otherwise, indented to not put in config.sh
245  _ln='cp'
246lns='cp'
247
248nm_opt='-p'
249
250####### We define these functions ourselves
251
252d_getprior='define'
253d_setprior='define'
254
255# The next two are commented. pdksh handles #!, extproc gives no path part.
256# sharpbang='extproc '
257# shsharp='false'
258
259# Commented:
260#startsh='extproc ksh\\n#! sh'
261
262# Find patch:
263gnupatch='patch'
264if (gnupatch -v || gnupatch --version)   2>&1 >/dev/null; then
265    gnupatch=gnupatch
266else
267    if (gpatch -v || gpatch --version)   2>&1 >/dev/null; then
268        gnupatch=gpatch
269    else
270        # They may have a special PATH during configuring
271        if (patch -v || patch --version) 2>&1 >/dev/null; then
272            gnupatch="`./UU/loc patch.exe undef $pth`"
273        fi
274    fi
275fi
276
277# Apply patches if needed
278case "$0$running_c_cmd" in
279  *[/\\]Configure|*[/\\]Configure.|Configure|Configure.) # Skip Configure.cmd
280    if grep "^libnames" ./Configure > /dev/null; then
281        # Not patched!
282        if test -f ./Configure.cmd ; then
283            echo "!!!" >&2
284            echo "!!! ./Configure not patched, but ./Configure.cmd exits" >&2
285            echo "!!! Do not know what to do!" >&2
286            echo "!!!" >&2
287            exit 2
288        fi
289        echo "!!!" >&2
290        echo "!!! You did not patch ./Configure!" >&2
291        echo "!!! I create Configure.cmd and patch it from ./os2/diff.configure." >&2
292        echo "!!!" >&2
293        echo "$gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch" >&2
294        ($gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch) >&2
295        echo "!!!" >&2
296        echo "!!! The report of patching is copied to 00_auto_patch." >&2
297        echo "!!! Now you need to restart Configure.cmd with all the options" >&2
298        echo "!!!" >&2
299        echo "extproc sh" > Configure.ctm
300        cat Configure.cmd >> Configure.ctm && mv -f Configure.ctm Configure.cmd
301        exit 0
302    else
303        echo "!!! Apparently we are running a patched Configure." >&2
304    fi
305    ;;
306  *) echo "!!! Apparently we are running a renamed Configure: '$0'." >&2
307esac
308
309# Copy pod:
310
311cp -uf ./README.os2 ./pod/perlos2.pod
312
313# This script UU/usethreads.cbu will get 'called-back' by Configure
314# after it has prompted the user for whether to use threads.
315cat > UU/usethreads.cbu <<'EOCBU'
316case "$usethreads" in
317$define|true|[yY]*)
318        ccflags="-Zmt $ccflags"
319        cppflags="-Zmt $cppflags"  # Do we really need to set this?
320        aout_ccflags="-DUSE_THREADS $aout_ccflags"
321        aout_cppflags="-DUSE_THREADS $aout_cppflags"
322        aout_lddlflags="-Zmt $aout_lddlflags"
323        aout_ldflags="-Zmt $aout_ldflags"
324        ;;
325esac
326EOCBU
327
328# Now install the external modules. We are in the ./hints directory.
329
330cd ./os2/OS2
331
332if ! test -d ../../ext/OS2 ; then
333   mkdir ../../ext/OS2
334fi
335
336cp -rfu * ../../ext/OS2/
337
338# Install tests:
339
340for xxx in * ; do
341        if $test -d $xxx/t; then
342                cp -uf $xxx/t/*.t ../../t/lib
343        else
344                if $test -d $xxx; then
345                        cd $xxx
346                        for yyy in * ; do
347                                if $test -d $yyy/t; then
348                                    cp -uf $yyy/t/*.t ../../t/lib
349                                fi
350                        done
351                        cd ..
352                fi
353        fi
354done
355
356case "$ldlibpthname" in
357'') ldlibpthname=none ;;
358esac
359
360# Now go back
361cd ../..
Note: See TracBrowser for help on using the repository browser.