diff --git a/build/gyp_pdfium b/build/gyp_pdfium
index 0458b96..59f2c6c 100755
--- a/build/gyp_pdfium
+++ b/build/gyp_pdfium
@@ -1,46 +1,46 @@
-#!/usr/bin/env python
-#
-# Copyright 2014 PDFium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This script is wrapper for PDFium that adds some support for how GYP
-# is invoked by PDFium beyond what can be done in the gclient hooks.
-
-import os
-import platform
-import sys
-
-script_dir = os.path.dirname(os.path.realpath(__file__))
-pdfium_root = os.path.abspath(os.path.join(script_dir, os.pardir))
-
-sys.path.insert(0, os.path.join(pdfium_root, 'build', 'gyp', 'pylib'))
-import gyp
-
-
-def run_gyp(args):
-  rc = gyp.main(args)
-  if rc != 0:
-    print 'Error running GYP'
-    sys.exit(rc)
-
-
-def main():
-  args = sys.argv[1:]
-  args.append(os.path.join(script_dir, 'all.gyp'))
-  
-  args.append('-I')
-  args.append(os.path.join(pdfium_root, 'build', 'standalone.gypi'))
-  
-  args.extend(['-D', 'gyp_output_dir=out'])
-
-  # Set the GYP DEPTH variable to the root of the PDFium project.
-  args.append('--depth=' + os.path.relpath(pdfium_root))
-
-  print 'Updating projects from gyp files...'
-  sys.stdout.flush()
-
-  run_gyp(args)
-
-if __name__ == '__main__':
+#!/usr/bin/env python
+#
+# Copyright 2014 PDFium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This script is wrapper for PDFium that adds some support for how GYP
+# is invoked by PDFium beyond what can be done in the gclient hooks.
+
+import os
+import platform
+import sys
+
+script_dir = os.path.dirname(os.path.realpath(__file__))
+pdfium_root = os.path.abspath(os.path.join(script_dir, os.pardir))
+
+sys.path.insert(0, os.path.join(pdfium_root, 'build', 'gyp', 'pylib'))
+import gyp
+
+
+def run_gyp(args):
+  rc = gyp.main(args)
+  if rc != 0:
+    print 'Error running GYP'
+    sys.exit(rc)
+
+
+def main():
+  args = sys.argv[1:]
+  args.append(os.path.join(script_dir, 'all.gyp'))
+  
+  args.append('-I')
+  args.append(os.path.join(pdfium_root, 'build', 'standalone.gypi'))
+  
+  args.extend(['-D', 'gyp_output_dir=out'])
+
+  # Set the GYP DEPTH variable to the root of the PDFium project.
+  args.append('--depth=' + os.path.relpath(pdfium_root))
+
+  print 'Updating projects from gyp files...'
+  sys.stdout.flush()
+
+  run_gyp(args)
+
+if __name__ == '__main__':
   sys.exit(main())
\ No newline at end of file
