1 """macfreeze - Main program and GUI
3 macfreeze allows you to turn Python scripts into fully self-contained
4 Mac applications, by including all the Python and C code needed in a single
5 executable. Like unix/windows freeze it can produce a config.c allowing you
6 to build the application with a development environment (CodeWarrior, to be
7 precise), but unlike the standard freeze it is also possible to create frozen
8 applications without a development environment, by glueing all the
9 shared libraries and extension modules needed together in a single
10 executable, using some Code Fragment Manager tricks."""
18 import macmodulefinder
21 # Here are the macfreeze directives, used when freezing macfreeze itself
22 # (see directives.py for an explanation)
24 # macfreeze: path ::::Tools:freeze
25 # macfreeze: exclude win32api
30 gentype
, program
, output
, debug
= macfreezegui
.dialog()
31 elif len(sys
.argv
) == 2:
32 gentype
, program
, output
, debug
= macfreezegui
.dialog(sys
.argv
[1])
35 "Please pass a single script. Additional modules can be specified with directives")
37 mustwait
= process(gentype
, program
, output
, debug
=debug
)
41 def process(gentype
, program
, output
, modules
=None, module_files
=None, debug
=0, with_ifdef
=0):
44 if module_files
is None:
46 module_dict
, missing
= macmodulefinder
.process(program
, modules
, module_files
, debug
)
49 print '** Missing modules:', string
.join(missing
, ' ')
56 macgen_info
.generate(output
, module_dict
)
57 return 1 # So the user can inspect it
58 elif gentype
== 'source':
60 warnings
= macgen_src
.generate(output
, module_dict
, debug
, with_ifdef
)
62 elif gentype
== 'resource':
64 macgen_rsrc
.generate(output
, module_dict
, debug
)
65 warnings
= macgen_rsrc
.warnings(module_dict
)
67 elif gentype
== 'applet':
69 architecture
= 'fat' # user should choose
70 macgen_bin
.generate(program
, output
, module_dict
, architecture
, debug
)
72 raise 'unknown gentype', gentype
74 if __name__
== '__main__':