6 PROJECTDIR
= os
.path
.join(sys
.prefix
, ":Mac:Build")
7 MODULEDIRS
= [ # Relative to projectdirs
13 # Global variable to control forced rebuild (otherwise the project is only rebuilt
17 def relpath(base
, path
):
18 """Turn abs path into path relative to another. Only works for 2 abs paths
19 both pointing to folders"""
20 if not os
.path
.isabs(base
) or not os
.path
.isabs(path
):
21 raise 'Absolute paths only'
24 basefields
= string
.split(base
, os
.sep
)
25 pathfields
= string
.split(path
, os
.sep
)
26 commonfields
= len(os
.path
.commonprefix((basefields
, pathfields
)))
27 basefields
= basefields
[commonfields
:]
28 pathfields
= pathfields
[commonfields
:]
29 pathfields
= ['']*(len(basefields
)+1) + pathfields
30 rv
= string
.join(pathfields
, os
.sep
)
33 def genpluginproject(architecture
, module
,
34 project
=None, projectdir
=None,
35 sources
=[], sourcedirs
=[],
36 libraries
=[], extradirs
=[],
37 extraexportsymbols
=[]):
38 if architecture
== "all":
39 # For the time being we generate two project files. Not as nice as
40 # a single multitarget project, but easier to implement for now.
41 genpluginproject("ppc", module
, project
, projectdir
, sources
, sourcedirs
,
42 libraries
, extradirs
, extraexportsymbols
)
43 genpluginproject("carbon", module
, project
, projectdir
, sources
, sourcedirs
,
44 libraries
, extradirs
, extraexportsymbols
)
46 templatename
= "template-%s" % architecture
47 targetname
= "%s.%s" % (module
, architecture
)
48 dllname
= "%s.%s.slb" % (module
, architecture
)
50 if architecture
!= "ppc":
51 project
= "%s.%s.mcp"%(module
, architecture
)
53 project
= "%s.mcp"%module
55 projectdir
= PROJECTDIR
57 sources
= [module
+ 'module.c']
59 for moduledir
in MODULEDIRS
:
61 moduledir
= moduledir
% module
62 fn
= os
.path
.join(projectdir
, os
.path
.join(moduledir
, sources
[0]))
63 if os
.path
.exists(fn
):
64 moduledir
, sourcefile
= os
.path
.split(fn
)
65 sourcedirs
= [relpath(projectdir
, moduledir
)]
66 sources
[0] = sourcefile
69 print "Warning: %s: sourcefile not found: %s"%(module
, sources
[0])
71 if architecture
== "carbon":
72 prefixname
= "mwerks_carbonplugin_config.h"
74 prefixname
= "mwerks_plugin_config.h"
76 "sysprefix" : relpath(projectdir
, sys
.prefix
),
78 "extrasearchdirs" : sourcedirs
+ extradirs
,
79 "libraries": libraries
,
80 "mac_outputdir" : "::Plugins",
81 "extraexportsymbols" : extraexportsymbols
,
82 "mac_targetname" : targetname
,
83 "mac_dllname" : dllname
,
84 "prefixname" : prefixname
,
86 mkcwproject
.mkproject(os
.path
.join(projectdir
, project
), module
, dict,
87 force
=FORCEREBUILD
, templatename
=templatename
)
89 def genallprojects(force
=0):
92 # Standard Python modules
93 genpluginproject("all", "pyexpat",
94 sources
=["pyexpat.c"],
95 libraries
=["libexpat.ppc.lib"],
96 extradirs
=["::::expat:*"])
97 genpluginproject("all", "zlib",
98 libraries
=["zlib.ppc.Lib"],
99 extradirs
=["::::imglibs:zlib:mac", "::::imglibs:zlib"])
100 genpluginproject("all", "gdbm",
101 libraries
=["gdbm.ppc.gusi.lib"],
102 extradirs
=["::::gdbm:mac", "::::gdbm"])
103 genpluginproject("all", "_weakref", sources
=["_weakref.c"])
104 genpluginproject("all", "_symtable", sources
=["symtablemodule.c"])
105 genpluginproject("all", "_testcapi")
107 # bgen-generated Toolbox modules
108 genpluginproject("ppc", "App", libraries
=["AppearanceLib"])
109 genpluginproject("carbon", "App")
110 ## genpluginproject("ppc", "Cm",
111 ## libraries=["QuickTimeLib"],
112 ## extraexportsymbols=[
116 ## "CmpInstObj_Convert",
118 ## genpluginproject("carbon", "Cm",
119 ## extraexportsymbols=[
123 ## "CmpInstObj_Convert",
125 genpluginproject("ppc", "Cm", libraries
=["QuickTimeLib"])
126 genpluginproject("carbon", "Cm")
127 genpluginproject("all", "Fm")
128 genpluginproject("ppc", "Help")
129 genpluginproject("ppc", "Icn", libraries
=["IconServicesLib"])
130 genpluginproject("carbon", "Icn")
131 genpluginproject("all", "List")
132 ## genpluginproject("ppc", "Qt", libraries=["QuickTimeLib", "Cm.ppc.slb", "Qdoffs.ppc.slb"],
133 ## extradirs=["::Plugins"])
134 genpluginproject("ppc", "Qt", libraries
=["QuickTimeLib"])
135 ## genpluginproject("carbon", "Qt", libraries=["Cm.carbon.slb", "Qdoffs.carbon.slb"],
136 ## extradirs=["::Plugins"])
137 genpluginproject("carbon", "Qt")
138 ## genpluginproject("all", "Qdoffs",
139 ## extraexportsymbols=["GWorldObj_New", "GWorldObj_Convert"])
140 genpluginproject("all", "Qdoffs")
141 genpluginproject("all", "Scrap")
142 genpluginproject("ppc", "Snd", libraries
=["SoundLib"])
143 genpluginproject("carbon", "Snd")
144 genpluginproject("all", "Sndihooks", sources
=[":snd:Sndihooks.c"])
145 genpluginproject("ppc", "TE", libraries
=["DragLib"])
146 genpluginproject("carbon", "TE")
147 genpluginproject("ppc", "Mlte", libraries
=["Textension"])
148 genpluginproject("carbon", "Mlte")
151 genpluginproject("carbon", "CF")
154 genpluginproject("all", "calldll", sources
=["calldll.c"])
155 genpluginproject("all", "ColorPicker")
156 genpluginproject("ppc", "Printing")
157 genpluginproject("ppc", "waste",
160 'WEAccessors.c', 'WEBirthDeath.c', 'WEDebug.c',
161 'WEDrawing.c', 'WEFontTables.c', 'WEHighLevelEditing.c',
162 'WEICGlue.c', 'WEInlineInput.c', 'WELineLayout.c', 'WELongCoords.c',
163 'WELowLevelEditing.c', 'WEMouse.c', 'WEObjects.c', 'WEScraps.c',
164 'WESelecting.c', 'WESelectors.c', 'WEUserSelectors.c', 'WEUtilities.c',
165 'WEObjectHandlers.c',
168 libraries
=['DragLib'],
170 '::::Waste 1.3 Distribution:*',
171 '::::ICProgKit1.4:APIs']
173 # This is a hack, combining parts of Waste 2.0 with parts of 1.3
174 genpluginproject("carbon", "waste",
177 "WEObjectHandlers.c",
178 "WETabs.c", "WETabHooks.c"],
179 libraries
=["WASTE.Carbon.lib"],
181 '{Compiler}:MacOS Support:(Third Party Support):Waste 2.0 Distribution:C_C++ Headers',
182 '{Compiler}:MacOS Support:(Third Party Support):Waste 2.0 Distribution:Static Libraries',
183 '::::Waste 1.3 Distribution:Extras:Sample Object Handlers',
184 '::::Waste 1.3 Distribution:Extras:Waste Tabs 1.3.2']
186 genpluginproject("ppc", "ctb")
187 genpluginproject("ppc", "icglue", sources
=["icgluemodule.c"],
188 libraries
=["ICGlueCFM-PPC.lib"],
189 extradirs
=["::::ICProgKit1.4:APIs"])
190 genpluginproject("carbon", "icglue", sources
=["icgluemodule.c"],
191 extradirs
=["::::ICProgKit1.4:APIs"])
192 genpluginproject("ppc", "macspeech", libraries
=["SpeechLib"])
194 if __name__
== '__main__':