summaryrefslogtreecommitdiffstats
path: root/Mac/Lib/mkcwproject/__init__.py
blob: ff5ddd98122c9f9c19449a0edef508328e332dc0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import cwxmlgen
import cwtalker
import os
import AppleEvents
import macfs

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'
	if not dictcopy.has_key('mac_outputdir'):
		dictcopy['mac_outputdir'] = ':lib:'
	dictcopy['mac_dllname'] = modulename + '.ppc.slb'
	dictcopy['mac_targetname'] = modulename + '.ppc'
	if 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(dictcopy["tmp_projectxmldata"])
	fp.close()
	#
	# Generate the export file
	#
	fp = open(outputfile + '.exp', 'w')
	fp.write('init%s\n'%modulename)
	if dictcopy.has_key('extraexportsymbols'):
		for sym in dictcopy['extraexportsymbols']:
			fp.write('%s\n'%sym)
	fp.close()
	#
	# Generate the project from the xml
	#
	makeproject(dictcopy['mac_projectxmlname'], outputfile)
	
def makeproject(xmlfile, projectfile):
	cw = cwtalker.MyCodeWarrior(start=1)
	cw.send_timeout = AppleEvents.kNoTimeOut
	xmlfss = macfs.FSSpec(xmlfile)
	prjfss = macfs.FSSpec(projectfile)
	cw.activate()
	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
	cw.Close_Project()
	
def cleanproject(projectfile):
	cw = cwtalker.MyCodeWarrior(start=1)
	cw.send_timeout = AppleEvents.kNoTimeOut
	prjfss = macfs.FSSpec(projectfile)
	cw.open(prjfss)
	cw.Remove_Binaries()