Add all the chromium stuff necessary to build nasm.
This adds the BUILD file and configuration davidben at chromium.org wrote
originally on https://chromium-review.googlesource.com/c/chromium/src/+/1119211
This is the last CL enabling nasm usage in Chromium (fingers crossed), but may
need some tweaks to build on Windows mac. A subsequent Chromium CL adding the
DEP will test this theory.
BUG=766721
Change-Id: I481fc8d7f1747dad74cd0a02a251a65cfd78a134
diff --git a/generate_nasm_sources.py b/generate_nasm_sources.py
new file mode 100755
index 0000000..2b7bc59
--- /dev/null
+++ b/generate_nasm_sources.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+#
+# Copyright 2018 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""A script to parse nasm's file lists out of Makefile.in."""
+
+import os
+import sys
+
+def ParseFileLists(path):
+ ret = {}
+ with open(path) as f:
+ in_file_list = False
+ split_line = ""
+ for line in f:
+ line = line.rstrip()
+ if not in_file_list:
+ if "-- Begin File Lists --" in line:
+ in_file_list = True
+ continue
+ if "-- End File Lists --" in line:
+ if split_line:
+ raise ValueError("End comment was preceded by split line")
+ break
+ line = split_line + line
+ split_line = ""
+ if line.endswith('\\'):
+ split_line = line[:-1]
+ continue
+ line = line.strip()
+ if not line:
+ continue
+ name, value = line.split('=')
+ name = name.strip()
+ value = value.replace("$(O)", "c")
+ files = value.split()
+ files.sort()
+ files = [file for file in files]
+ ret[name] = files
+ return ret
+
+def PrintFileList(out, name, files):
+ if len(files) == 0:
+ print >>out, "%s = []" % (name,)
+ elif len(files) == 1:
+ print >>out, "%s = [ \"%s\" ]" % (name, files[0])
+ else:
+ print >>out, "%s = [" % (name,)
+ for f in files:
+ print >>out, " \"%s\"," % (f,)
+ print >>out, "]"
+
+def main():
+ file_lists = ParseFileLists("Makefile.in")
+ with open("nasm_sources.gni", "w") as out:
+ print >>out, """# Copyright (c) 2018 The Chromium 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 file is created by generate_nasm_sources.py. Do not edit manually.
+"""
+ PrintFileList(out, "ndisasm_sources", file_lists['NDISASM'])
+ PrintFileList(out, "nasmlib_sources", file_lists['LIBOBJ'])
+ PrintFileList(out, "nasm_sources", file_lists['NASM'])
+
+if __name__ == "__main__":
+ main()