summaryrefslogtreecommitdiff
path: root/includes/cmdline.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/cmdline.h')
-rw-r--r--includes/cmdline.h749
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