3 # This file reflects the tireless work of
4 # Ilya Zakharevich <ilya@math.ohio-state.edu>
6 # Trimmed and comments added by
7 # Andy Dougherty <doughera@lafcol.lafayette.edu>
8 # Exactly what is required beyond a standard OS/2 installation?
11 # Note that symbol extraction code gives wrong answers (sometimes?) on
12 # gethostent and setsid.
14 # Optimization (GNU make 3.74 cannot be loaded :-():
15 emxload -m 30 sh.exe ls.exe tr.exe id.exe sed.exe # make.exe
16 emxload -m 30 grep.exe egrep.exe fgrep.exe cat.exe rm.exe mv.exe cp.exe
17 emxload -m 30 uniq.exe basename.exe sort.exe awk.exe echo.exe
21 if test -f $sh.exe; then sh=$sh.exe; fi
26 # Make denser object files and DLL
29 optimize="-O2 -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -s"
34 # Get some standard things (indented to avoid putting in config.sh):
44 tryman="`./UU/loc . /man $tryman`"
45 tryman="`echo $tryman | tr '\\\' '/'`"
47 # indented to avoid having it *two* times at start
48 libemx="`./UU/loc os2.a /emx/lib $libemx`"
50 usrinc="`./UU/loc stdlib.h /emx/include $usrinc`"
51 usrinc="`dirname $usrinc | tr '\\\' '/'`"
52 libemx="`dirname $libemx | tr '\\\' '/'`"
54 if test -d $tryman/man1; then
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`"
60 emxpath="`dirname $libemx`"
61 if test ! -d "$emxpath"; then
62 emxpath="`./UU/loc . /emx c:/emx d:/emx e:/emx f:/emx g:/emx h:/emx /emx`"
65 if test ! -d "$libemx"; then
68 if test ! -d "$libemx"; then
69 if test -d "$LIBRARY_PATH"; then
70 libemx="$LIBRARY_PATH"
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`"
76 if test ! -d "$usrinc"; then
77 if test -d "$emxpath/include"; then
78 usrinc="$emxpath/include"
80 if test -d "$C_INCLUDE_PATH"; then
81 usrinc="$C_INCLUDE_PATH"
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`"
88 rsx="`./UU/loc rsx.exe undef $pth`"
90 if test "$libemx" = "X"; then echo "Cannot find C library!" >&2; fi
92 # Acute backslashitis:
93 libpth="`echo \"$LIBRARY_PATH\" | tr ';\\\' ' /'`"
94 libpth="$libpth $libemx/mt $libemx"
96 set `cmd /c emxrev -f emxlibcm`
98 # indented to not put it into config.sh
99 _defemxcrtrev=-D_EMX_CRT_REV_=$emxcrtrev
103 # Additional definitions:
105 firstmakefile='GNUmakefile'
111 # -Zomf build has a problem with _exit() *flushing*, so the test
115 aout_d_shrplib='undef'
116 aout_useshrplib='false'
121 aout_lddlflags="-Zdll $ld_dll_optimize"
122 # Cannot have 32000K stack: get SYS0170 ?!
123 if [ $emxcrtrev -ge 50 ]; then
124 aout_ldflags='-Zexe -Zsmall-conv -Zstack 16000'
126 aout_ldflags='-Zexe -Zstack 16000'
129 # To get into config.sh:
130 aout_ldflags="$aout_ldflags"
133 aout_ccflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
134 aout_cppflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
137 aout_archobjs="os2.o dl_os2.o"
138 # Not listed in dynamic_ext, but needed for AOUT static_ext nevertheless
139 aout_extra_static_ext="OS2::DLL"
141 # variable which have different values for aout compile
142 used_aout='d_shrplib useshrplib plibext lib_ext obj_ext ar plibext d_fork lddlflags ldflags ccflags use_clib usedl archobjs cppflags'
144 if [ "$emxaout" != "" ]; then
145 d_shrplib="$aout_d_shrplib"
146 useshrplib="$aout_useshrplib"
147 obj_ext="$aout_obj_ext"
148 lib_ext="$aout_lib_ext"
150 plibext="$aout_plibext"
151 if [ $emxcrtrev -lt 50 ]; then
152 d_fork="$aout_d_fork"
154 lddlflags="$aout_lddlflags"
155 ldflags="$aout_ldflags"
156 ccflags="$aout_ccflags"
157 cppflags="$aout_cppflags"
158 use_clib="$aout_use_clib"
167 if [ $emxcrtrev -ge 50 ]; then
172 lddlflags="-Zdll -Zomf -Zmt -Zcrtdll -Zlinker /e:2 $ld_dll_optimize"
173 # Recursive regmatch may eat 2.5M of stack alone.
174 ldflags='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000 -Zlinker /e:2'
175 if [ $emxcrtrev -ge 50 ]; then
176 ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. $_defemxcrtrev"
178 ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DEMX_BAD_SBRK $_defemxcrtrev"
184 # indented to miss config.sh
187 # To get into config.sh (should start at the beginning of line)
188 # or you can put it into config.over.
190 # plibext is not needed anymore. Just directly set $libperl.
191 libperl="libperl${plibext}"
193 #libc="/emx/lib/st/c_import$lib_ext"
194 libc="$libemx/mt/$use_clib$lib_ext"
196 if test -r "$libemx/c_alias$lib_ext"; then
197 libnames="$libemx/c_alias$lib_ext"
199 # otherwise puts -lc ???
201 # [Maybe we should just remove c from $libswanted ?]
203 # Test would pick up wrong rand, so we hardwire the value for random()
204 libs='-lsocket -lm -lbsd'
206 archobjs="os2$obj_ext dl_os2$obj_ext"
208 # Run files without extension with sh:
215 #cppflags='-DDOSISH -DOS2=2 -DEMBED -I.'
217 # for speedup: (some patches to ungetc are also needed):
218 # Note that without this guy tests 8 and 10 of io/tell.t fail, with it 11 fails
220 stdstdunder=`echo "#include <stdio.h>" | cpp | egrep -c "char +\* +_ptr"`
223 d_stdio_ptr_lval='define'
224 d_stdio_cnt_lval='define'
226 if test "$stdstdunder" = 0; then
227 stdio_ptr='((fp)->ptr)'
228 stdio_cnt='((fp)->rcount)'
229 stdio_base='((fp)->buffer)'
230 stdio_bufsiz='((fp)->rcount + (fp)->ptr - (fp)->buffer)'
231 ccflags="$ccflags -DMYTTYNAME"
234 stdio_ptr='((fp)->_ptr)'
235 stdio_cnt='((fp)->_rcount)'
236 stdio_base='((fp)->_buffer)'
237 stdio_bufsiz='((fp)->_rcount + (fp)->_ptr - (fp)->_buffer)'
240 # to put into config.sh
241 myttyname="$myttyname"
243 # To have manpages installed
245 # above will be overwritten otherwise, indented to avoid config.sh
248 # should be handled automatically by Configure now.
250 # Will be rewritten otherwise, indented to not put in config.sh
256 ####### We define these functions ourselves
263 # The next two are commented. pdksh handles #!, extproc gives no path part.
264 # sharpbang='extproc '
268 #startsh='extproc ksh\\n#! sh'
272 if (gnupatch -v || gnupatch --version) 2>&1 >/dev/null; then
275 if (gpatch -v || gpatch --version) 2>&1 >/dev/null; then
278 # They may have a special PATH during configuring
279 if (patch -v || patch --version) 2>&1 >/dev/null; then
280 gnupatch="`./UU/loc patch.exe undef $pth`"
285 # Apply patches if needed
286 case "$0$running_c_cmd" in
287 *[/\\]Configure|*[/\\]Configure.|Configure|Configure.) # Skip Configure.cmd
288 if test "Xyes" = "X$configure_cmd_loop"; then
291 !!! PANIC: Loop of self-invocations detected, aborting!
296 configure_cmd_loop=yes
297 export configure_cmd_loop
299 configure_needs_patch=''
300 if test -s ./os2/diff.configure; then
301 if ! grep "^#OS2-PATCH-APPLIED" ./Configure > /dev/null; then
302 configure_needs_patch=yes
305 if test -n "$configure_needs_patch"; then
307 # Restore the initial command line arguments
308 if test -f ./Configure.cmd ; then
311 !!! I see that what is running is ./Configure.
312 !!! ./Configure is not patched, but ./Configure.cmd exists.
314 !!! You are supposed to run Configure.cmd, not Configure
315 !!! after an automagic patching.
317 !!! If you insist on running Configure, you may
318 !!! patch it manually from ./os2/diff.configure.
320 !!! However, I went through incredible hoolahoops, and I expect I can
321 !!! auto-restart Configure.cmd myself. I will start it with arguments:
323 !!! Configure.cmd $args_exp
326 rp='Do you want to auto-restart Configure.cmd?'
330 [yY]) echo >&4 "Okay, continuing." ;;
331 *) echo >&4 "Okay, bye."
335 eval "set X $args_exp";
338 exec Configure.cmd "$@" 1>&2
343 !!! You did not patch ./Configure!
344 !!! I can create Configure.cmd and patch it from ./os2/diff.configure with the command
346 !!! $gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch
348 rp='Do you want to auto-patch Configure to Configure.cmd?'
352 [yY]) echo >&4 "Okay, continuing." ;;
353 *) echo >&4 "Okay, bye."
357 ($gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch) >&2
360 !!! The report of patching is copied to 00_auto_patch.
361 !!! Now we need to restart Configure.cmd with all the options.
364 echo "extproc sh" > Configure.ctm
365 ( cat Configure.cmd >> Configure.ctm && mv -f Configure.ctm Configure.cmd ) || (echo "!!! Failure to add extproc-line to Configure.cmd." >&2 ; exit 21)
367 !!! I went through incredible hoolahoops, and I expect I can
368 !!! auto-restart Configure.cmd myself. I will start it with arguments:
370 !!! Configure.cmd $args_exp
373 rp='Do you want to auto-restart Configure.cmd?'
377 [yY]) echo >&4 "Okay, continuing." ;;
378 *) echo >&4 "Okay, bye."
382 eval "set X $args_exp";
384 exec Configure.cmd "$@" 1>&2
387 if test -s ./os2/diff.configure; then
388 echo "!!! Apparently we are running a patched Configure." >&2
390 echo "!!! Apparently there is no need to patch Configure." >&2
394 *) echo "!!! Apparently we are running a renamed Configure: '$0'." >&2
397 # This script UU/usethreads.cbu will get 'called-back' by Configure
398 # after it has prompted the user for whether to use threads.
399 cat > UU/usethreads.cbu <<'EOCBU'
400 case "$usethreads" in
402 ccflags="-Zmt $ccflags"
403 cppflags="-Zmt $cppflags" # Do we really need to set this?
404 aout_ccflags="-DUSE_THREADS $aout_ccflags"
405 aout_cppflags="-DUSE_THREADS $aout_cppflags"
406 aout_lddlflags="-Zmt $aout_lddlflags"
407 aout_ldflags="-Zmt $aout_ldflags"
412 if test -z "$cryptlib"; then
413 cryptlib=`UU/loc crypt$lib_ext "" $libpth`
414 if $test -n "$cryptlib"; then
417 cryptlib=`UU/loc ufc$lib_ext "" $libpth`
418 if $test -n "$cryptlib"; then
423 if test -n "$cryptlib"; then
424 libs="$libs $cryptlib"
428 # Now install the external modules. We are in the ./hints directory.
432 if ! test -d ../../ext/OS2 ; then
436 cp -rfu * ../../ext/OS2/
441 if $test -d $xxx/t; then
442 cp -uf $xxx/t/*.t ../../t/lib
444 if $test -d $xxx; then
447 if $test -d $yyy/t; then
448 cp -uf $yyy/t/*.t ../../t/lib
456 case "$ldlibpthname" in
457 '') ldlibpthname=none ;;