| /*============================================================================ |
| CMake - Cross Platform Makefile Generator |
| Copyright 2000-2009 Kitware, Inc., Insight Software Consortium |
| |
| Distributed under the OSI-approved BSD License (the "License"); |
| see accompanying file Copyright.txt for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even the |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the License for more information. |
| ============================================================================*/ |
| /* This header file defines the API that loadable commands can use. In many |
| of these commands C++ instances of cmMakefile of cmSourceFile are passed |
| in as arguments or returned. In these cases they are passed as a void * |
| argument. In the function prototypes mf is used to represent a makefile |
| and sf is used to represent a source file. The functions are grouped |
| loosely into four groups 1) Utility 2) cmMakefile 3) cmSourceFile 4) |
| cmSystemTools. Within each grouping functions are listed alphabetically */ |
| /*=========================================================================*/ |
| #ifndef cmCPluginAPI_h |
| #define cmCPluginAPI_h |
| |
| #define CMAKE_VERSION_MAJOR 2 |
| #define CMAKE_VERSION_MINOR 5 |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifdef __WATCOMC__ |
| #define CCONV __cdecl |
| #else |
| #define CCONV |
| #endif |
| /*========================================================================= |
| this is the structure of function entry points that a plugin may call. This |
| structure must be kept in sync with the static decaled at the bottom of |
| cmCPLuginAPI.cxx |
| =========================================================================*/ |
| typedef struct |
| { |
| /*========================================================================= |
| Here we define the set of functions that a plugin may call. The first goup |
| of functions are utility functions that are specific to the plugin API |
| =========================================================================*/ |
| /* set/Get the ClientData in the cmLoadedCommandInfo structure, this is how |
| information is passed from the InitialPass to FInalPass for commands |
| that need a FinalPass and need information from the InitialPass */ |
| void *(CCONV *GetClientData) (void *info); |
| /* return the summed size in characters of all the arguments */ |
| int (CCONV *GetTotalArgumentSize) (int argc, char **argv); |
| /* free all the memory associated with an argc, argv pair */ |
| void (CCONV *FreeArguments) (int argc, char **argv); |
| /* set/Get the ClientData in the cmLoadedCommandInfo structure, this is how |
| information is passed from the InitialPass to FInalPass for commands |
| that need a FinalPass and need information from the InitialPass */ |
| void (CCONV *SetClientData) (void *info, void *cd); |
| /* when an error occurs, call this function to set the error string */ |
| void (CCONV *SetError) (void *info, const char *err); |
| |
| /*========================================================================= |
| The following functions all directly map to methods in the cmMakefile |
| class. See cmMakefile.h for descriptions of what each method does. All of |
| these methods take the void * makefile pointer as their first argument. |
| =========================================================================*/ |
| void (CCONV *AddCacheDefinition) (void *mf, const char* name, |
| const char* value, |
| const char* doc, int cachetype); |
| void (CCONV *AddCustomCommand) (void *mf, const char* source, |
| const char* command, |
| int numArgs, const char **args, |
| int numDepends, const char **depends, |
| int numOutputs, const char **outputs, |
| const char *target); |
| void (CCONV *AddDefineFlag) (void *mf, const char* definition); |
| void (CCONV *AddDefinition) (void *mf, const char* name, |
| const char* value); |
| void (CCONV *AddExecutable) (void *mf, const char *exename, |
| int numSrcs, const char **srcs, int win32); |
| void (CCONV *AddLibrary) (void *mf, const char *libname, |
| int shared, int numSrcs, const char **srcs); |
| void (CCONV *AddLinkDirectoryForTarget) (void *mf, const char *tgt, |
| const char* d); |
| void (CCONV *AddLinkLibraryForTarget) (void *mf, const char *tgt, |
| const char *libname, int libtype); |
| void (CCONV *AddUtilityCommand) (void *mf, const char* utilityName, |
| const char *command, const char *arguments, |
| int all, int numDepends, const char **depends, |
| int numOutputs, const char **outputs); |
| int (CCONV *CommandExists) (void *mf, const char* name); |
| int (CCONV *ExecuteCommand) (void *mf, const char *name, |
| int numArgs, const char **args); |
| void (CCONV *ExpandSourceListArguments) (void *mf,int argc, |
| const char **argv, |
| int *resArgc, char ***resArgv, |
| unsigned int startArgumentIndex); |
| char *(CCONV *ExpandVariablesInString) (void *mf, const char *source, |
| int escapeQuotes, int atOnly); |
| unsigned int (CCONV *GetCacheMajorVersion) (void *mf); |
| unsigned int (CCONV *GetCacheMinorVersion) (void *mf); |
| const char* (CCONV *GetCurrentDirectory) (void *mf); |
| const char* (CCONV *GetCurrentOutputDirectory) (void *mf); |
| const char* (CCONV *GetDefinition) (void *mf, const char *def); |
| const char* (CCONV *GetHomeDirectory) (void *mf); |
| const char* (CCONV *GetHomeOutputDirectory) (void *mf); |
| unsigned int (CCONV *GetMajorVersion) (void *mf); |
| unsigned int (CCONV *GetMinorVersion) (void *mf); |
| const char* (CCONV *GetProjectName) (void *mf); |
| const char* (CCONV *GetStartDirectory) (void *mf); |
| const char* (CCONV *GetStartOutputDirectory) (void *mf); |
| int (CCONV *IsOn) (void *mf, const char* name); |
| |
| |
| /*========================================================================= |
| The following functions are designed to operate or manipulate |
| cmSourceFiles. Please see cmSourceFile.h for additional information on many |
| of these methods. Some of these methods are in cmMakefile.h. |
| =========================================================================*/ |
| void *(CCONV *AddSource) (void *mf, void *sf); |
| void *(CCONV *CreateSourceFile) (); |
| void (CCONV *DestroySourceFile) (void *sf); |
| void *(CCONV *GetSource) (void *mf, const char* sourceName); |
| void (CCONV *SourceFileAddDepend) (void *sf, const char *depend); |
| const char *(CCONV *SourceFileGetProperty) (void *sf, const char *prop); |
| int (CCONV *SourceFileGetPropertyAsBool) (void *sf, const char *prop); |
| const char *(CCONV *SourceFileGetSourceName) (void *sf); |
| const char *(CCONV *SourceFileGetFullPath) (void *sf); |
| void (CCONV *SourceFileSetName) (void *sf, const char* name, |
| const char* dir, |
| int numSourceExtensions, |
| const char **sourceExtensions, |
| int numHeaderExtensions, |
| const char **headerExtensions); |
| void (CCONV *SourceFileSetName2) (void *sf, const char* name, |
| const char* dir, |
| const char *ext, int headerFileOnly); |
| void (CCONV *SourceFileSetProperty) (void *sf, const char *prop, |
| const char *value); |
| |
| |
| /*========================================================================= |
| The following methods are from cmSystemTools.h see that file for specific |
| documentation on each method. |
| =========================================================================*/ |
| char *(CCONV *Capitalized)(const char *); |
| void (CCONV *CopyFileIfDifferent)(const char *f1, const char *f2); |
| char *(CCONV *GetFilenameWithoutExtension)(const char *); |
| char *(CCONV *GetFilenamePath)(const char *); |
| void (CCONV *RemoveFile)(const char *f1); |
| void (CCONV *Free)(void *); |
| |
| /*========================================================================= |
| The following are new functions added after 1.6 |
| =========================================================================*/ |
| void (CCONV *AddCustomCommandToOutput) (void *mf, const char* output, |
| const char* command, |
| int numArgs, const char **args, |
| const char* main_dependency, |
| int numDepends, const char **depends); |
| void (CCONV *AddCustomCommandToTarget) (void *mf, const char* target, |
| const char* command, |
| int numArgs, const char **args, |
| int commandType); |
| |
| /* display status information */ |
| void (CCONV *DisplaySatus) (void *info, const char *message); |
| |
| /* new functions added after 2.4 */ |
| void *(CCONV *CreateNewSourceFile) (void *mf); |
| void (CCONV *DefineSourceFileProperty) (void *mf, const char *name, |
| const char *briefDocs, |
| const char *longDocs, |
| int chained); |
| |
| /* this is the end of the C function stub API structure */ |
| } cmCAPI; |
| |
| |
| /*========================================================================= |
| CM_PLUGIN_EXPORT should be used by plugins |
| =========================================================================*/ |
| #ifdef _WIN32 |
| #define CM_PLUGIN_EXPORT __declspec( dllexport ) |
| #else |
| #define CM_PLUGIN_EXPORT |
| #endif |
| |
| /*========================================================================= |
| define the different types of cache entries, see cmCacheManager.h for more |
| information |
| =========================================================================*/ |
| #define CM_CACHE_BOOL 0 |
| #define CM_CACHE_PATH 1 |
| #define CM_CACHE_FILEPATH 2 |
| #define CM_CACHE_STRING 3 |
| #define CM_CACHE_INTERNAL 4 |
| #define CM_CACHE_STATIC 5 |
| |
| /*========================================================================= |
| define the different types of compiles a library may be |
| =========================================================================*/ |
| #define CM_LIBRARY_GENERAL 0 |
| #define CM_LIBRARY_DEBUG 1 |
| #define CM_LIBRARY_OPTIMIZED 2 |
| |
| /*========================================================================= |
| define the different types of custom commands for a target |
| =========================================================================*/ |
| #define CM_PRE_BUILD 0 |
| #define CM_PRE_LINK 1 |
| #define CM_POST_BUILD 2 |
| |
| /*========================================================================= |
| Finally we define the key data structures and function prototypes |
| =========================================================================*/ |
| typedef const char* (CCONV *CM_DOC_FUNCTION)(); |
| typedef int (CCONV *CM_INITIAL_PASS_FUNCTION)(void *info, void *mf, |
| int argc, char *[]); |
| typedef void (CCONV *CM_FINAL_PASS_FUNCTION)(void *info, void *mf); |
| typedef void (CCONV *CM_DESTRUCTOR_FUNCTION)(void *info); |
| |
| typedef struct { |
| unsigned long reserved1; /* Reserved for future use. DO NOT USE. */ |
| unsigned long reserved2; /* Reserved for future use. DO NOT USE. */ |
| cmCAPI *CAPI; |
| int m_Inherited; /* this ivar is no longer used in CMake 2.2 or later */ |
| CM_INITIAL_PASS_FUNCTION InitialPass; |
| CM_FINAL_PASS_FUNCTION FinalPass; |
| CM_DESTRUCTOR_FUNCTION Destructor; |
| CM_DOC_FUNCTION GetTerseDocumentation; |
| CM_DOC_FUNCTION GetFullDocumentation; |
| const char *Name; |
| char *Error; |
| void *ClientData; |
| } cmLoadedCommandInfo; |
| |
| typedef void (CCONV *CM_INIT_FUNCTION)(cmLoadedCommandInfo *); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |