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@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 # The default one uses exponential notation between 0.0001 and 0.1
112 d_Gconvert='gcvt_os2((x),(n),(b))'
114 cat > UU/uselongdouble.cbu <<'EOCBU'
115 # This script UU/uselongdouble.cbu will get 'called-back' by Configure
116 # after it has prompted the user for whether to use long doubles.
117 # If we will use them, let Configure choose us a Gconvert.
118 case "$uselongdouble:$d_longdbl:$d_sqrtl:$d_modfl" in
119 "$define:$define:$define:$define") d_Gconvert='' ;;
123 # -Zomf build has a problem with _exit() *flushing*, so the test
127 aout_d_shrplib='undef'
128 aout_useshrplib='false'
133 aout_lddlflags="-Zdll $ld_dll_optimize"
134 # Cannot have 32000K stack: get SYS0170 ?!
135 if [ $emxcrtrev -ge 50 ]; then
136 aout_ldflags='-Zexe -Zsmall-conv -Zstack 16000'
138 aout_ldflags='-Zexe -Zstack 16000'
141 # To get into config.sh:
142 aout_ldflags="$aout_ldflags"
145 aout_ccflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
146 aout_cppflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
149 aout_archobjs="os2.o dl_os2.o"
150 # Not listed in dynamic_ext, but needed for AOUT static_ext nevertheless
151 aout_extra_static_ext="OS2::DLL"
153 # variable which have different values for aout compile
154 used_aout='d_shrplib useshrplib plibext lib_ext obj_ext ar plibext d_fork lddlflags ldflags ccflags use_clib usedl archobjs cppflags'
156 if [ "$emxaout" != "" ]; then
157 d_shrplib="$aout_d_shrplib"
158 useshrplib="$aout_useshrplib"
159 obj_ext="$aout_obj_ext"
160 lib_ext="$aout_lib_ext"
162 plibext="$aout_plibext"
163 if [ $emxcrtrev -lt 50 ]; then
164 d_fork="$aout_d_fork"
166 lddlflags="$aout_lddlflags"
167 ldflags="$aout_ldflags"
168 ccflags="$aout_ccflags"
169 cppflags="$aout_cppflags"
170 use_clib="$aout_use_clib"
179 if [ $emxcrtrev -ge 50 ]; then
184 lddlflags="-Zdll -Zomf -Zmt -Zcrtdll -Zlinker /e:2"
185 # Recursive regmatch may eat 2.5M of stack alone.
186 ldflags='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000 -Zlinker /e:2'
187 if [ $emxcrtrev -ge 50 ]; then
188 ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. $_defemxcrtrev"
190 ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DEMX_BAD_SBRK $_defemxcrtrev"
196 # indented to miss config.sh
199 # To get into config.sh (should start at the beginning of line)
200 # or you can put it into config.over.
202 # plibext is not needed anymore. Just directly set $libperl.
203 libperl="libperl${plibext}"
205 #libc="/emx/lib/st/c_import$lib_ext"
206 libc="$libemx/mt/$use_clib$lib_ext"
208 if test -r "$libemx/c_alias$lib_ext"; then
209 libnames="$libemx/c_alias$lib_ext"
211 # otherwise puts -lc ???
213 # [Maybe we should just remove c from $libswanted ?]
215 # Test would pick up wrong rand, so we hardwire the value for random()
216 libs='-lsocket -lm -lbsd'
218 archobjs="os2$obj_ext dl_os2$obj_ext"
220 # Run files without extension with sh:
227 #cppflags='-DDOSISH -DOS2=2 -DEMBED -I.'
229 # for speedup: (some patches to ungetc are also needed):
230 # Note that without this guy tests 8 and 10 of io/tell.t fail, with it 11 fails
232 stdstdunder=`echo "#include <stdio.h>" | cpp | egrep -c "char +\* +_ptr"`
235 d_stdio_ptr_lval='define'
236 d_stdio_cnt_lval='define'
238 if test "$stdstdunder" = 0; then
239 stdio_ptr='((fp)->ptr)'
240 stdio_cnt='((fp)->rcount)'
241 stdio_base='((fp)->buffer)'
242 stdio_bufsiz='((fp)->rcount + (fp)->ptr - (fp)->buffer)'
243 ccflags="$ccflags -DMYTTYNAME"
246 stdio_ptr='((fp)->_ptr)'
247 stdio_cnt='((fp)->_rcount)'
248 stdio_base='((fp)->_buffer)'
249 stdio_bufsiz='((fp)->_rcount + (fp)->_ptr - (fp)->_buffer)'
252 # to put into config.sh
253 myttyname="$myttyname"
255 # To have manpages installed
257 # above will be overwritten otherwise, indented to avoid config.sh
260 # should be handled automatically by Configure now.
262 # Will be rewritten otherwise, indented to not put in config.sh
268 ####### We define these functions ourselves
275 d_usleepproto='define'
277 # The next two are commented. pdksh handles #!, extproc gives no path part.
278 # sharpbang='extproc '
282 #startsh='extproc ksh\\n#! sh'
286 if (gnupatch -v || gnupatch --version) 2>&1 >/dev/null; then
289 if (gpatch -v || gpatch --version) 2>&1 >/dev/null; then
292 # They may have a special PATH during configuring
293 if (patch -v || patch --version) 2>&1 >/dev/null; then
294 gnupatch="`./UU/loc patch.exe undef $pth`"
299 for f in less.exe less.sh less.ksh less.cmd more.exe more.sh more.ksh more.cmd ; do
300 if test -z "$pager"; then
301 pager="`./UU/loc $f '' $pth`"
304 if test -z "$pager"; then
308 # Apply patches if needed
309 case "$0$running_c_cmd" in
310 *[/\\]Configure|*[/\\]Configure.|Configure|Configure.) # Skip Configure.cmd
311 if test "Xyes" = "X$configure_cmd_loop"; then
314 !!! PANIC: Loop of self-invocations detected, aborting!
319 configure_cmd_loop=yes
320 export configure_cmd_loop
322 configure_needs_patch=''
323 if test -s ./os2/diff.configure; then
324 if ! grep "^#OS2-PATCH-APPLIED" ./Configure > /dev/null; then
325 configure_needs_patch=yes
328 if test -n "$configure_needs_patch"; then
330 # Restore the initial command line arguments
331 if test -f ./Configure.cmd ; then
334 !!! I see that what is running is ./Configure.
335 !!! ./Configure is not patched, but ./Configure.cmd exists.
337 !!! You are supposed to run Configure.cmd, not Configure
338 !!! after an automagic patching.
340 !!! If you insist on running Configure, you may
341 !!! patch it manually from ./os2/diff.configure.
343 !!! However, I went through incredible hoolahoops, and I expect I can
344 !!! auto-restart Configure.cmd myself. I will start it with arguments:
346 !!! Configure.cmd $args_exp
349 rp='Do you want to auto-restart Configure.cmd?'
353 [yY]) echo >&4 "Okay, continuing." ;;
354 *) echo >&4 "Okay, bye."
358 eval "set X $args_exp";
361 exec Configure.cmd "$@" 1>&2
366 !!! You did not patch ./Configure!
367 !!! I can create Configure.cmd and patch it from ./os2/diff.configure with the command
369 !!! $gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch
371 rp='Do you want to auto-patch Configure to Configure.cmd?'
375 [yY]) echo >&4 "Okay, continuing." ;;
376 *) echo >&4 "Okay, bye."
380 ($gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch) >&2
383 !!! The report of patching is copied to 00_auto_patch.
384 !!! Now we need to restart Configure.cmd with all the options.
387 echo "extproc sh" > Configure.ctm
388 ( cat Configure.cmd >> Configure.ctm && mv -f Configure.ctm Configure.cmd ) || (echo "!!! Failure to add extproc-line to Configure.cmd." >&2 ; exit 21)
390 !!! I went through incredible hoolahoops, and I expect I can
391 !!! auto-restart Configure.cmd myself. I will start it with arguments:
393 !!! Configure.cmd $args_exp
396 rp='Do you want to auto-restart Configure.cmd?'
400 [yY]) echo >&4 "Okay, continuing." ;;
401 *) echo >&4 "Okay, bye."
405 eval "set X $args_exp";
407 exec Configure.cmd "$@" 1>&2
410 if test -s ./os2/diff.configure; then
411 echo "!!! Apparently we are running a patched Configure." >&2
413 echo "!!! Apparently there is no need to patch Configure." >&2
417 *) echo "!!! Apparently we are running a renamed Configure: '$0'." >&2
420 # This script UU/usethreads.cbu will get 'called-back' by Configure
421 # after it has prompted the user for whether to use threads.
422 cat > UU/usethreads.cbu <<'EOCBU'
423 case "$usethreads" in
425 ccflags="-Zmt $ccflags"
426 cppflags="-Zmt $cppflags" # Do we really need to set this?
427 aout_ccflags="-DUSE_THREADS $aout_ccflags"
428 aout_cppflags="-DUSE_THREADS $aout_cppflags"
429 aout_lddlflags="-Zmt $aout_lddlflags"
430 aout_ldflags="-Zmt $aout_ldflags"
435 if test -z "$cryptlib"; then
436 cryptlib=`UU/loc crypt$lib_ext "" $libpth`
437 if $test -n "$cryptlib"; then
440 cryptlib=`UU/loc ufc$lib_ext "" $libpth`
441 if $test -n "$cryptlib"; then
446 if test -n "$cryptlib"; then
447 libs="$libs $cryptlib"
451 # Now install the external modules. We are in the ./hints directory.
455 if ! test -d ../../ext/OS2 ; then
459 cp -rfu * ../../ext/OS2/
463 cp -uf ../*.t ../../t/lib
465 if $test -d $xxx/t; then
466 cp -uf $xxx/t/*.t ../../t/lib
468 if $test -d $xxx; then
471 if $test -d $yyy/t; then
472 cp -uf $yyy/t/*.t ../../t/lib
480 case "$ldlibpthname" in
481 '') ldlibpthname=none ;;