home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / hints / os2.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1999-10-23  |  9KB  |  362 lines

  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 :-():
  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
  18.  
  19. path_sep=\;
  20.  
  21. if test -f $sh.exe; then sh=$sh.exe; fi
  22.  
  23. startsh="#!$sh"
  24. cc='gcc'
  25.  
  26. # Make denser object files and DLL
  27. case "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.     ;;
  32. esac
  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.  
  50. usrinc="`./UU/loc stdlib.h /emx/include $usrinc`"
  51. usrinc="`dirname $usrinc | tr '\\\' '/'`"
  52. libemx="`dirname $libemx | tr '\\\' '/'`"
  53.  
  54. if test -d $tryman/man1; then
  55.   sysman="$tryman/man1"
  56. else
  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`"
  58. fi
  59.  
  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`"
  63. fi
  64.  
  65. if test ! -d "$libemx"; then 
  66.   libemx="$emxpath/lib"
  67. fi
  68. if 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
  74. fi
  75.  
  76. if 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
  86. fi
  87.  
  88. rsx="`./UU/loc rsx.exe undef $pth`"
  89.  
  90. if test "$libemx" = "X"; then echo "Cannot find C library!" >&2; fi
  91.  
  92. # Acute backslashitis:
  93. libpth="`echo \"$LIBRARY_PATH\" | tr ';\\\' ' /'`"
  94. libpth="$libpth $libemx/mt $libemx"
  95.  
  96. set `emxrev -f emxlibcm`
  97. emxcrtrev=$5
  98. # indented to not put it into config.sh
  99.   _defemxcrtrev=-D_EMX_CRT_REV_=$emxcrtrev
  100.  
  101. so='dll'
  102.  
  103. # Additional definitions:
  104.  
  105. firstmakefile='GNUmakefile'
  106. exe_ext='.exe'
  107.  
  108. # We provide it
  109. i_dlfcn='define'
  110.  
  111. aout_d_shrplib='undef'
  112. aout_useshrplib='false'
  113. aout_obj_ext='.o'
  114. aout_lib_ext='.a'
  115. aout_ar='ar'
  116. aout_plibext='.a'
  117. aout_lddlflags="-Zdll $ld_dll_optimize"
  118. # Cannot have 32000K stack: get SYS0170  ?!
  119. if [ $emxcrtrev -ge 50 ]; then 
  120.     aout_ldflags='-Zexe -Zsmall-conv -Zstack 16000'
  121. else
  122.     aout_ldflags='-Zexe -Zstack 16000'
  123. fi
  124.  
  125. # To get into config.sh:
  126. aout_ldflags="$aout_ldflags"
  127.  
  128. aout_d_fork='define'
  129. aout_ccflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
  130. aout_cppflags="-DDOSISH -DPERL_IS_AOUT -DOS2=2 -DEMBED -I. $_defemxcrtrev"
  131. aout_use_clib='c'
  132. aout_usedl='undef'
  133. aout_archobjs="os2.o dl_os2.o"
  134.  
  135. # variable which have different values for aout compile
  136. used_aout='d_shrplib useshrplib plibext lib_ext obj_ext ar plibext d_fork lddlflags ldflags ccflags use_clib usedl archobjs cppflags'
  137.  
  138. if [ "$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"
  154. else
  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'
  176. fi
  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.
  183. plibext="$plibext"
  184. # plibext is not needed anymore.  Just directly set $libperl.
  185. libperl="libperl${plibext}"
  186.  
  187. #libc="/emx/lib/st/c_import$lib_ext"
  188. libc="$libemx/mt/$use_clib$lib_ext"
  189.  
  190. if test -r "$libemx/c_alias$lib_ext"; then 
  191.     libnames="$libemx/c_alias$lib_ext"
  192. fi
  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()
  198. libs='-lsocket -lm -lbsd'
  199. randbits=31
  200. archobjs="os2$obj_ext dl_os2$obj_ext"
  201.  
  202. # Run files without extension with sh:
  203. EXECSHELL=sh
  204.  
  205. cccdlflags='-Zdll'
  206. dlsrc='dl_dlopen.xs'
  207. ld='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.  
  214. stdstdunder=`echo "#include <stdio.h>" | cpp | egrep -c "char +\* +_ptr"`
  215. d_stdstdio='define'
  216. d_stdiobase='define'
  217. d_stdio_ptr_lval='define'
  218. d_stdio_cnt_lval='define'
  219.  
  220. if 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'
  227. else
  228.   stdio_ptr='((fp)->_ptr)'
  229.   stdio_cnt='((fp)->_rcount)'
  230.   stdio_base='((fp)->_buffer)'
  231.   stdio_bufsiz='((fp)->_rcount + (fp)->_ptr - (fp)->_buffer)'
  232. fi
  233.  
  234. # to put into config.sh
  235. myttyname="$myttyname"
  236.  
  237. # To have manpages installed
  238. nroff='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.
  243. ln='cp'
  244. # Will be rewritten otherwise, indented to not put in config.sh
  245.   _ln='cp'
  246. lns='cp'
  247.  
  248. nm_opt='-p'
  249.  
  250. ####### We define these functions ourselves
  251.  
  252. d_getprior='define'
  253. d_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:
  263. gnupatch='patch'
  264. if (gnupatch -v || gnupatch --version)   2>&1 >/dev/null; then
  265.     gnupatch=gnupatch
  266. else
  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
  275. fi
  276.  
  277. # Apply patches if needed
  278. case "$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
  307. esac
  308.  
  309. # Copy pod:
  310.  
  311. cp -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.
  315. cat > UU/usethreads.cbu <<'EOCBU'
  316. case "$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.     ;;
  325. esac
  326. EOCBU
  327.  
  328. # Now install the external modules. We are in the ./hints directory.
  329.  
  330. cd ./os2/OS2
  331.  
  332. if ! test -d ../../ext/OS2 ; then
  333.    mkdir ../../ext/OS2
  334. fi
  335.  
  336. cp -rfu * ../../ext/OS2/
  337.  
  338. # Install tests:
  339.  
  340. for 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
  354. done
  355.  
  356. case "$ldlibpthname" in
  357. '') ldlibpthname=none ;;
  358. esac
  359.  
  360. # Now go back
  361. cd ../..
  362.