#pragma once #include "cw_common.h" #include "pref_structs.h" #include "option_system.h" enum { PRAGMA_FLAGS_0, PRAGMA_FLAGS_1 }; enum { PR_UNSET = 0, // this is the only one we know the name of (from asserts) PR_ON = 1, PR_OFF = 2, PR_AUTO = 3, PR_RESET = 4 }; typedef struct { void *value; const char *pragma; int flags; } Pragma; // assumed name enum { CLPStr0 = 0, CLPStr1 = 1, CLPStr2 = 2, CLPStr3 = 3, CLPStr4 = 4, CLPStr5 = 5, CLPStr6 = 6, CLPStr7 = 7, CLPStr8 = 8, CLPStr9 = 9, CLPStr10 = 10, CLPStr11 = 11, CLPStr12 = 12, CLPStr13 = 13, CLPStr14 = 14, CLPStr15 = 15, CLPStr16 = 16, CLPStr17 = 17, CLPStr18 = 18, CLPStr19_UnknownOptionX = 19, CLPStr20_UnknownOptionX_ExpectedOneOfX = 20, CLPStr21_OptionObsolete = 21, CLPStr22_OptionObsoleteWithHelp = 22, CLPStr23_OptionXSubstitutedWithX = 23, CLPStr24_OptionDeprecated = 24, CLPStr25_OptionDeprecatedWithHelp = 25, CLPStr26_OptionIgnored = 26, CLPStr27_OptionIgnoredWithText = 27, CLPStr28_WarningText = 28, CLPStr29_OptionHasNoEffect = 29, CLPStr30_OptionShouldNotBeSpecifiedMultipleTimes = 30, CLPStr31_OptionOverridesEffect = 31, CLPStr32_OptionOverridesEffectWithHelp = 32, CLPStr33_NoDefaultHandlerSetUpForX_Ignoring = 33, CLPStr34_ArgumentsExpected = 34, CLPStr35_TokenXNotExpected = 35, CLPStr36_UnexpectedAdditionalArgumentX = 36, CLPStr37 = 37, CLPStr38_NoHelpAvailableForOptionX = 38, CLPStr39 = 39, CLPStr40 = 40, CLPStr41 = 41, CLPStr42 = 42, CLPStr43 = 43, CLPStr44 = 44, CLPStr45 = 45, CLPStr46 = 46, CLPStr47 = 47, CLPStr48 = 48, CLPStr49 = 49, CLPStr50 = 50, CLPStr51 = 51, CLPStr52 = 52, CLPStr53 = 53, CLPStr54 = 54, CLPStr55 = 55, CLPStr56 = 56, CLPStr57 = 57, CLPStr58 = 58, CLPStr59 = 59, CLPStr60 = 60, CLPStr61 = 61, CLPStr62 = 62, CLPStr63 = 63, CLPStr64 = 64, CLPStr65 = 65, CLPStr66 = 66, CLPStr67 = 67, CLPStr68 = 68, CLPStr69 = 69, CLPStr70 = 70, CLPStr71 = 71, CLPStr72 = 72, CLPStr73 = 73, CLPStr74 = 74, CLPStr75 = 75, CLPStr76 = 76, CLPStr77 = 77, CLPStr78 = 78 }; // State typedef struct { char *name; void *ptr; SInt32 size; } PrefDataPanel; // assumed name typedef struct { OSType TYPE; OSType LANG; OSType CPU; OSType OS; int numPrefPanels; char **prefPanels; char *toolInfo; char *copyright; int numOptionLists; OptionList **optionLists; int numPrefDataPanels; PrefDataPanel *prefDataPanels; int (*PreParse)(void); int (*MidParse)(void); int (*PostParse)(void); } ParserTool; // assumed name typedef struct { struct CWPluginPrivateContext *context; char helpKey[64]; SInt32 helpFlags; UInt16 ioCols; UInt16 ioRows; CWCommandLineArgs *args; const ToolVersionInfo *toolVersion; int numPlugins; const CLPluginInfo *plugins; int numPanels; const char **panelNames; OSType cpu; OSType os; char lastoutputname[256]; SInt32 currentSegment; SInt32 currentOverlayGroup; SInt32 currentOverlay; int possibleFiles; int userSpecifiedFiles; int unusedFiles; Boolean hadAnyOutput; Boolean hadErrors; Boolean showHelp; Boolean underIDE; Boolean alwaysUsePaths; Boolean noOptions; Boolean printedVersion; Boolean passingArgs; Boolean disToFile; Boolean ppToFile; Boolean initBefore; Boolean weakImport; Boolean mergeIntoOutput; Boolean success; Boolean ignoreUnknown; UInt8 unused[2]; } ParseOptsType; // assumed name #ifdef __cplusplus extern "C" { #endif /********************************/ /* IO.c */ extern void ShowTextHandle(const char *description, Handle text); extern void ShowVersion(Boolean decorate); /********************************/ /* OptimizerHelpers.c */ extern Pragma irPragmas[]; extern int SetPragmaOptimizationsToUnspecified(const char *opt, void *, const char *, int); extern int SetOptFlags(const char *opt, void *str, const char *, int flags); extern int DisplayOptimizationOptions(const char *, void *, const char *, int); /********************************/ /* ParserErrors.c */ extern void CLPReportError_V(const char *format, va_list ap); extern void CLPReportWarning_V(const char *format, va_list ap); extern void CLPReport_V(const char *format, va_list ap); extern void CLPStatus_V(const char *format, va_list ap); extern void CLPAlert_V(const char *format, va_list ap); extern void CLPOSAlert_V(const char *format, SInt32 err, va_list ap); extern char *CLPGetErrorString(SInt16 errid, char *buffer); extern void CLPReportError(SInt16 errid, ...); extern void CLPReportWarning(SInt16 errid, ...); extern void CLPReport(SInt16 errid, ...); extern void CLPAlert(SInt16 errid, ...); extern void CLPOSAlert(SInt16 errid, SInt16 err, ...); extern void CLPProgress(SInt16 errid, ...); extern void CLPStatus(SInt16 errid, ...); extern void CLPFatalError(const char *format, ...); /********************************/ /* ParserFace.c */ extern const char *failedCallback; extern jmp_buf exit_plugin; extern ParseOptsType parseopts; extern Handle Parser_FindPrefPanel(const char *name); extern SInt32 Parser_StorePanels(struct CWPluginPrivateContext *context); extern CWPLUGIN_ENTRY (CWParser_GetDropInFlags)(const DropInFlags **flags, SInt32 *flagsSize); extern CWPLUGIN_ENTRY (CWParser_GetDropInName)(const char **dropinName); extern CWPLUGIN_ENTRY (CWParser_GetDisplayName)(const char **displayName); extern CWPLUGIN_ENTRY (CWParser_GetPanelList)(const CWPanelList **panelList); extern CWPLUGIN_ENTRY (CWParser_GetTargetList)(const CWTargetList **targetList); extern CWPLUGIN_ENTRY (CWParser_GetVersionInfo)(const VersionInfo **versioninfo); extern CWPLUGIN_ENTRY (Parser_SupportsPlugin)(const struct CLPluginInfo *pluginfo, OSType cpu, OSType os, Boolean *isSupported); extern CWPLUGIN_ENTRY (Parser_SupportsPanels)(int numPanels, const char **panelNames, Boolean *isSupported); extern CWPLUGIN_ENTRY (parser_main)(struct CWPluginPrivateContext *context); /********************************/ /* ParserGlue-mach-ppc-c.c */ extern PCmdLine pCmdLine; extern PCmdLineCompiler pCmdLineCompiler; extern PCmdLineLinker pCmdLineLinker; extern PFrontEndC pFrontEndC; extern PWarningC pWarningC; extern PGlobalOptimizer pGlobalOptimizer; extern PBackEnd pBackEnd; extern PDisassembler pDisassembler; extern PMachOLinker pLinker; extern PMachOProject pMachOProject; extern PCLTExtras pCLTExtras; /********************************/ /* ParserHelpers.c */ extern SInt16 lastStage; extern Boolean dashIMinusMovesPaths; extern Boolean usedDashIMinus; extern Boolean namingSysPaths; extern int FindFileInPath(const char *filename, OSSpec *fss); extern char *GetEnvVar(const char *name, Boolean warn, const char **match); extern int Opt_AddAccessPath(const char *opt, void *var, const char *arg, int flags); extern int Opt_AddFrameworkPath(const char *opt, void *var, const char *arg, int flags); extern int Opt_AddFramework(const char *opt, void *var, const char *arg, int flags); extern void ListParseMessage(void (*errprint)(const char *, va_list), const char *envvar, SInt16 id, ...); extern int AddAccessPathList(const char *list, char sep1, char sep2, int source, char *text, Boolean system, SInt32 position, Boolean recursive); extern int Opt_FindAndAddFile(const char *opt, void *var, const char *arg, int flags); extern int Opt_FindAndAddFileRef(const char *opt, void *var, const char *arg); extern int Opt_AddUnixLibraryFile(const char *opt, void *var, const char *arg); extern int AddFileList(const char *list, char sep1, char sep2, int source, char *text, SInt32 position); extern int IsFileInOutputDirectory(const OSSpec *file); extern void GetCFileNameInOutputDirectory(const char *input, char *name, int maxlen); extern void GetPFileNameInOutputDirectory(const char *input, unsigned char *name, int len); extern void AddStringLenToHandle(Handle *h, const char *str, int len); extern void AddStringToHandle(Handle *h, const char *str); extern int Opt_PrintVersion(const char *opt, void *var, const char *arg, int flags); extern void GetFirstSourceFilenameBase(char *buffer, char *defaul); extern int Opt_SavePrefs(const char *opt, void *var, const char *arg, int flags); extern int ParseNumber(const char *arg, Boolean emit_error, SInt32 *ret, const char **endptr); extern int Opt_MaybeMoveAccessPaths(const char *opt, void *var, const char *arg, int flags); /********************************/ /* ParserHelpers-cc.c */ extern Handle definesHandle; extern int Opt_AddStringToDefines(const char *opt, void *str, const char *param, int flags); extern int Opt_DefineSymbol(const char *var, const char *value); extern int Opt_UndefineSymbol(const char *opt, void *, const char *arg, int flags); extern int Opt_AddPrefixFile(const char *opt, void *handle, const char *filename, int flags); extern int Opt_PragmaTrueFalse(const char *, void *flag, const char *, int flags); extern int Opt_PragmaFalseTrue(const char *, void *flag, const char *, int flags); extern int Opt_PragmaOnOff(const char *, void *flag, const char *arg); extern int Opt_PragmaOffOn(const char *, void *flag, const char *arg); extern int SetupPragmas(const Pragma *pragmas); /********************************/ /* Projects.c */ extern int GetFileCount(void); extern void SetFileOutputName(SInt32 position, SInt16 which, char *outfilename); extern int AddFileToProject(OSSpec *oss, SInt16 which, char *outfilename, Boolean exists, SInt32 position); extern Boolean GetFileInfo(SInt32 position, OSSpec *spec, char *plugin); extern int AddAccessPath(OSPathSpec *oss, SInt16 type, SInt32 position, Boolean recursive); extern int MoveSystemPathsIntoUserList(void); extern void AddVirtualFile(const char *filename, Handle *text); extern void GetOutputFileDirectory(OSPathSpec *dir); extern void SetOutputFileDirectory(OSPathSpec *dir); extern void AddOverlayGroup(const char *name, CWAddr64 *addr, SInt32 *groupnum, SInt32 *overlaynum); extern void AddOverlay(SInt32 groupnum, const char *name, SInt32 *overlaynum); extern void AddSegment(const char *name, SInt16 attrs, SInt32 *segmentnum); extern void ChangeSegment(SInt32 segmentnum, const char *name, SInt16 attrs); extern int GetSegment(SInt32 segmentnum, char *name, SInt16 *attrs); /********************************/ /* TargetOptimizer-ppc-mach.c */ extern char schedule_ppc_default; extern int TargetSetOptFlags(short val, Boolean set); extern void TargetDisplayOptimizationOptions(Handle txt); extern void TargetSetPragmaOptimizationsToUnspecified(void); /********************************/ /* TargetWarningHelpers-ppc-cc.c */ extern Pragma warningPragmas[]; extern int TargetSetWarningFlags(short val, Boolean set); extern void TargetDisplayWarningOptions(Handle txt); /********************************/ /* Targets.c */ extern ParserTool *pTool; extern int SetParserToolInfo(ParserTool *tool); extern Boolean ParserToolMatchesPlugin(OSType type, OSType lang, OSType cpu, OSType os); extern Boolean ParserToolHandlesPanels(int numPanels, const char **panelNames); extern Boolean SetupParserToolOptions(void); /********************************/ /* ToolHelpers.c */ enum { OutputOrdering0 = 0, OutputOrdering1 = 1, OutputOrdering2 = 2 }; extern char linkerOutputFilename[256]; extern Boolean setLinkerOutputFilename; extern Boolean setOutputDirectory; extern SInt16 outputOrdering; extern int Opt_HandleOutputName(const char *opt, void *, const char *filename, int flags); extern int ValidateToolState(Boolean mustHaveFiles); extern void ToolReportMessage(SInt16 errid, SInt16 type, va_list va); extern void ToolReportWarning(SInt16 id, ...); extern void ToolReportError(SInt16 id, ...); extern void ToolReportOSError(SInt16 id, int err, ...); extern void ToolReportInfo(SInt16 id, ...); extern int Opt_DoNotLink(const char *opt, void *var, const char *arg); extern int Opt_IncreaseVerbosity(const char *opt, void *var, const char *arg, int flags); extern int Opt_SetStage(const char *opt, void *str, const char *arg, int flags); extern int Opt_RedirectStream(const char *opt, void *file, const char *filename); /********************************/ /* ToolHelpers-cc.c */ extern int Opt_DummyLinkerRoutine(const char *opt, void *, const char *, int); extern int Opt_DummyLinkerSettingRoutine(const char *var, const char *val); extern void FinishCompilerTool(void); /********************************/ /* Utils.c */ extern int my_tolower(char c); extern int my_isdigit(char c); extern int my_isalpha(char c); extern int my_isalnum(char c); extern int my_isxdigit(char c); extern char *Utils_SpellList(char *list, char *buffer, char opts); extern int Utils_CompareOptionString(const char *a, const char *b, int cased, int sticky); /********************************/ /* WarningHelpers.c */ extern int SetWarningFlags(const char *opt, void *str, const char *, int flags); extern int DisplayWarningOptions(const char *, void *, const char *, int); #ifdef __cplusplus extern "C" } #endif