]> granicus.if.org Git - python/commitdiff
More bits and pieces of project generation.
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 22 Sep 2000 23:26:55 +0000 (23:26 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 22 Sep 2000 23:26:55 +0000 (23:26 +0000)
Mac/Lib/mkcwproject/__init__.py [new file with mode: 0644]
Mac/Lib/mkcwproject/cwtalker.py [new file with mode: 0644]
Mac/Lib/mkcwproject/cwxmlgen.py [moved from Mac/Lib/mkcwproject/mkcwproject.py with 76% similarity]
Mac/Lib/mkcwproject/template/template-searchdirs.xml [new file with mode: 0644]
Mac/Lib/mkcwproject/template/template.prj.xml

diff --git a/Mac/Lib/mkcwproject/__init__.py b/Mac/Lib/mkcwproject/__init__.py
new file mode 100644 (file)
index 0000000..9664542
--- /dev/null
@@ -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 (file)
index 0000000..fbce620
--- /dev/null
@@ -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)
similarity index 76%
rename from Mac/Lib/mkcwproject/mkcwproject.py
rename to Mac/Lib/mkcwproject/cwxmlgen.py
index 7889b7662255c4b293ac9249b8dc19340b6038f0..b29786f68a025b05d6a7f14ea12f8c17a7aeb43a 100644 (file)
@@ -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 (file)
index 0000000..3cb59a9
--- /dev/null
@@ -0,0 +1,9 @@
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>%(extrasearchdirs)s</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
index c6e01e85200610da11399e8cd61daf15f460c0b4..ac38544f1ef54dc90ec2a9e65ef316d51172ef7b 100644 (file)
                     </SETTING>
                     <SETTING>
                         <SETTING><NAME>SearchPath</NAME>
-                            <SETTING><NAME>Path</NAME><VALUE>:::</VALUE></SETTING>
+                            <SETTING><NAME>Path</NAME><VALUE>%(sysprefix)s:Mac:</VALUE></SETTING>
                             <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>
-                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>%(mac_sysprefixtype)s</VALUE></SETTING>
+                        </SETTING>
+                        <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING>
+                        <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
+                    </SETTING>
+                    <SETTING>
+                        <SETTING><NAME>SearchPath</NAME>
+                            <SETTING><NAME>Path</NAME><VALUE>%(sysprefix)s</VALUE></SETTING>
+                            <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>%(mac_sysprefixtype)s</VALUE></SETTING>
                         </SETTING>
                         <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING>
                         <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
                     </SETTING>
                 </SETTING>
                 <SETTING><NAME>SystemSearchPaths</NAME>
+                    %(tmp_extrasearchdirs)s
                     <SETTING>
                         <SETTING><NAME>SearchPath</NAME>
-                            <SETTING><NAME>Path</NAME><VALUE>::::GUSI2:include:</VALUE></SETTING>
+                            <SETTING><NAME>Path</NAME><VALUE>%(sysprefix)s::GUSI2:include:</VALUE></SETTING>
                             <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>
-                            <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
+                            <SETTING><NAME>PathRoot</NAME><VALUE>%(mac_sysprefixtype)s</VALUE></SETTING>
                         </SETTING>
                         <SETTING><NAME>Recursive</NAME><VALUE>false</VALUE></SETTING>
                         <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING>
                 <SETTING><NAME>PostLinker</NAME><VALUE></VALUE></SETTING>
                 <SETTING><NAME>Targetname</NAME><VALUE>%(mac_targetname)s</VALUE></SETTING>
                 <SETTING><NAME>OutputDirectory</NAME>
-                    <SETTING><NAME>Path</NAME><VALUE>::PlugIns:</VALUE></SETTING>
+                    <SETTING><NAME>Path</NAME><VALUE>%(mac_outputdir)s</VALUE></SETTING>
                     <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING>
                     <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING>
                 </SETTING>