summaryrefslogtreecommitdiff
path: root/sdk_hdrs/CompilerMapping.h
blob: 83376138951b3108bbe29751dba00ff03a1af14b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 *  CompilerMapping.h - File Type & Extension => Compiler Mapping for Metrowerks CodeWarrior�
 *
 *  Copyright � 1995 Metrowerks, Inc.  All rights reserved.
 *	
 */

#ifndef __COMPILERMAPPING_H__
#define __COMPILERMAPPING_H__

#ifdef __MWERKS__
#	pragma once
#endif

#ifndef __CWPLUGINS_H__
#include "CWPlugins.h"
#endif

#ifdef __MWERKS__
#pragma options align=mac68k
#endif

#ifdef	_MSC_VER
#pragma	pack(push,2)
#endif

#ifdef __cplusplus
	extern "C" {
#endif

#ifdef __cplusplus
	const CWDataType Lang_C_CPP		= CWFOURCHAR('c','+','+',' ');
	const CWDataType Lang_Pascal	= CWFOURCHAR('p','a','s','c');
	const CWDataType Lang_Rez		= CWFOURCHAR('r','e','z',' ');
	const CWDataType Lang_Java		= CWFOURCHAR('j','a','v','a');
	const CWDataType Lang_MISC		= CWFOURCHAR('\?','\?','\?','\?');
#else
	#define Lang_C_CPP			CWFOURCHAR('c','+','+',' ')
	#define Lang_Pascal			CWFOURCHAR('p','a','s','c')
	#define Lang_Rez			CWFOURCHAR('r','e','z',' ')
	#define Lang_Java			CWFOURCHAR('j','a','v','a')
	#define Lang_MISC			CWFOURCHAR('\?','\?','\?','\?')
#endif

/* Compiler flags, as used in member dropinflags of struct DropInFlags returned by compilers		*/
enum
{
	kGeneratescode   =  1L << 31,		/* this compiler generates code							*/
	kGeneratesrsrcs  =  1L << 30,		/* this compiler generates resources					*/
	kCanpreprocess   =  1L << 29,		/* this compiler can accept a Preprocess request		*/
	kCanprecompile   =  1L << 28,		/* this compiler can accept a Precompile request		*/
	kIspascal        =  1L << 27,		/* this is the pascal compiler							*/
	kCanimport       =  1L << 26,		/* this compiler needs the "Import Weak" popup			*/
	kCandisassemble  =  1L << 25,		/* this compiler can disassemble 						*/
	kPersistent      =  1L << 24,		/* keep the compiler resident except on context switches*/
    kCompAllowDupFileNames = 1L << 23,	/* allow multiple project files with the same name  	*/
    kCompMultiTargAware  =  1L << 22,	/* the compiler can be used with multiple targets		*/
	kIsMPAware		=  1L << 21,		/* the compiler can be run in an MP thread				*/
	kCompUsesTargetStorage = 1L << 20,	/* the compiler keeps storage per target				*/
	kCompEmitsOwnBrSymbols = 1L << 19,	/* browser info includes compiler-specific symbols		*/
	kCompAlwaysReload = 1L << 18,		/* always reload the compiler before request			*/
	kCompRequiresProjectBuildStartedMsg   = 1L << 17,  /*  Compiler listens for  project build started messages     */
	kCompRequiresTargetBuildStartedMsg = 1L << 16,     /*  Compiler listens for  target build started messages      */
	kCompRequiresSubProjectBuildStartedMsg = 1L << 15, /*  Compiler listens for  Sub project build started messages */
	kCompRequiresFileListBuildStartedMsg = 1L << 14,    /*  Compiler listens for  filelist build started messages    */  
	kCompReentrant = 1L << 13,			/* Compiler can use re-entrant DropIn and is re-entry safe */
	kCompSavesDbgPreprocess = 1 << 12,	/* Compiler will save preprocessed files for debugging needs */
	kCompRequiresTargetCompileStartedMsg = 1 << 11	/* Compiler listens for target compile started/ended messages */
	/* remaining flags are reserved for future use and should be zero-initialized				                    */
};

/* Compiler mapping flags, used in CompilerMapping.flags & CWExtensionMapping.flags		*/
typedef unsigned long CompilerMappingFlags;
enum
{
	kPrecompile = 1L << 31,		/* should this file type be Precompiled?				*/
	kLaunchable = 1L << 30,		/* can this file type be double-clicked on?				*/
	kRsrcfile   = 1L << 29,		/* does this file type contain resources for linking?	*/
	kIgnored    = 1L << 28		/* should files of this type be ignored during Make?	*/
	/* remaining flags are reserved for future use and should be zero-initialized		*/
};

/* Format of data in 'EMap' resource, or as returned by  a compiler's 							*/
/* GetExtensionMapping entry point																*/

typedef struct CWExtensionMapping {
	CWDataType		type;				/* MacOS file type, e.g. 'TEXT' or 0					*/
	char			extension[32];		/* file extension, e.g. .c/.cp/.pch or ""				*/
	CompilerMappingFlags flags;			/* see above											*/
} CWExtensionMapping;

#define kCurrentCWExtMapListVersion	1
#define kCurrentCWExtMapListResourceVersion 1

typedef struct CWExtMapList {
	short					version;
	short					nMappings;
	CWExtensionMapping*		mappings;
} CWExtMapList;

/* Format of data returned by GetTargetList entry point									*/

#define kCurrentCWTargetListVersion	1
#define kCurrentCWTargetListResourceVersion 1

typedef struct CWTypeList {
	short		count;
	CWDataType	items[1];
} CW_CPUList, CW_OSList;

typedef struct CWTargetList {
	short		version;
	short		cpuCount;
	CWDataType*	cpus;
	short		osCount;
	CWDataType*	oss;
} CWTargetList;

typedef struct CWTargetListResource {
	short		version;
	CW_CPUList	cpus;
	CW_OSList	oss;
} CWTargetListResource;


#ifdef __cplusplus
	}
#endif

#ifdef	_MSC_VER
#pragma	pack(pop,2)
#endif

#ifdef	__MWERKS__
#pragma options align=reset
#endif

#endif	/* __COMPILERMAPPING_H__ */