Mac version of freeze. Uses standard freeze modules where it can,
augmenting them here and there. For now, it works more-or-less similar
to unix/windows freeze, generating a config.c file, but storing
modules in PYC resources. A template project is also copied.

The hooks are in place to freeze by merging shared libraries so you
can freeze without a C compiler/linker, but this does not work yet.
diff --git a/Mac/Tools/macfreeze/directives.py b/Mac/Tools/macfreeze/directives.py
new file mode 100644
index 0000000..e233745
--- /dev/null
+++ b/Mac/Tools/macfreeze/directives.py
@@ -0,0 +1,39 @@
+import re
+import os
+
+# The regular expression for freeze directives. These are comments with the
+# word macfreeze immedeately followed by a colon, followed by a directive,
+# followed by argument(s)
+#
+# The directives supported are
+# include - Include a module or file
+# exclude - Exclude a module
+# path - Add sys.path entries. Relative paths are relative to the source file.
+#
+# See the macfreeze.py main program for a real live example.
+#
+DIRECTIVE_RE=r'^\s*#\s*macfreeze:\s*(\S*)\s*(.*)\s*$'
+REPROG=re.compile(DIRECTIVE_RE)
+
+def findfreezedirectives(program):
+	extra_modules = []
+	exclude_modules = []
+	extra_path = []
+	progdir, filename = os.path.split(program)
+	fp = open(program)
+	for line in fp.readlines():
+		match = REPROG.match(line)
+		if match:
+			directive = match.group(1)
+			argument = match.group(2)
+			if directive == 'include':
+				extra_modules.append(argument)
+			elif directive == 'exclude':
+				exclude_modules.append(argument)
+			elif directive == 'path':
+				argument = os.path.join(progdir, argument)
+				extra_path.append(argument)
+			else:
+				print '** Unknown directive', line
+	return extra_modules, exclude_modules, extra_path
+