diff options
Diffstat (limited to '')
-rw-r--r-- | includes/cmdline.h | 749 |
1 files changed, 749 insertions, 0 deletions
diff --git a/includes/cmdline.h b/includes/cmdline.h new file mode 100644 index 0000000..2861794 --- /dev/null +++ b/includes/cmdline.h @@ -0,0 +1,749 @@ +#pragma once + +#include "cw_common.h" +#include "pref_structs.h" + +enum { + CLStr1 = 1, + CLStr2 = 2, + CLStr3 = 3, + CLStr4 = 4, + CLStr5 = 5, + CLStr6 = 6, + CLStr7 = 7, + CLStr8 = 8, + CLStr9 = 9, + CLStr10 = 10, + CLStr11 = 11, + CLStr12 = 12, + CLStr13 = 13, + CLStr14 = 14, + CLStr15 = 15, + CLStr16 = 16, + CLStr17 = 17, + CLStr18 = 18, + CLStr19 = 19, + CLStr20 = 20, + CLStr21 = 21, + CLStr22 = 22, + CLStr23 = 23, + CLStr24 = 24, + CLStr25 = 25, + CLStr26 = 26, + CLStr27 = 27, + CLStr28 = 28, + CLStr29 = 29, + CLStr30 = 30, + CLStr31 = 31, + CLStr32 = 32, + CLStr33 = 33, + CLStr34 = 34, + CLStr35 = 35, + CLStr36 = 36, + CLStr37 = 37, + CLStr38 = 38, + CLStr39 = 39, + CLStr40 = 40, + CLStr41 = 41, + CLStr42 = 42, + CLStr43 = 43, + CLStr44 = 44, + CLStr45 = 45, + CLStr46 = 46, + CLStr47 = 47, + CLStr48 = 48, + CLStr49 = 49, + CLStr50 = 50, + CLStr51 = 51, + CLStr52 = 52, + CLStr53 = 53, + CLStr54 = 54, + CLStr55 = 55, + CLStr56 = 56, + CLStr57 = 57, + CLStr58 = 58, + CLStr59 = 59, + CLStr60 = 60, + CLStr61 = 61, + CLStr62 = 62, + CLStr63 = 63, + CLStr64 = 64, + CLStr65 = 65, + CLStr66 = 66, + CLStr67 = 67, + CLStr68 = 68, + CLStr69 = 69, + CLStr70 = 70, + CLStr71 = 71, + CLStr72 = 72, + CLStr73 = 73, + CLStr74 = 74, + CLStr75 = 75, + CLStr76 = 76, + CLStr77 = 77, + CLStr78 = 78, + CLStr79 = 79, + CLStr80 = 80, + CLStr81 = 81, + CLStr82 = 82, + CLStr83 = 83, + CLStr84 = 84, + CLStr85 = 85, + CLStr86 = 86, + CLStr87 = 87, + CLStr88 = 88, + CLStr89 = 89, + CLStr90 = 90, + CLStr91 = 91, + CLStr92 = 92, + CLStr93 = 93, + CLStr94 = 94, + CLStr95 = 95, + CLStr96 = 96, + CLStr97 = 97, + CLStr98 = 98, + CLStr99 = 99, + CLStr100 = 100, + CLStr101 = 101, + CLStr102 = 102, + CLStr103 = 103, + CLStr104 = 104, + CLStr105 = 105, + CLStr106 = 106, + CLStr107 = 107, + CLStr108 = 108, + CLStr109 = 109, + CLStr110 = 110, + CLStr111 = 111, + CLStr112 = 112 +}; + +#define DO_INTERNAL_ERROR(...) CLInternalError(__FILE__, __LINE__, __VA_ARGS__) + +#ifdef __MWERKS__ +#pragma options align=mac68k +#endif +// TODO fixme +typedef struct CPrepFileInfo { + FSSpec textfile; + void *nameNode; + SInt32 fileModDate; + char *textbuffer; + SInt32 textlength; + SInt32 linenumber; + SInt32 pos; + Boolean hasprepline; + SInt16 fileID; + Boolean recordbrowseinfo; + void *unk; +} CPrepFileInfo; +typedef CPrepFileInfo *CPrepFileInfoStack[]; +#ifdef __MWERKS__ +#pragma options align=reset +#endif + +enum { + OptsCmdLineState_0 = 0, + OptsCmdLineState_1 = 1, + OptsCmdLineState_2 = 2, + OptsCmdLineState_3 = 3 +}; +enum { + OptsCompilerSbmState_0 = 0, + OptsCompilerSbmState_1 = 1, // sbmRebuild? + OptsCompilerSbmState_2 = 2, + OptsCompilerSbmState_3 = 3 // sbmClean? +}; +enum { + CmdLineStage_Cg = 1, + CmdLineStage_Pp = 2, + CmdLineStage_Ds = 3 +}; +enum { + CmdLineStageMask_Pp = 1, + CmdLineStageMask_Cg = 2, + CmdLineStageMask_Ds = 4, + CmdLineStageMask_Dp = 8 +}; + +// Result codes used by various things in CLMain and CLFileOps +enum { + Result_Success = 0, + Result_Failed = 1, + Result_Cancelled = 2 +}; + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct MessageRef { + OSSpec sourcefile; + OSSpec errorfile; + char *sourceline; + SInt32 linenumber; + SInt32 tokenoffset; + SInt16 tokenlength; + SInt32 selectionoffset; + SInt16 selectionlength; +} MessageRef; + +typedef struct Paths { + struct Path **pathsArray; + UInt16 arraySize; + UInt16 pathsCount; +} Paths; + +typedef struct Frameworks { + struct Paths_FWInfo **fwsArray; + UInt16 arraySize; + UInt16 fwsCount; +} Frameworks; + +typedef struct Path { + OSPathSpec *spec; + Paths *recursive; + char *dirlist; + SInt16 flags; +} Path; + +typedef struct Paths_FWInfo { + OSSpec fileSpec; + OSPathSpec version; + OSPathSpec name; + Path *path; + Boolean hidden; +} Paths_FWInfo; + +typedef struct InclFile { + SInt32 filenameoffs; + Path *accesspath; + Path *globalpath; + Path *specialpath; + Boolean syspath; +} InclFile; + +typedef struct Incls { + struct Target *targ; + SInt32 numincls; + SInt32 maxincls; + InclFile *files; + SInt32 buflen; + SInt32 bufpos; + char *buffer; + Paths *allPaths; +} Incls; + +typedef struct Deps { + int numDeps; + int maxDeps; + SInt32 *list; + Incls *incls; +} Deps; + +typedef struct OvlAddr { + UInt32 lo, hi; +} OvlAddr; + +typedef struct Overlay { + char name[256]; + SInt32 *list; + SInt32 cnt; + SInt32 max; + struct Overlay *next; +} Overlay; + +typedef struct OvlGroup { + char name[256]; + OvlAddr addr; + Overlay *olys; + Overlay *lastoly; + int olycnt; + struct OvlGroup *next; +} OvlGroup; + +typedef struct Overlays { + OvlGroup *groups; + OvlGroup *lastgrp; + SInt32 grpcnt; +} Overlays; + +typedef struct Segment { + char name[32]; + UInt16 attrs; +} Segment; + +typedef struct Segments { + Segment **segsArray; + UInt16 arraySize; + UInt16 segsCount; +} Segments; +typedef struct File { + struct File *next; + SInt32 filenum; + UInt16 segnum; + time_t srcmoddate; + time_t outmoddate; + char srcfilename[256]; + char outfilename[256]; + SInt16 outfileowner; + OSSpec srcfss; + OSSpec outfss; + SInt16 writeToDisk; + SInt16 wroteToDisk; + SInt16 tempOnDisk; + struct Plugin *compiler; + SInt32 dropinflags; + SInt32 objectflags; + SInt32 mappingflags; + SInt16 sourceUsage; + SInt16 objectUsage; + Handle textdata; + Handle objectdata; + Handle browsedata; + SInt32 codesize; + SInt32 udatasize; + SInt32 idatasize; + SInt32 compiledlines; + Boolean recompileDependents; + Boolean gendebug; + Boolean hasobjectcode; + Boolean hasresources; + Boolean isresourcefile; + Boolean weakimport; + Boolean initbefore; + Boolean mergeintooutput; + Deps deps; + Boolean recordbrowseinfo; + SInt16 browseFileID; + char browseoptions[32]; + OSType filetype; + OSType filecreator; +} File; + +typedef struct Files { + File *fileList; + SInt32 fileCount; +} Files; + +typedef struct VFile { + char displayName[32]; + Handle data; + struct VFile *next; +} VFile; + +enum { + LinkModel0 = 0, + LinkModel1 = 1, + LinkModel2 = 2 +}; + +typedef struct Target { + struct BuildInfo { + UInt32 linesCompiled; + UInt32 codeSize; + UInt32 iDataSize; + UInt32 uDataSize; + } info; + CWTargetInfo *targetinfo; + struct { + Segments segs; + Overlays overlays; + } linkage; + SInt32 linkmodel; + Files files; + Files pchs; + Incls incls; + Paths sysPaths; + Paths userPaths; + OSType lang; + OSType cpu; + OSType os; + char targetName[64]; + struct Plugin *preLinker; + struct Plugin *linker; + struct Plugin *postLinker; + UInt32 preLinkerDropinFlags; + UInt32 linkerDropinFlags; + UInt32 postLinkerDropinFlags; + OSPathSpec outputDirectory; + VFile *virtualFiles; + struct Target *next; +} Target; + +typedef struct Project { + Target *targets; + OSSpec projectDirectory; +} Project; + +enum { + CLStyledMessageDispatch_Type0 = 0, + CLStyledMessageDispatch_Type1 = 1, + CLStyledMessageDispatch_Type2 = 2, + CLStyledMessageDispatch_Type3 = 3, + CLStyledMessageDispatch_Type4 = 4, + CLStyledMessageDispatch_Type5 = 5 +}; + +enum { + IncludeSearch_Type0 = 0, + IncludeSearch_Type1 = 1, + IncludeSearch_Type2 = 2, + IncludeSearch_Type3 = 3, + IncludeSearch_Type4 = 4 +}; + +typedef struct PrefPanel PrefPanel; + +typedef struct Plugin { + BasePluginCallbacks *cb; + CompilerLinkerPluginCallbacks *cl_cb; + ParserPluginCallbacks *pr_cb; + CWPluginContext context; + char *cached_ascii_version; + struct Plugin *next; +} Plugin; + +/********************************/ +/* State */ +typedef struct { + int argc; + char **argv; + OSType cpu; + OSType os; + OSType plugintype; + OSType language; + OSType parserstyle; + OSSpec programSpec; + const char *programName; + SInt16 countWarnings; + SInt16 countErrors; + Boolean pluginDebug; + Boolean userBreak; + Boolean withholdWarnings; + Boolean withholdErrors; + OSSpec makefileSpec; + OSPathSpec sbmPathSpec; + OSHandle browseTableHandle; + char *stdout_base; + Boolean stdout_written; +} CLState; // assumed name + +extern char cmdline_build_time[32]; +extern char cmdline_build_date[32]; +extern CLState clState; +extern PCmdLineLinker optsLinker; +extern PCmdLineCompiler optsCompiler; +extern PCmdLineEnvir optsEnvir; +extern PCmdLine optsCmdLine; +extern Target *gTarg; +extern Project mainProj; +extern CWCommandLineArgs *plugin_args; +extern CWCommandLineArgs *panel_args; +extern const char **panelNames; +extern int numPanels; +extern CLPluginInfo *pluginInfo; +extern int numPlugins; +extern jmp_buf exit_program; + +/********************************/ +/* Callbacks/CLParserCallbacks_V1.cpp */ +extern int (*PrefPanelsChangedCallback)(const char *); + +/********************************/ +/* Clients/ClientGlue.c */ +extern int RegisterResource(const char *name, SInt16 rsrcid, const char **list); +extern int RegisterStaticPlugin(const BasePluginCallbacks *callbacks); +extern int RegisterStaticCompilerLinkerPlugin(const BasePluginCallbacks *callbacks, const CompilerLinkerPluginCallbacks *cl_callbacks); +extern int RegisterStaticParserPlugin(const BasePluginCallbacks *cb, const ParserPluginCallbacks *pr_callbacks); +extern void SetBuildTarget(OSType cpu, OSType os); +extern void SetParserType(OSType plang); +extern void SetPluginType(OSType lang, OSType type); +extern int CmdLine_Initialize(int argc, char **argv, const char *builddate, const char *buildtime); +extern int CmdLine_Driver(); +extern int CmdLine_Terminate(int exitcode); + +/********************************/ +/* Envir/CLErrors.c */ +extern void CLReportError(SInt16 errid, ...); +extern void CLReportWarning(SInt16 errid, ...); +extern void CLReport(SInt16 errid, ...); +extern void CLReportOSError(SInt16 errid, int err, ...); +extern void CLReportCError(SInt16 errid, int err_no, ...); +extern void CLInternalError(const char *file, int line, const char *format, ...); +extern void CLFatalError(const char *format, ...); + +/********************************/ +/* Envir/CLIO.c */ +extern void SetupDebuggingTraps(); +extern Boolean IO_Initialize(); +extern Boolean IO_Terminate(); +extern Boolean IO_HelpInitialize(); +extern Boolean IO_HelpTerminate(); +extern void FixHandleForIDE(Handle text, UInt32 size); +extern Boolean ShowHandle(Handle text, UInt32 size, Boolean decorate); +extern Boolean WriteHandleToFile(OSSpec *spec, Handle text, UInt32 size, OSType creator, OSType type); +extern Boolean WriteBinaryHandleToFile(OSSpec *spec, OSType maccreator, OSType mactype, OSHandle *text); +extern Boolean AppendHandleToFile(OSSpec *spec, Handle text, UInt32 size, OSType maccreator, OSType mactype); +extern void InitWorking(); +extern void ShowWorking(int x); +extern void TermWorking(); +extern Boolean CheckForUserBreak(); +extern char *IO_FormatText(char *buffer, SInt32 size, char *newline, const char *format, ...); +extern void CLPrintDispatch(int unk, SInt16 msgtype, const char *message); +extern void CLPrintType(SInt16 msgtype, const char *format, ...); +extern void CLPrint(const char *format, ...); +extern void CLPrintWarning(const char *format, ...); +extern void CLPrintErr(const char *format, ...); +extern SInt16 CLStyledMessageDispatch(Plugin *plugin, MessageRef *ref, SInt32 errorNumber, SInt16 msgType, const char *format, ...); + +/********************************/ +/* Plugins/CLPlugins.c */ +extern const ToolVersionInfo *Plugin_GetToolVersionInfo(); +extern const char *Plugin_GetDropInName(Plugin *pl); +extern const VersionInfo *Plugin_GetVersionInfo(Plugin *pl); +extern char *Plugin_GetVersionInfoASCII(Plugin *pl); +extern DropInFlags *Plugin_GetDropInFlags(Plugin *pl); +extern OSType Plugin_GetPluginType(Plugin *pl); +extern const CWTargetList *Plugin_CL_GetTargetList(Plugin *pl); +extern const CWPanelList *Plugin_GetPanelList(Plugin *pl); +extern const CWExtMapList *Plugin_CL_GetExtMapList(Plugin *pl); +extern const OSFileTypeMappingList *Plugin_GetFileTypeMappingList(Plugin *pl); +extern const CWObjectFlags *Plugin_CL_GetObjectFlags(Plugin *pl); +extern Boolean Plugin_MatchesName(Plugin *pl, const char *name); +extern Boolean Plugin_CL_MatchesTarget(Plugin *pl, OSType cpu, OSType os, Boolean exact); +extern Boolean Plugins_CL_HaveMatchingTargets(Plugin *p1, Plugin *p2, Boolean exact); +extern Boolean Plugin_CL_MatchesFileType(Plugin *pl, OSType type, const char *extension, Boolean exact); +extern Boolean Plugin_MatchesType(Plugin *pl, OSType type, OSType lang, Boolean exact); +extern Boolean Plugin_Pr_MatchesPlugin(Plugin *pl, CLPluginInfo *pluginfo, OSType cpu, OSType os); +extern Boolean Plugin_Pr_MatchesPanels(Plugin *pl, int numPanels, const char **panelNames); +extern Boolean Plugin_CL_WriteObjectFile(Plugin *pl, FSSpec *srcfss, FSSpec *outfss, OSType creator, OSType type, Handle data); +extern Boolean Plugin_CL_GetCompilerMapping(Plugin *pl, OSType type, const char *ext, UInt32 *flags); +extern Plugin *Plugin_New(const BasePluginCallbacks *cb, const CompilerLinkerPluginCallbacks *cl_cb, const ParserPluginCallbacks *pr_cb); +extern void Plugin_Free(Plugin *pl); +extern Boolean Plugin_VerifyPanels(Plugin *pl); +extern void Plugins_Init(); +extern void Plugins_Term(); +extern int Plugins_Add(Plugin *pl); +extern Plugin *Plugins_MatchName(Plugin *list, const char *name); +extern Plugin *Plugins_CL_MatchTarget(Plugin *list, OSType cpu, OSType os, OSType type, OSType lang); +extern Plugin *Plugins_CL_MatchFileType(Plugin *list, OSType type, const char *ext, Boolean exact); +extern Plugin *Plugins_GetPluginForFile(Plugin *list, OSType plugintype, OSType cpu, OSType os, OSType type, const char *ext, OSType lang); +extern Plugin *Plugins_GetLinker(Plugin *list, OSType cpu, OSType os); +extern Plugin *Plugins_GetPreLinker(Plugin *list, OSType cpu, OSType os); +extern Plugin *Plugins_GetPostLinker(Plugin *list, OSType cpu, OSType os); +extern Plugin *Plugins_GetParserForPlugin(Plugin *list, OSType style, int numPlugins, CLPluginInfo *plugins, OSType cpu, OSType os, int numPanels, const char **panelNames); +extern Plugin *Plugins_GetCompilerForLinker(Plugin *list, Plugin *linker, OSType type, const char *ext, OSType edit); +extern int Plugins_GetPluginList(Plugin *list, int *numPlugins, CLPluginInfo **pluginInfo); +extern int Plugins_GetPrefPanelUnion(Plugin *list, int *numPanels, const char ***panelNames); +extern int Plugin_AddFileTypeMappings(Plugin *pl, OSFileTypeMappings **mlist); +extern int Plugins_AddFileTypeMappingsForTarget(Plugin *list, OSFileTypeMappings **mlist, OSType cpu, OSType os); +extern SInt16 Plugin_Call(Plugin *pl, void *context); + +/********************************/ +/* Project/CLAccessPaths.c */ +extern Path *Path_Init(const OSPathSpec *dir, Path *path); +extern Path *Path_New(const OSPathSpec *dir); +extern void Path_Free(Path *path); +extern Boolean Paths_Initialize(Paths *paths); +extern Boolean Paths_Terminate(Paths *paths); +extern Boolean Paths_AddPath(Paths *paths, Path *path); +extern Boolean Paths_InsertPath(Paths *paths, UInt16 index, Path *path); +extern Boolean Paths_RemovePath(Paths *paths, UInt16 index); +extern Boolean Paths_DeletePath(Paths *paths, UInt16 index); +extern Path *Paths_GetPath(Paths *paths, UInt16 pathnum); +extern UInt16 Paths_Count(const Paths *paths); +extern Boolean Paths_FindPath(const Paths *paths, const Path *path); +extern Path *Paths_FindPathSpec(const Paths *paths, const OSPathSpec *dir); +extern Boolean Paths_GatherRecurse(Path *path); +extern int Paths_CountRecurse(Paths *paths); +extern void Paths_CopyRecurseFSS(FSSpec *list, Paths *paths, UInt16 count); +extern Boolean MakeFrameworkPath(char *out, const char *filename, Path *globalpath); +extern void Frameworks_AddPath(const OSPathSpec *oss); +extern int Frameworks_AddFramework(const char *name, const char *version, Boolean hidden); +extern void Framework_GetEnvInfo(); +extern int Frameworks_GetCount(); +extern Paths_FWInfo *Frameworks_GetInfo(int which); + +// Not sure if this is the right TU for this +extern Paths FrameworkPaths; + +/********************************/ +/* Project/CLFiles.c */ +extern File *File_New(); +extern void File_Free(File *file); +extern Boolean Files_Initialize(Files *); +extern Boolean Files_Terminate(Files *); +extern Boolean Files_AddFile(Files *, File *file); +extern Boolean Files_InsertFile(Files *, File *file, SInt32 position); +extern File *Files_GetFile(Files *, SInt32 filenum); +extern File *Files_FindFile(Files *, OSSpec *spec); +extern int Files_Count(Files *); +extern Boolean VFiles_Initialize(VFile **list); +extern void VFiles_Terminate(VFile **list); +extern VFile *VFile_New(const char *name, Handle data); +extern Boolean VFiles_Add(VFile **list, VFile *entry); +extern VFile *VFiles_Find(VFile *list, const char *name); + +/********************************/ +/* Project/CLOverlays.c */ +extern Boolean Overlays_Initialize(Overlays *); +extern Boolean Overlays_Terminate(Overlays *); +extern Boolean Overlays_AddOvlGroup(Overlays *, OvlGroup *grp, SInt32 *grpnum); +extern OvlGroup *Overlays_GetOvlGroup(Overlays *, SInt32 grpnum); +extern SInt32 Overlays_CountGroups(Overlays *); +extern Boolean Overlays_AddFileToOverlay(Overlays *, SInt32 grpnum, SInt32 ovlnum, SInt32 filenum); +extern Overlay *Overlays_GetOverlayInGroup(Overlays *, SInt32 grpnum, SInt32 ovlnum); +extern SInt32 Overlays_GetFileInOverlay(Overlays *, SInt32 grpnum, SInt32 ovlnum, SInt32 filnum); +extern OvlGroup *OvlGroup_New(const char *name, OvlAddr addr); +extern void OvlGroup_Delete(OvlGroup *grp); +extern Boolean OvlGroup_AddOverlay(OvlGroup *, Overlay *oly, SInt32 *olynum); +extern Overlay *OvlGroup_GetOverlay(OvlGroup *, SInt32 olynum); +extern SInt32 OvlGroup_CountOverlays(OvlGroup *); +extern Overlay *Overlay_New(const char *name); +extern void Overlay_Delete(Overlay *oly); +extern Boolean Overlay_AddFile(Overlay *oly, SInt32 filenum, SInt32 *filnum); +extern SInt32 Overlay_GetFile(Overlay *oly, SInt32 filnum); +extern SInt32 Overlay_CountFiles(Overlay *oly); + +/********************************/ +/* Project/CLProj.c */ +extern Boolean Proj_Initialize(Project *); +extern Boolean Proj_Terminate(Project *); + +/********************************/ +/* Project/CLSegs.c */ +extern Segment *Segment_New(const char *name, UInt16 attrs); +extern void Segment_Free(Segment *seg); +extern Boolean Segments_Initialize(Segments *segs); +extern Boolean Segments_Terminate(Segments *segs); +extern Boolean Segments_AddSegment(Segments *segs, Segment *seg, UInt16 *index); +extern Boolean Segments_InsertSegment(Segments *segs, UInt16 index, Segment *seg); +extern Boolean Segments_DeleteSegment(Segments *segs, UInt16 index); +extern Segment *Segments_GetSegment(Segments *segs, UInt16 segnum); +extern UInt16 Segments_Count(const Segments *segs); + +/********************************/ +/* CLBrowser.c */ +extern int Browser_Initialize(OSHandle *browsetableptr); +extern int Browser_Terminate(OSHandle *browsetableptr); +extern int Browser_SearchFile(OSHandle *browsetable, const char *fullpath, SInt16 *ID); +extern int Browser_SearchAndAddFile(OSHandle *browsetable, const char *fullpath, SInt16 *ID); +extern int Browser_PackBrowseFile(Handle browsedata, OSHandle *browsetable, OSHandle *browsefileptr); + +/********************************/ +/* CLDependencies.c */ +extern SInt16 *CLT_filesp; +extern CPrepFileInfoStack *CLT_filestack; + +extern Boolean Incls_Initialize(Incls *incls, Target *targ); +extern void Incls_Terminate(Incls *incls); +extern Boolean Incls_FindFileInPaths(Incls *incls, char *filename, Boolean fullsearch, OSSpec *spec, SInt32 *inclidx); +extern Boolean Deps_Initialize(Deps *deps, Incls *incls); +extern void Deps_Terminate(Deps *deps); +extern int Deps_ChangeSpecialAccessPath(OSSpec *srcfss, Boolean initialize); +extern Path *Deps_GetSpecialAccessPath(); +extern void Deps_AddDependency(Deps *deps, SInt32 incl, OSSpec *spec, Boolean unk, SInt16 dependencyType, Boolean *alreadyincluded); +extern void Deps_ListDependencies(Incls *incls, File *file, OSHandle *h); + +/********************************/ +/* CLFileOps.c */ +extern int GetOutputFile(File *file, SInt16 stage); +extern int StoreObjectFile(File *file); +extern int CompileFilesInProject(); +extern int LinkProject(); + +/********************************/ +/* CLIncludeFileCache.c */ +extern void InitializeIncludeCache(); +extern void CleanupIncludeCache(); +extern void CacheIncludeFile(OSSpec *spec, Handle text, Boolean precompiled); +extern Handle CachedIncludeFile(OSSpec *spec, Boolean *precompiled); +extern void FreeIncludeFile(Handle text); + +/********************************/ +/* CLLicenses.c */ +extern void License_Initialize(); +extern void License_Terminate(); +extern SInt32 License_Checkout(); +extern void License_Refresh(); +extern void License_Checkin(); +extern void License_AutoCheckin(); + +/********************************/ +/* CLLoadAndCache.c */ +extern short FixTextHandle(Handle txt); +extern int LoadAndCacheFile(OSSpec *spec, Handle *texthandle, Boolean *precomp); +extern void CopyFileText(Handle src, char **text, SInt32 *textsize); + +/********************************/ +/* CLMain.c */ +extern void Main_PreParse(int *argc, char ***argv); +extern void Main_PassSpecialArgs(int *argc, char ***argv); +extern int Main_Initialize(int argc, char **argv); +extern int Main_Terminate(int code); +extern int Main_Driver(); + +/********************************/ +/* CLPluginRequests.cpp */ +extern Boolean SendParserRequest( + Plugin *plugin, + Target *target, + CWCommandLineArgs *args, + OSType cpu, + OSType os, + int numPlugins, + CLPluginInfo *pluginInfo, + int numPanels, + const char **panelNames, + CWCommandLineArgs *plugin_args, + CWCommandLineArgs *panel_args, + const char *build_date, + const char *build_time, + const ToolVersionInfo *build_tool +); +extern Boolean SendCompilerRequest(Plugin *plugin, File *file, SInt16 stage); +extern Boolean SendTargetInfoRequest(Target *targ, Plugin *linker, SInt32 dropinflags); +extern Boolean SendLinkerRequest(Plugin *plugin, SInt32 dropinflags, CWTargetInfo *targetInfo); +extern Boolean SendDisassemblerRequest(Plugin *linker, File *file); +extern Boolean SendInitOrTermRequest(Plugin *plugin, Boolean reqIsInitialize); + +/********************************/ +/* CLPrefs.c */ +extern PrefPanel *PrefPanel_New(const char *name, void *initdata, SInt32 initdatasize); +extern Handle PrefPanel_GetHandle(PrefPanel *panel); +extern int PrefPanel_PutHandle(PrefPanel *panel, Handle data); +extern void Prefs_Initialize(); +extern void Prefs_Terminate(); +extern Boolean Prefs_AddPanel(PrefPanel *panel); +extern PrefPanel *Prefs_FindPanel(const char *name); + +/********************************/ +/* CLTarg.c */ +extern Target *Target_New(const char *name, OSType cpu, OSType os, OSType lang); +extern void Target_Free(Target *targ); +extern void Targets_Term(Target *list); +extern void Target_Add(Target **list, Target *targ); + +/********************************/ +/* CLToolExec.c */ +extern void AppendArgumentList(int *argc, char ***argv, const char *str); +extern int SetupTemporaries(); +extern int DeleteTemporaries(); +extern int ExecuteLinker(Plugin *plugin, SInt32 dropinflags, File *file, char *stdoutfile, char *stderrfile); + +/********************************/ +/* CLWriteObjectFile.c */ +extern int WriteObjectFile(File *file, OSType maccreator, OSType mactype); +extern int WriteBrowseData(File *file, OSType maccreator, OSType mactype); + +/********************************/ +/* Unknown name - provisionally named uFileTypeMappings.c */ +extern void AddFileTypeMappingList(OSFileTypeMappings **list, const OSFileTypeMappingList *entry); +extern void UseFileTypeMappings(OSFileTypeMappings *list); +extern OSErr SetMacFileType(const FSSpec *spec, OSType mactype); +extern OSErr GetMacFileType(const FSSpec *spec, OSType *mactype); + +#ifdef __cplusplus +} +#endif |