From 887894aaef8fe7b436d48dd825dbcf5dfd4cf3ad Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Tue, 3 Jan 2017 03:55:29 +0000 Subject: [PATCH] Fix creating __generated_config on Windows llvm-svn: 290853 --- libcxx/include/CMakeLists.txt | 9 +++++-- libcxx/utils/cat_files.py | 46 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 libcxx/utils/cat_files.py diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt index 7b574353193d..0a9ed24a7f4c 100644 --- a/libcxx/include/CMakeLists.txt +++ b/libcxx/include/CMakeLists.txt @@ -35,8 +35,13 @@ if (LIBCXX_INSTALL_HEADERS) # Generate and install a custom __config header. The new header is created # by prepending __config_site to the current __config header. add_custom_command(OUTPUT ${LIBCXX_BINARY_DIR}/__generated_config - COMMAND ${CMAKE_COMMAND} -E copy ${LIBCXX_BINARY_DIR}/__config_site ${LIBCXX_BINARY_DIR}/__generated_config - COMMAND ${UNIX_CAT} ${LIBCXX_SOURCE_DIR}/include/__config >> ${LIBCXX_BINARY_DIR}/__generated_config + COMMAND ${CMAKE_COMMAND} -E copy + ${LIBCXX_BINARY_DIR}/__config_site + ${LIBCXX_BINARY_DIR}/__generated_config + COMMAND ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/cat_files.py + ${LIBCXX_BINARY_DIR}/__generated_config + ${LIBCXX_SOURCE_DIR}/include/__config + -o ${LIBCXX_BINARY_DIR}/__generated_config DEPENDS ${LIBCXX_SOURCE_DIR}/include/__config ${LIBCXX_BINARY_DIR}/__config_site ) diff --git a/libcxx/utils/cat_files.py b/libcxx/utils/cat_files.py new file mode 100755 index 000000000000..83e7632f34ac --- /dev/null +++ b/libcxx/utils/cat_files.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python +#===----------------------------------------------------------------------===## +# +# The LLVM Compiler Infrastructure +# +# This file is dual licensed under the MIT and the University of Illinois Open +# Source Licenses. See LICENSE.TXT for details. +# +#===----------------------------------------------------------------------===## + +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)