diff options
Diffstat (limited to 'Mac/Lib/mkcwproject/cwxmlgen.py')
-rw-r--r-- | Mac/Lib/mkcwproject/cwxmlgen.py | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/Mac/Lib/mkcwproject/cwxmlgen.py b/Mac/Lib/mkcwproject/cwxmlgen.py deleted file mode 100644 index 3d3e4b2..0000000 --- a/Mac/Lib/mkcwproject/cwxmlgen.py +++ /dev/null @@ -1,142 +0,0 @@ -# First attempt at automatically generating CodeWarior projects -import os -import MacOS -import string - -Error="gencwproject.Error" -# -# These templates are executed in-order. -# -TEMPLATELIST= [ - ("tmp_allsources", "file", "template-allsources.xml", "sources"), - ("tmp_linkorder", "file", "template-linkorder.xml", "sources"), - ("tmp_grouplist", "file", "template-grouplist.xml", "sources"), - ("tmp_alllibraries", "file", "template-alllibraries.xml", "libraries"), - ("tmp_linkorderlib", "file", "template-linkorderlib.xml", "libraries"), - ("tmp_grouplistlib", "file", "template-grouplistlib.xml", "libraries"), - ("tmp_extrasearchdirs", "file", "template-searchdirs.xml", "extrasearchdirs"), - ("tmp_projectxmldata", "file", "template.prj.xml", None) -] - -class ProjectBuilder: - def __init__(self, dict, templatelist=TEMPLATELIST, templatename=None): - self._adddefaults(dict) - if templatename == None: - if hasattr(MacOS, 'runtimemodel'): - templatename = 'template-%s'%MacOS.runtimemodel - else: - templatename = 'template' - if os.sep in templatename: - templatedir = templatename - else: - try: - packagedir = os.path.split(__file__)[0] - except NameError: - packagedir = os.curdir - templatedir = os.path.join(packagedir, templatename) - if not os.path.exists(templatedir): - raise Error, "Cannot find templatedir %s"%templatedir - self.dict = dict - if not dict.has_key('prefixname'): - if hasattr(MacOS, 'runtimemodel') and MacOS.runtimemodel == "carbon": - dict['prefixname'] = 'mwerks_shcarbon_pch' - else: - dict['prefixname'] = 'mwerks_plugin_config.h' - self.templatelist = templatelist - self.templatedir = templatedir - - def _adddefaults(self, dict): - # Set all suitable defaults set for values which were omitted. - if not dict.has_key('mac_outputdir'): - dict['mac_outputdir'] = ':lib:' - if not dict.has_key('stdlibraryflags'): - dict['stdlibraryflags'] = 'Debug' - if not dict.has_key('libraryflags'): - dict['libraryflags'] = 'Debug' - if not dict.has_key('initialize'): - dict['initialize'] = '__initialize' - if not dict.has_key('mac_sysprefixtype'): - if os.path.isabs(dict['sysprefix']): - dict['mac_sysprefixtype'] = 'Absolute' - else: - dict['mac_sysprefixtype'] = 'Project' # XXX not sure this is right... - - def generate(self): - for tmpl in self.templatelist: - self._generate_one_template(tmpl) - - def _generate_one_template(self, tmpl): - resultname, datasource, dataname, key = tmpl - result = '' - if key: - # This is a multi-element rule. Run for every item in dict[key] - if self.dict.has_key(key): - keyvalues = self.dict[key] - try: - if not type(keyvalues) in (type(()), type([])): - raise Error, "List or tuple expected for %s"%key - for curkeyvalue in keyvalues: - if string.lower(curkeyvalue[:10]) == '{compiler}': - curkeyvalue = curkeyvalue[10:] - self.dict['pathtype'] = 'CodeWarrior' - elif string.lower(curkeyvalue[:9]) == '{project}': - curkeyvalue = curkeyvalue[9:] - self.dict['pathtype'] = 'Project' - elif curkeyvalue[0] == '{': - raise Error, "Unknown {} escape in %s"%curkeyvalue - elif os.path.isabs(curkeyvalue): - self.dict['pathtype'] = 'Absolute' - else: - self.dict['pathtype'] = 'Project' - if curkeyvalue[-2:] == ':*': - curkeyvalue = curkeyvalue[:-2] - self.dict['recursive'] = 'true' - else: - self.dict['recursive'] = 'false' - self.dict[key] = curkeyvalue - curkeyvalueresult = self._generate_one_value(datasource, dataname) - result = result + curkeyvalueresult - finally: - # Restore the list - self.dict[key] = keyvalues - self.dict['pathtype'] = None - del self.dict['pathtype'] - self.dict['recursive'] = None - del self.dict['recursive'] - else: - # Not a multi-element rule. Simply generate - result = self._generate_one_value(datasource, dataname) - # And store the result - self.dict[resultname] = result - - def _generate_one_value(self, datasource, dataname): - if datasource == 'file': - filepath = os.path.join(self.templatedir, dataname) - fp = open(filepath, "r") - format = fp.read() - elif datasource == 'string': - format = dataname - else: - raise Error, 'Datasource should be file or string, not %s'%datasource - return format % self.dict - -def _test(): - dict = { - "mac_projectxmlname" : "controlstrip.prj.xml", # The XML filename (full path) - "mac_exportname" : "controlstrip.prj.exp", # Export file (relative to project) - "mac_outputdir" : ":", # The directory where the DLL is put (relative to project) - "mac_dllname" : "controlstrip.ppc.slb", # The DLL filename (within outputdir) - "mac_targetname" : "controlstrip.ppc", # The targetname within the project - "sysprefix" : sys.prefix, # Where the Python sources live - "mac_sysprefixtype" : "Absolute", # Type of previous pathname - "sources" : ["controlstripmodule.c"], - "extrasearchdirs": [], # -I and -L, in unix terms - } - pb = ProjectBuilder(dict) - pb.generate() - fp = open(dict["mac_projectxmlname"], "w") - fp.write(dict["tmp_projectxmldata"]) - -if __name__ == '__main__': - _test() - |