home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / usr / bin / kl_ld < prev    next >
Encoding:
Text File  |  1991-08-16  |  2.2 KB  |  88 lines

  1. #!/bin/sh
  2. #
  3. # Create a relocatable file that can be loaded with the kern_loader.
  4. # This program adds sections to the specified relocatable that the
  5. # kern_loader can access.
  6. #
  7. KS_TYPES=/NextDeveloper/Headers/kernserv/kern_server_types.h
  8. version=`awk '/#define[     ]+KS_VERSION/ {print $3}' < $KS_TYPES`
  9. if [ "$version" = "" ]
  10. then
  11.     version=1
  12. fi
  13.  
  14. until [ $# -eq 0 ]
  15. do
  16.     case $1 in
  17.     -n ) KL_name=$2; shift; shift;;
  18.     -l ) if (echo $1 | egrep '\-l.')
  19.          then
  20.              KL_input="#Kl_input $1";
  21.          else
  22.         KL_lc=$2; shift;
  23.          fi
  24.          shift;;
  25.     -u ) KL_uc=$2; shift; shift;;
  26.     -i ) KL_in=$2; shift; shift;;
  27.     -d ) KL_lo=$2; shift; shift;;
  28.     -o) KL_output=$2; shift; shift;;
  29.     * ) KL_input="$KL_input $1"; shift;;
  30.     esac
  31. done
  32.  
  33. USAGE="usage: kl_ld -n <name> -l <load commands file> [-u <unload commands file>] -i <instance variable> [-d <loadable_file>] -o <output file> <input_file>"
  34.  
  35. if [   "$KL_name" = "" \
  36.     -o "$KL_lc" = "" \
  37.     -o "$KL_in" = "" \
  38.     -o "$KL_output" = "" \
  39.     -o "$KL_input" = "" ]
  40. then
  41.     echo $USAGE
  42.     exit 1
  43. fi
  44.  
  45. trap "rm /tmp/*$$" 0 1 2 15
  46. LS="\"Loaded Server\""
  47.  
  48. KL_name_name="\"Server Name\""
  49. KL_name_file=/tmp/kl_name$$
  50. echo -n $KL_name > $KL_name_file
  51. KL_name_sect="-sectalign $LS $KL_name_name 1 -sectcreate $LS $KL_name_name $KL_name_file"
  52.  
  53. KL_lc_name="\"Load Commands\""
  54. KL_lc_sect="-sectalign $LS $KL_lc_name 1 -sectcreate $LS $KL_lc_name $KL_lc"
  55.  
  56. KL_in_name="\"Instance Var\""
  57. KL_in_file=/tmp/kl_instance$$
  58. echo -n $KL_in > $KL_in_file
  59. KL_in_sect="-sectalign $LS $KL_in_name 1 -sectcreate $LS $KL_in_name $KL_in_file"
  60.  
  61. KL_vers_name="\"Server Version\""
  62. KL_vers_file=/tmp/kl_version$$
  63. echo -n $version > $KL_vers_file
  64. KL_vers_sect="-sectalign $LS $KL_vers_name 1 -sectcreate $LS $KL_vers_name $KL_vers_file"
  65.  
  66. if [ "$KL_lo" = "" ]
  67. then
  68.     KL_lo_sect=""
  69.  
  70. else
  71.     KL_lo_name="\"Loadable Name\""
  72.     KL_lo_file=/tmp/kl_lo_name$$
  73.     echo -n $KL_lo > $KL_lo_file
  74.     KL_lo_sect="-sectalign $LS $KL_lo_name 1 -sectcreate $LS $KL_lo_name $KL_lo_file"
  75. fi
  76.  
  77. if [ "$KL_uc" = "" ]
  78. then
  79.     KL_uc_sect=""
  80. else
  81.     KL_uc_name="\"Unload Commands\""
  82.     KL_uc_sect="-sectalign $LS $KL_uc_name 1 -sectcreate $LS $KL_uc_name $KL_uc"
  83. fi
  84.  
  85. echo ld -r -preload $KL_input -o $KL_output $KL_name_sect $(P$c_sect $KL_uc_sect $KL_in_sect $KL_lo_sect $KL_vers_sect | sh
  86.  
  87. exit 0
  88.