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"
135 # -D__ST_MT_ERRNO__ allows a quick relink with -Zmtd to check problems
136 # which may be due to linking with -Zmtd DLLs
138 # Cannot have 32000K stack: get SYS0170 ?!
139 if [ $emxcrtrev -ge 50 ]; then
140 aout_ldflags='-Zexe -Zsmall-conv -Zstack 16000 -D__ST_MT_ERRNO__'
142 aout_ldflags='-Zexe -Zstack 16000 -D__ST_MT_ERRNO__'
145 # To get into config.sh:
146 aout_ldflags="$aout_ldflags"
149 aout_ccflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev -D__ST_MT_ERRNO__"
150 aout_cppflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev -D__ST_MT_ERRNO__"
153 aout_archobjs="os2.o dl_os2.o"
154 # Not listed in dynamic_ext, but needed for AOUT static_ext nevertheless
155 aout_extra_static_ext="OS2::DLL"
157 # variable which have different values for aout compile
158 used_aout='d_shrplib useshrplib plibext lib_ext obj_ext ar plibext d_fork lddlflags ldflags ccflags use_clib usedl archobjs cppflags'
160 if [ "$emxaout" != "" ]; then
161 d_shrplib="$aout_d_shrplib"
162 useshrplib="$aout_useshrplib"
163 obj_ext="$aout_obj_ext"
164 lib_ext="$aout_lib_ext"
166 plibext="$aout_plibext"
167 if [ $emxcrtrev -lt 50 ]; then
168 d_fork="$aout_d_fork"
170 lddlflags="$aout_lddlflags"
171 ldflags="$aout_ldflags"
172 ccflags="$aout_ccflags"
173 cppflags="$aout_cppflags"
174 use_clib="$aout_use_clib"
183 if [ $emxcrtrev -ge 50 ]; then
188 lddlflags="-Zdll -Zomf -Zmt -Zcrtdll -Zlinker /e:2"
189 # Recursive regmatch may eat 2.5M of stack alone.
190 ldflags='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000 -Zlinker /e:2'
191 if [ $emxcrtrev -ge 50 ]; then
192 ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. $_defemxcrtrev"
194 ccflags="-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -DEMX_BAD_SBRK $_defemxcrtrev"
200 # indented to miss config.sh
203 # To get into config.sh (should start at the beginning of line)
204 # or you can put it into config.over.
206 # plibext is not needed anymore. Just directly set $libperl.
207 libperl="libperl${plibext}"
209 #libc="/emx/lib/st/c_import$lib_ext"
210 libc="$libemx/mt/$use_clib$lib_ext"
212 if test -r "$libemx/c_alias$lib_ext"; then
213 libnames="$libemx/c_alias$lib_ext"
215 # otherwise puts -lc ???
217 # [Maybe we should just remove c from $libswanted ?]
219 # Test would pick up wrong rand, so we hardwire the value for random()
220 libs='-lsocket -lm -lbsd'
222 archobjs="os2$obj_ext dl_os2$obj_ext"
224 # Run files without extension with sh:
231 #cppflags='-DDOSISH -DOS2=2 -DEMBED -I.'
233 # for speedup: (some patches to ungetc are also needed):
234 # Note that without this guy tests 8 and 10 of io/tell.t fail, with it 11 fails
236 stdstdunder=`echo "#include <stdio.h>" | cpp | egrep -c "char +\* +_ptr"`
239 d_stdio_ptr_lval='define'
240 d_stdio_cnt_lval='define'
242 if test "$stdstdunder" = 0; then
243 stdio_ptr='((fp)->ptr)'
244 stdio_cnt='((fp)->rcount)'
245 stdio_base='((fp)->buffer)'
246 stdio_bufsiz='((fp)->rcount + (fp)->ptr - (fp)->buffer)'
247 ccflags="$ccflags -DMYTTYNAME"
250 stdio_ptr='((fp)->_ptr)'
251 stdio_cnt='((fp)->_rcount)'
252 stdio_base='((fp)->_buffer)'
253 stdio_bufsiz='((fp)->_rcount + (fp)->_ptr - (fp)->_buffer)'
256 # to put into config.sh
257 myttyname="$myttyname"
259 # To have manpages installed
261 # above will be overwritten otherwise, indented to avoid config.sh
264 # should be handled automatically by Configure now.
266 # Will be rewritten otherwise, indented to not put in config.sh
272 ####### We define these functions ourselves
279 d_usleepproto='define'
281 # The next two are commented. pdksh handles #!, extproc gives no path part.
282 # sharpbang='extproc '
286 #startsh='extproc ksh\\n#! sh'
290 if (gnupatch -v || gnupatch --version) 2>&1 >/dev/null; then
293 if (gpatch -v || gpatch --version) 2>&1 >/dev/null; then
296 # They may have a special PATH during configuring
297 if (patch -v || patch --version) 2>&1 >/dev/null; then
298 gnupatch="`./UU/loc patch.exe undef $pth`"
303 for f in less.exe less.sh less.ksh less.cmd more.exe more.sh more.ksh more.cmd ; do
304 if test -z "$pager"; then
305 pager="`./UU/loc $f '' $pth`"
308 if test -z "$pager"; then
312 # Apply patches if needed
313 case "$0$running_c_cmd" in
314 *[/\\]Configure|*[/\\]Configure.|Configure|Configure.) # Skip Configure.cmd
315 if test "Xyes" = "X$configure_cmd_loop"; then
318 !!! PANIC: Loop of self-invocations detected, aborting!
323 configure_cmd_loop=yes
324 export configure_cmd_loop
326 configure_needs_patch=''
327 if test -s ./os2/diff.configure; then
328 if ! grep "^#OS2-PATCH-APPLIED" ./Configure > /dev/null; then
329 configure_needs_patch=yes
332 if test -n "$configure_needs_patch"; then
334 # Restore the initial command line arguments
335 if test -f ./Configure.cmd ; then
338 !!! I see that what is running is ./Configure.
339 !!! ./Configure is not patched, but ./Configure.cmd exists.
341 !!! You are supposed to run Configure.cmd, not Configure
342 !!! after an automagic patching.
344 !!! If you insist on running Configure, you may
345 !!! patch it manually from ./os2/diff.configure.
347 !!! However, I went through incredible hoolahoops, and I expect I can
348 !!! auto-restart Configure.cmd myself. I will start it with arguments:
350 !!! Configure.cmd $args_exp
353 rp='Do you want to auto-restart Configure.cmd?'
357 [yY]) echo >&4 "Okay, continuing." ;;
358 *) echo >&4 "Okay, bye."
362 eval "set X $args_exp";
365 exec Configure.cmd "$@" 1>&2
370 !!! You did not patch ./Configure!
371 !!! I can create Configure.cmd and patch it from ./os2/diff.configure with the command
373 !!! $gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch
375 rp='Do you want to auto-patch Configure to Configure.cmd?'
379 [yY]) echo >&4 "Okay, continuing." ;;
380 *) echo >&4 "Okay, bye."
384 ($gnupatch -b -p1 --output=Configure.cmd <./os2/diff.configure 2>&1 | tee 00_auto_patch) >&2
387 !!! The report of patching is copied to 00_auto_patch.
388 !!! Now we need to restart Configure.cmd with all the options.
391 echo "extproc sh" > Configure.ctm
392 ( cat Configure.cmd >> Configure.ctm && mv -f Configure.ctm Configure.cmd ) || (echo "!!! Failure to add extproc-line to Configure.cmd." >&2 ; exit 21)
394 !!! I went through incredible hoolahoops, and I expect I can
395 !!! auto-restart Configure.cmd myself. I will start it with arguments:
397 !!! Configure.cmd $args_exp
400 rp='Do you want to auto-restart Configure.cmd?'
404 [yY]) echo >&4 "Okay, continuing." ;;
405 *) echo >&4 "Okay, bye."
409 eval "set X $args_exp";
411 exec Configure.cmd "$@" 1>&2
414 if test -s ./os2/diff.configure; then
415 echo "!!! Apparently we are running a patched Configure." >&2
417 echo "!!! Apparently there is no need to patch Configure." >&2
421 *) echo "!!! Apparently we are running a renamed Configure: '$0'." >&2
424 # This script UU/usethreads.cbu will get 'called-back' by Configure
425 # after it has prompted the user for whether to use threads.
426 cat > UU/usethreads.cbu <<'EOCBU'
427 case "$usethreads" in
429 ccflags="-Zmt $ccflags"
430 cppflags="-Zmt $cppflags" # Do we really need to set this?
431 aout_ccflags="-DUSE_THREADS $aout_ccflags"
432 aout_cppflags="-DUSE_THREADS $aout_cppflags"
433 aout_lddlflags="-Zmt $aout_lddlflags"
434 aout_ldflags="-Zmt $aout_ldflags"
439 if test -z "$cryptlib"; then
440 cryptlib=`UU/loc crypt$lib_ext "" $libpth`
441 if $test -n "$cryptlib"; then
444 cryptlib=`UU/loc ufc$lib_ext "" $libpth`
445 if $test -n "$cryptlib"; then
450 if test -n "$cryptlib"; then
451 libs="$libs $cryptlib"
455 # Now install the external modules. We are in the ./hints directory.
459 if ! test -d ../../ext/OS2 ; then
463 cp -rfu * ../../ext/OS2/
467 cp -uf ../*.t ../../t/lib
469 if $test -d $xxx/t; then
470 cp -uf $xxx/t/*.t ../../t/lib
472 if $test -d $xxx; then
475 if $test -d $yyy/t; then
476 cp -uf $yyy/t/*.t ../../t/lib
484 case "$ldlibpthname" in
485 '') ldlibpthname=none ;;