Fixed amalgamation and CMake build.
diff --git a/tools/amalgamate.py b/tools/amalgamate.py
index ed5f665..16b34aa 100755
--- a/tools/amalgamate.py
+++ b/tools/amalgamate.py
@@ -2,6 +2,7 @@
 
 import sys
 import re
+import os
 
 INCLUDE_RE = re.compile('^#include "([^"]*)"$')
 
@@ -10,8 +11,8 @@
   return match.groups()[0] if match else None
 
 class Amalgamator:
-  def __init__(self, include_path, output_path):
-    self.include_path = include_path
+  def __init__(self, output_path):
+    self.include_paths = ["."]
     self.included = set(["upb/port_def.inc", "upb/port_undef.inc"])
     self.output_h = open(output_path + "upb.h", "w")
     self.output_c = open(output_path + "upb.c", "w")
@@ -24,18 +25,32 @@
     self.output_h.write('#include <stdint.h>')
     self.output_h.write(open("upb/port_def.inc").read())
 
+  def add_include_path(self, path):
+      self.include_paths.append(path)
+
   def finish(self):
     self.output_c.write(open("upb/port_undef.inc").read())
     self.output_h.write(open("upb/port_undef.inc").read())
 
   def _process_file(self, infile_name, outfile):
-    for line in open(infile_name):
+    file = None
+    for path in self.include_paths:
+        try:
+            full_path = os.path.join(path, infile_name)
+            file = open(full_path)
+            break
+        except IOError:
+            pass
+    if not file:
+        raise RuntimeError("Couldn't open file " + infile_name)
+
+    for line in file:
       include = parse_include(line)
       if include is not None and (include.startswith("upb") or
                                   include.startswith("google")):
         if include not in self.included:
           self.included.add(include)
-          self._add_header(self.include_path + include)
+          self._add_header(include)
       else:
         outfile.write(line)
 
@@ -47,12 +62,20 @@
 
 # ---- main ----
 
-include_path = sys.argv[1]
-output_path = sys.argv[2]
-amalgamator = Amalgamator(include_path, output_path)
+output_path = sys.argv[1]
+amalgamator = Amalgamator(output_path)
+files = []
 
-for filename in sys.argv[3:]:
-  if filename.endswith(".h") or filename.endswith(".inc"):
-    amalgamator.add_src(filename.strip())
+for arg in sys.argv[3:]:
+  arg = arg.strip()
+  if arg.startswith("-I"):
+    amalgamator.add_include_path(arg[2:])
+  elif arg.endswith(".h") or arg.endswith(".inc"):
+    pass
+  else:
+    files.append(arg)
+
+for filename in files:
+    amalgamator.add_src(filename)
 
 amalgamator.finish()