2000-09-22 20:26:55 -03:00
|
|
|
import cwxmlgen
|
|
|
|
import cwtalker
|
2000-09-22 20:54:07 -03:00
|
|
|
import os
|
|
|
|
import AppleEvents
|
|
|
|
import macfs
|
2000-09-22 20:26:55 -03:00
|
|
|
|
2001-01-21 18:23:13 -04:00
|
|
|
def mkproject(outputfile, modulename, settings, force=0):
|
2000-09-22 20:26:55 -03:00
|
|
|
#
|
|
|
|
# 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'
|
2000-12-03 18:39:09 -04:00
|
|
|
if not dictcopy.has_key('mac_outputdir'):
|
|
|
|
dictcopy['mac_outputdir'] = ':lib:'
|
2000-09-22 20:26:55 -03:00
|
|
|
dictcopy['mac_dllname'] = modulename + '.ppc.slb'
|
|
|
|
dictcopy['mac_targetname'] = modulename + '.ppc'
|
2000-09-22 20:54:07 -03:00
|
|
|
if os.path.isabs(dictcopy['sysprefix']):
|
2000-09-22 20:26:55 -03:00
|
|
|
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()
|
2001-01-21 18:23:13 -04:00
|
|
|
if not force:
|
|
|
|
# check whether it is the same as it was
|
|
|
|
if os.path.exists(dictcopy['mac_projectxmlname']):
|
|
|
|
fp = open(dictcopy['mac_projectxmlname'])
|
|
|
|
data = fp.read()
|
|
|
|
fp.close()
|
|
|
|
if data == dictcopy["tmp_projectxmldata"]:
|
|
|
|
return
|
2000-09-22 20:26:55 -03:00
|
|
|
fp = open(dictcopy['mac_projectxmlname'], "w")
|
2000-09-22 20:54:07 -03:00
|
|
|
fp.write(dictcopy["tmp_projectxmldata"])
|
2000-09-22 20:26:55 -03:00
|
|
|
fp.close()
|
|
|
|
#
|
|
|
|
# Generate the export file
|
|
|
|
#
|
|
|
|
fp = open(outputfile + '.exp', 'w')
|
|
|
|
fp.write('init%s\n'%modulename)
|
2000-12-03 18:39:09 -04:00
|
|
|
if dictcopy.has_key('extraexportsymbols'):
|
|
|
|
for sym in dictcopy['extraexportsymbols']:
|
|
|
|
fp.write('%s\n'%sym)
|
2000-09-22 20:26:55 -03:00
|
|
|
fp.close()
|
|
|
|
#
|
|
|
|
# Generate the project from the xml
|
|
|
|
#
|
2000-09-24 18:56:43 -03:00
|
|
|
makeproject(dictcopy['mac_projectxmlname'], outputfile)
|
|
|
|
|
|
|
|
def makeproject(xmlfile, projectfile):
|
2000-09-22 20:26:55 -03:00
|
|
|
cw = cwtalker.MyCodeWarrior(start=1)
|
|
|
|
cw.send_timeout = AppleEvents.kNoTimeOut
|
2000-09-24 18:56:43 -03:00
|
|
|
xmlfss = macfs.FSSpec(xmlfile)
|
|
|
|
prjfss = macfs.FSSpec(projectfile)
|
2000-09-22 20:54:07 -03:00
|
|
|
cw.activate()
|
2000-09-22 20:26:55 -03:00
|
|
|
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
|
2000-11-19 17:51:06 -04:00
|
|
|
cw.Close_Project()
|
2000-09-22 20:26:55 -03:00
|
|
|
|
|
|
|
def cleanproject(projectfile):
|
|
|
|
cw = cwtalker.MyCodeWarrior(start=1)
|
|
|
|
cw.send_timeout = AppleEvents.kNoTimeOut
|
|
|
|
prjfss = macfs.FSSpec(projectfile)
|
|
|
|
cw.open(prjfss)
|
|
|
|
cw.Remove_Binaries()
|
|
|
|
|