From: Jack Jansen Date: Fri, 22 Sep 2000 23:26:55 +0000 (+0000) Subject: More bits and pieces of project generation. X-Git-Tag: v2.0b2~110 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=07642c3689edaaf04addb0853877bbd0938ecf7b;p=python More bits and pieces of project generation. --- diff --git a/Mac/Lib/mkcwproject/__init__.py b/Mac/Lib/mkcwproject/__init__.py new file mode 100644 index 0000000000..9664542a1c --- /dev/null +++ b/Mac/Lib/mkcwproject/__init__.py @@ -0,0 +1,59 @@ +import cwxmlgen +import cwtalker + +def mkproject(outputfile, modulename, settings): + # + # Copy the dictionary + # + dictcopy = {} + for k, v in settings.items(): + dictcopy[k] = v + # + # Fill in mac-specific values + # + dictcopy['mac_projectxmlname'] = outputfile + '.xml' + dictcopy['mac_exportname'] = os.path.split(outputfile)[1] + '.exp' + dictcopy['mac_outputdir'] = ':lib:' # XXX Is this correct?? + dictcopy['mac_dllname'] = modulename + '.ppc.slb' + dictcopy['mac_targetname'] = modulename + '.ppc' + of os.path.isabs(dictcopy['sysprefix']): + dictcopy['mac_sysprefixtype'] = 'Absolute' + else: + dictcopy['mac_sysprefixtype'] = 'Project' # XXX not sure this is right... + # + # Generate the XML for the project + # + xmlbuilder = cwxmlgen.ProjectBuilder(dictcopy) + xmlbuilder.generate() + fp = open(dictcopy['mac_projectxmlname'], "w") + fp.write(dict["tmp_projectxmldata"]) + fp.close() + # + # Generate the export file + # + fp = open(outputfile + '.exp', 'w') + fp.write('init%s\n'%modulename) + fp.close() + # + # Generate the project from the xml + # + cw = cwtalker.MyCodeWarrior(start=1) + cw.send_timeout = AppleEvents.kNoTimeOut + xmlfss = macfs.FSSpec(dictcopy['mac_projectxmlname']) + prjfss = macfs.FSSpec(outputfile) + cw.my_mkproject(prjfss, xmlfss) + +def buildproject(projectfile): + cw = cwtalker.MyCodeWarrior(start=1) + cw.send_timeout = AppleEvents.kNoTimeOut + prjfss = macfs.FSSpec(projectfile) + cw.open(prjfss) + cw.Make_Project() # XXX Should set target + +def cleanproject(projectfile): + cw = cwtalker.MyCodeWarrior(start=1) + cw.send_timeout = AppleEvents.kNoTimeOut + prjfss = macfs.FSSpec(projectfile) + cw.open(prjfss) + cw.Remove_Binaries() + diff --git a/Mac/Lib/mkcwproject/cwtalker.py b/Mac/Lib/mkcwproject/cwtalker.py new file mode 100644 index 0000000000..fbce6205a1 --- /dev/null +++ b/Mac/Lib/mkcwproject/cwtalker.py @@ -0,0 +1,26 @@ +import CodeWarrior + +class MyCodeWarrior(CodeWarrior.CodeWarrior): + # Bug in the CW OSA dictionary + def export(self, object, _attributes={}, **_arguments): + """export: Export the project file as an XML file + Keyword argument _in: the XML file in which to export the project + Keyword argument _attributes: AppleEvent attribute dictionary + """ + _code = 'CWIE' + _subcode = 'EXPT' + + aetools.keysubst(_arguments, self._argmap_export) + _arguments['----'] = _object + + + _reply, _arguments, _attributes = self.send(_code, _subcode, + _arguments, _attributes) + if _arguments.has_key('errn'): + raise aetools.Error, aetools.decodeerror(_arguments) + # XXXX Optionally decode result + if _arguments.has_key('----'): + return _arguments['----'] + + def my_mkproject(self, prjfile, xmlfile): + self.make(new=CodeWarrior.project_document, with_data=xmlfile, at=prjfile) diff --git a/Mac/Lib/mkcwproject/mkcwproject.py b/Mac/Lib/mkcwproject/cwxmlgen.py similarity index 76% rename from Mac/Lib/mkcwproject/mkcwproject.py rename to Mac/Lib/mkcwproject/cwxmlgen.py index 7889b76622..b29786f68a 100644 --- a/Mac/Lib/mkcwproject/mkcwproject.py +++ b/Mac/Lib/mkcwproject/cwxmlgen.py @@ -9,6 +9,7 @@ TEMPLATELIST= [ ("tmp_allsources", "file", "template-allsources.xml", "sources"), ("tmp_linkorder", "file", "template-linkorder.xml", "sources"), ("tmp_grouplist", "file", "template-grouplist.xml", "sources"), + ("tmp_extrasearchdirs", "file", "template-searchdirs.xml", "extrasearchdirs"), ("tmp_projectxmldata", "file", "template.prj.xml", None) ] @@ -66,11 +67,15 @@ class ProjectBuilder: def _test(): dict = { - "mac_projectxmlname" : "xxnew.prj.xml", - "mac_targetname" : "xxnew.ppc", - "mac_dllname" : "xxnew.ppc.slb", - "sources" : ["xxnewmodule.c"], - "mac_exportname" : "xxnew.prj.exp", + "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() diff --git a/Mac/Lib/mkcwproject/template/template-searchdirs.xml b/Mac/Lib/mkcwproject/template/template-searchdirs.xml new file mode 100644 index 0000000000..3cb59a9bfa --- /dev/null +++ b/Mac/Lib/mkcwproject/template/template-searchdirs.xml @@ -0,0 +1,9 @@ + + SearchPath + Path%(extrasearchdirs)s + PathFormatMacOS + PathRootAbsolute + + Recursivefalse + HostFlagsAll + diff --git a/Mac/Lib/mkcwproject/template/template.prj.xml b/Mac/Lib/mkcwproject/template/template.prj.xml index c6e01e8520..ac38544f1e 100644 --- a/Mac/Lib/mkcwproject/template/template.prj.xml +++ b/Mac/Lib/mkcwproject/template/template.prj.xml @@ -92,20 +92,30 @@ SearchPath - Path::: + Path%(sysprefix)s:Mac: PathFormatMacOS - PathRootProject + PathRoot%(mac_sysprefixtype)s + + Recursivetrue + HostFlagsAll + + + SearchPath + Path%(sysprefix)s + PathFormatMacOS + PathRoot%(mac_sysprefixtype)s Recursivetrue HostFlagsAll SystemSearchPaths + %(tmp_extrasearchdirs)s SearchPath - Path::::GUSI2:include: + Path%(sysprefix)s::GUSI2:include: PathFormatMacOS - PathRootProject + PathRoot%(mac_sysprefixtype)s Recursivefalse HostFlagsAll @@ -136,7 +146,7 @@ PostLinker Targetname%(mac_targetname)s OutputDirectory - Path::PlugIns: + Path%(mac_outputdir)s PathFormatMacOS PathRootProject