home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lxapi32.zip / SKELETON / Build.CMD next >
OS/2 REXX Batch file  |  2002-04-26  |  5KB  |  227 lines

  1. /* $Id: Build.CMD,v 1.2 2002/04/26 23:09:36 smilcke Exp $ */
  2.  
  3. /* Build.CMD for SKEL32 driver */
  4.  
  5. /* Set to 0 if you don't want to copy files to A: */
  6. CopyToDisk=0
  7.  
  8. /* Set subdirectory on A: if copy is enabled */
  9. TargetDirectory='\SKEL'
  10.  
  11. Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs';
  12. Call SysLoadFuncs;
  13.  
  14. Call CheckEnvironment
  15.  
  16. All=0
  17. Clean=0
  18. Release=0
  19.  
  20. makeopts='-h KEE=1'
  21.  
  22. Parse Arg Arguments
  23. Do i=1 To Words(Arguments)
  24.  A=Translate(Word(Arguments,i))
  25.  If A='ALL' Then Clean=1
  26.  If A='CLEAN' Then Clean=1
  27.  If A='DEBUG' Then Release=0
  28.  If A='RELEASE' Then Release=1
  29. End
  30.  
  31. If All=1 Then '@call Build.cmd clean'
  32. If All=1 Then makeopts=makeopts' all'
  33. If Clean=1 Then makeopts=makeopts' clean'
  34. If Release=0 Then
  35. Do
  36.  makeopts=makeopts' DEBUG=1'
  37.  '@SET DEBUG=1'
  38. End
  39.  
  40. /* Check, if previous build was release or not */
  41. If Clean=0 Then
  42. Do
  43.  Key=Translate(Directory())':Release'
  44.  or=SysIni(,'LXAPI32DEV',key)
  45.  if or<>Release Then
  46.  Do
  47.   '@call Build Clean'
  48.   or=SysIni(,'LXAPI32DEV',key,Release)
  49.  End
  50. End
  51.  
  52. /* Get time stamp of old file */
  53. Call SysFileTree 'BIN\\*.SYS','ofi','F'
  54. '@set path=.\Tools;..\tools;%PATH%'
  55. '@call BldMgr.cmd /File:.\Tools\buildlvl.cmd /Text:BUILD_LEVEL= /Action:INCR /Quiet'
  56. '@call buildlvl.cmd'
  57. '@wmake 'makeopts
  58. If Clean=1 Then rc=1
  59. Else If rc<>0 Then
  60. Do
  61.  tm=rc
  62.  '@call BldMgr.cmd /File:.\Tools\buildlvl.cmd /Text:BUILD_LEVEL= /Action:DECR /Quiet'
  63.  rc=tm
  64. End
  65. Else
  66. Do
  67.  IsNew=0
  68.  Call SysFileTree 'BIN\\*.SYS','nfi','F'
  69.  Do i=1 To nfi.0
  70.   If nfi.i<>ofi.i Then IsNew=1
  71.  End
  72.  If IsNew=0 Then '@call BldMgr.cmd /File:.\Tools\buildlvl.cmd /Text:BUILD_LEVEL= /Action:DECR /Quiet'
  73. End
  74. If CopyToDisk=1 Then
  75. Do
  76.  If rc=0 Then
  77.  Do
  78.   rc=SysDriveInfo('A:')
  79.   If (rc<>'') Then
  80.   Do
  81.    '@md a:\BIN > nul'
  82.    '@md a:'TargetDirectory' > nul'
  83.    DestFiles='bt32.sys'
  84.    IgnoreDirs='Linux Dev16'
  85.    Do i=1 To Words(DestFiles)
  86.     rc=CheckCopy(Word(DestFiles,i),IgnoreDirs)
  87.    End
  88.    ZipDirs='BIN BTTV Dev32 I2C Inc Include Lib Lib32 Linux PCI Makes Tools'
  89.    Do i=1 To Words(ZipDirs)
  90.     rc=CheckZip(Word(ZipDirs,i))
  91.    End
  92.    '@call pkzip /Add=update /Max a:'TargetDirectory'\root.zip *.*'
  93.    '@call pkzip /Add=update /Max a:\tools.zip ..\tools\*.*'
  94.   End
  95.  End
  96. End
  97.  
  98. Exit
  99.  
  100. CheckZip: Procedure Expose TargetDirectory
  101.  rc=0
  102.  DoZip=0
  103.  SubDir=Arg(1)
  104.  rc=SysFileTree(SubDir'\*.*',s,'FT')
  105.  rc=SysFileTree('A:'TargetDirectory'\'SubDir'.ZIP',d,'FT')
  106.  If d.0>0 Then
  107.  Do
  108.   Do i=1 To s.0
  109.    If Left(s.i,14)>Left(d.1,14) Then
  110.    Do
  111.     DoZip=1
  112.     Leave
  113.    End
  114.   End
  115.  End
  116.  Else
  117.  Do
  118.   DoZip=1
  119.  End
  120.  If DoZip=1 Then
  121.  Do
  122.   '@call pkzip /add=update /Max /Dir /Excl=*.obj /Excl=*.lst /Excl=*.lrf /Excl=*.lib /Excl=*.err /Excl=*.map /Excl=*.sym /Excl=*.wat /Excl=BIN a:'TargetDirectory'\'SubDir'.ZIP 'SubDir'\*.*'
  123.  End
  124. Return rc
  125.  
  126. CheckCopy: Procedure
  127.  rc=0
  128.  di=Directory()'\'
  129.  SubDir=Directory()
  130.  DestPath='A:'
  131.  filespec=Arg(1)
  132.  ignoreDirs=Arg(2)
  133.  rc=SysFileTree(filespec,sFiles,'FSO')
  134.  /* Remove EA's from all files */
  135.  Do i=1 To sFiles.0
  136.   /*
  137.   '@eautil 'sFiles.i' 'sFiles.i'.EA /s /r > nul'
  138.   '@if exist 'sFiles.i'.EA del 'sFiles.i'.EA > nul'
  139.   */
  140.   sF=sFiles.i
  141.   sF=DelStr(sF,Pos(di,sF),Length(di))
  142.   dF=sF
  143.   doCopy=1
  144.   Do j=1 To Words(ignoreDirs)
  145.    If Word(ignoreDirs,j)=Left(sF,Length(Word(ignoreDirs,j))) Then
  146.    Do
  147.     doCopy=0
  148.     Leave
  149.    End
  150.   End
  151.   If doCopy=1 Then
  152.   Do
  153.    rc=DoCheckCopy(sF,DestPath'\'dF)
  154.   End
  155.  End
  156. Return rc
  157.  
  158. DoCheckCopy: Procedure
  159.  rc=0
  160.  sFile=Arg(1)
  161.  dFile=Arg(2)
  162.  rc=CreatePath(FileSpec('DRIVE',dFile)''FileSpec('PATH',dFile))
  163.  rc=SysFileTree(sFile,s,'FT')
  164.  rc=SysFileTree(dFile,d,'FT')
  165.  doCopy=0
  166.  If s.0>0 Then
  167.  Do
  168.   If d.0>0 Then
  169.   Do
  170.    If (Left(s.1,14)<>Left(d.1,14)) Then DoCopy='Update: '
  171.   End
  172.   Else doCopy='Add:    '
  173.   FNN=FileSpec('NAME',dFile)
  174.   FNE=''
  175.   If Pos('.',FNN)>0 Then
  176.   Do
  177.    FNE=Right(FNN,Length(FNN)-Pos('.',FNN))
  178.    FNN=Left(FNN,Length(FNN)-Length(FNE)-1)
  179.   End
  180.   If Length(FNN)>8 Then doCopy='TooLong:'
  181.   If Length(FNE)>8 Then doCopy='TooLong:'
  182.   If doCopy<>0 Then
  183.   Do
  184.    If doCopy<>'TooLong:' Then
  185.    Do
  186.     Say doCopy' 'sFile' To 'dFile
  187.     '@copy 'sFile' 'dFile' > nul'
  188.    End
  189. /*
  190.    If doCopy='TooLong:' Then
  191.    Do
  192.     Say doCopy' 'sFile
  193.    End
  194. */
  195.   End
  196.  End
  197. Return rc
  198.  
  199. CreatePath: Procedure
  200.  sDir=Arg(1)
  201.  sPath=FileSpec('PATH', sDir)
  202.  If (Length(sPath) > 0 & sPath <> '\') Then
  203.  Do
  204.   rc=CreatePath(FileSpec('Drive',sDir) || subStr(sPath,1,Length(sPath)-1))
  205.  End
  206.  rc=SysMkDir(sDir)
  207. Return 0
  208.  
  209. CheckEnvironment: Procedure
  210.  rc1=CheckEnvPath('DDK','BASE\H\RMCALLS.H')
  211.  rc2=CheckEnvPath('WATCOM','BINP\WPP386.EXE')
  212.  rc3=CheckEnvPath('LXAPI32DEV','INCLUDE\LXRMCALL.H')
  213.  If rc1<1 | rc2<1 Then Exit
  214. Return 0
  215.  
  216. CheckEnvPath: Procedure
  217.  E=Arg(1)
  218.  F=Arg(2)
  219.  P=Value(E,,'OS2ENVIRONMENT')
  220.  CF=P'\'F
  221.  rc=SysFileTree(CF,FF,'F')
  222.  If FF.0<1 Then
  223.  Do
  224.   Say 'Environment variable 'E' not defined or wrong'
  225.  End
  226. Return FF.0
  227.