| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | 
							- /*=========================================================================
 
-   Program:   CMake - Cross-Platform Makefile Generator
 
-   Module:    $RCSfile$
 
-   Language:  C++
 
-   Date:      $Date$
 
-   Version:   $Revision$
 
-   Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
 
-   See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
 
-      This software is distributed WITHOUT ANY WARRANTY; without even 
 
-      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
 
-      PURPOSE.  See the above copyright notices for more information.
 
- =========================================================================*/
 
- #include "cmAddCustomCommandCommand.h"
 
- // cmAddCustomCommandCommand
 
- bool cmAddCustomCommandCommand::InitialPass(std::vector<std::string> const& argsIn)
 
- {
 
-   /* Let's complain at the end of this function about the lack of a particular
 
-      arg. For the moment, let's say that COMMAND, TARGET are always 
 
-      required.
 
-   */
 
-   if (argsIn.size() < 4)
 
-     {
 
-       this->SetError("called with wrong number of arguments.");
 
-       return false;
 
-     }
 
-   std::vector<std::string> args;
 
-   cmSystemTools::ExpandListArguments(argsIn, args);
 
-   std::string source, command, target;
 
-   std::vector<std::string> command_args, depends, outputs;
 
-   enum tdoing {
 
-     doing_source,
 
-     doing_command,
 
-     doing_target,
 
-     doing_args,
 
-     doing_depends,
 
-     doing_outputs,
 
-     doing_nothing
 
-   };
 
-   tdoing doing = doing_nothing;
 
-   for (unsigned int j = 0; j < args.size(); ++j)
 
-     {
 
-     std::string const& copy = args[j];
 
-     if(copy == "SOURCE")
 
-       {
 
-       doing = doing_source;
 
-       }
 
-     else if(copy == "COMMAND")
 
-       {
 
-       doing = doing_command;
 
-       }
 
-     else if(copy == "TARGET")
 
-       {
 
-       doing = doing_target;
 
-       }
 
-     else if(copy == "ARGS")
 
-       {
 
-       doing = doing_args;
 
-       }
 
-     else if (copy == "DEPENDS")
 
-       {
 
-       doing = doing_depends;
 
-       }
 
-     else if (copy == "OUTPUTS")
 
-       {
 
-       doing = doing_outputs;
 
-       }
 
-     else
 
-       {
 
-       switch (doing)
 
-         {
 
-         case doing_source:
 
-           source = copy;
 
-           break;
 
-         case doing_command:
 
-           command = copy;
 
-           break;
 
-         case doing_target:
 
-           target = copy;
 
-           break;
 
-         case doing_args:
 
-           command_args.push_back(copy);
 
-           break;
 
-         case doing_depends:
 
-           depends.push_back(copy);
 
-           break;
 
-         case doing_outputs:
 
-           outputs.push_back(copy);
 
-           break;
 
-         default:
 
-           this->SetError("Wrong syntax. Unknow type of argument.");
 
-           return false;
 
-         }
 
-       }
 
-     }
 
-   /* At this point we could complain about the lack of arguments.
 
-      For the moment, let's say that COMMAND, TARGET are always 
 
-      required.
 
-   */
 
-       
 
-   if(command.empty())
 
-     {
 
-     this->SetError("Wrong syntax. Empty COMMAND.");
 
-     return false;
 
-     }
 
-   if(target.empty())
 
-     {
 
-     this->SetError("Wrong syntax. Empty TARGET.");
 
-     return false;
 
-     }
 
-   // If source is empty, use target as source, so that this command
 
-   // can be used to just attach a commmand to a target
 
-   if(source.empty())
 
-     {
 
-     source = target;
 
-     }
 
-   m_Makefile->AddCustomCommand(source.c_str(), 
 
-                                command.c_str(), 
 
-                                command_args, 
 
-                                depends, 
 
-                                outputs, 
 
-                                target.c_str());
 
-   
 
-   return true;
 
- }
 
 
  |