[PATCH] D73524: [CMake][DFSan] Don't use cat as it's not available on Windows
Petr Hosek via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 27 19:31:03 PST 2020
phosek created this revision.
phosek added reviewers: beanz, smeenai.
Herald added subscribers: llvm-commits, Sanitizers, mgorny.
Herald added projects: Sanitizers, LLVM.
We shouldn't be using cat in the build since this command isn't
available on Windows (unless installed as part of gnuwin32). Rather,
we'll use a Python script, this solution is already used by other
LLVM runtimes.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D73524
Files:
compiler-rt/lib/dfsan/CMakeLists.txt
compiler-rt/utils/cat_files.py
Index: compiler-rt/utils/cat_files.py
===================================================================
--- /dev/null
+++ compiler-rt/utils/cat_files.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#===----------------------------------------------------------------------===##
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#===----------------------------------------------------------------------===##
+
+from argparse import ArgumentParser
+import sys
+
+def print_and_exit(msg):
+ sys.stderr.write(msg + '\n')
+ sys.exit(1)
+
+def main():
+ parser = ArgumentParser(
+ description="Concatenate two files into a single file")
+ parser.add_argument(
+ '-o', '--output', dest='output', required=True,
+ help='The output file. stdout is used if not given',
+ type=str, action='store')
+ parser.add_argument(
+ 'files', metavar='files', nargs='+',
+ help='The files to concatenate')
+
+ args = parser.parse_args()
+
+ if len(args.files) < 2:
+ print_and_exit('fewer than 2 inputs provided')
+ data = ''
+ for filename in args.files:
+ with open(filename, 'r') as f:
+ data += f.read()
+ if len(data) != 0 and data[-1] != '\n':
+ data += '\n'
+ assert len(data) > 0 and "cannot cat empty files"
+ with open(args.output, 'w') as f:
+ f.write(data)
+
+
+if __name__ == '__main__':
+ main()
+ sys.exit(0)
Index: compiler-rt/lib/dfsan/CMakeLists.txt
===================================================================
--- compiler-rt/lib/dfsan/CMakeLists.txt
+++ compiler-rt/lib/dfsan/CMakeLists.txt
@@ -50,9 +50,10 @@
COMMAND
${CMAKE_COMMAND} -E make_directory ${dfsan_abilist_dir}
COMMAND
- cat ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt
- ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt
- > ${dfsan_abilist_filename}
+ ${PYTHON_EXECUTABLE} ${COMPILER_RT_SOURCE_DIR}/utils/cat_files.py
+ ${CMAKE_CURRENT_SOURCE_DIR}/done_abilist.txt
+ ${CMAKE_CURRENT_SOURCE_DIR}/libc_ubuntu1404_abilist.txt
+ -o ${dfsan_abilist_filename}
DEPENDS done_abilist.txt libc_ubuntu1404_abilist.txt)
add_dependencies(dfsan dfsan_abilist)
install(FILES ${dfsan_abilist_filename}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73524.240757.patch
Type: text/x-patch
Size: 2578 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200128/362d267a/attachment.bin>
More information about the llvm-commits
mailing list