diff options
| author | Serge Guelton <sguelton@quarkslab.com> | 2019-01-22 16:25:17 +0000 |
|---|---|---|
| committer | Serge Guelton <sguelton@quarkslab.com> | 2019-01-22 16:25:17 +0000 |
| commit | d62eb16331ed02b292c1c23a63b7bc2832d3aa18 (patch) | |
| tree | da7a5f8ff6528770f08a567925903424d3bb78f2 /llvm/tools | |
| parent | 03ed93fd371328bfe22b50e8665e84ac1334f09b (diff) | |
| download | bcm5719-llvm-d62eb16331ed02b292c1c23a63b7bc2832d3aa18.tar.gz bcm5719-llvm-d62eb16331ed02b292c1c23a63b7bc2832d3aa18.zip | |
Use response file when generating LLVM-C.dll
As discovered in D56774 the command line gets to long, so use a response file to give the script the libs. This change has been tested and is confirmed working for me.
Commited on behalf of Jakob Bornecrantz
Differential Revision: https://reviews.llvm.org/D56781
llvm-svn: 351833
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/llvm-shlib/CMakeLists.txt | 9 | ||||
| -rw-r--r-- | llvm/tools/llvm-shlib/gen-msvc-exports.py | 15 |
2 files changed, 21 insertions, 3 deletions
diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt index 187066e5ded..8fdefc0d350 100644 --- a/llvm/tools/llvm-shlib/CMakeLists.txt +++ b/llvm/tools/llvm-shlib/CMakeLists.txt @@ -137,13 +137,20 @@ if(MSVC) list(APPEND FULL_LIB_NAMES ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib/${lib}.lib) endforeach() + # Need to seperate lib names with newlines. + string(REPLACE ";" "\n" FILE_CONTENT "${FULL_LIB_NAMES}") + + # Write out the full lib names into file to be read by the python script. + set(LIBSFILE ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllvm-c.args) + file(WRITE ${LIBSFILE} "${FILE_CONTENT}") + # Generate the exports file dynamically. set(GEN_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/gen-msvc-exports.py) set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllvm-c.exports) add_custom_command(OUTPUT ${LLVM_EXPORTED_SYMBOL_FILE} - COMMAND ${PYTHON_EXECUTABLE} ${GEN_SCRIPT} ${FULL_LIB_NAMES} ${GEN_UNDERSCORE} --nm ${LLVM_TOOLS_BINARY_DIR}/llvm-nm -o ${LLVM_EXPORTED_SYMBOL_FILE} + COMMAND ${PYTHON_EXECUTABLE} ${GEN_SCRIPT} --libsfile ${LIBSFILE} ${GEN_UNDERSCORE} --nm ${LLVM_TOOLS_BINARY_DIR}/llvm-nm -o ${LLVM_EXPORTED_SYMBOL_FILE} DEPENDS ${LIB_NAMES} llvm-nm COMMENT "Generating export list for LLVM-C" VERBATIM ) diff --git a/llvm/tools/llvm-shlib/gen-msvc-exports.py b/llvm/tools/llvm-shlib/gen-msvc-exports.py index 2b7291de28b..671faf11528 100644 --- a/llvm/tools/llvm-shlib/gen-msvc-exports.py +++ b/llvm/tools/llvm-shlib/gen-msvc-exports.py @@ -83,6 +83,10 @@ def main(): parser = argparse.ArgumentParser('gen-msvc-exports') parser.add_argument( + '-i', '--libsfile', help='file with list of libs, new line separated', + action='store', default=None + ) + parser.add_argument( '-o', '--output', help='output filename', default='LLVM-C.exports' ) parser.add_argument('-u', '--underscore', @@ -93,12 +97,19 @@ def main(): '--nm', help='path to the llvm-nm executable', default='llvm-nm' ) parser.add_argument( - 'libs', metavar='LIBS', nargs='+', help='list of libraries to generate export from' + 'libs', metavar='LIBS', nargs='*', help='list of libraries to generate export from' ) ns = parser.parse_args() - gen_llvm_c_export(ns.output, ns.underscore, ns.libs, ns.nm) + libs = ns.libs + + # Add if we where given a libsfile add it to the libs. + if ns.libsfile: + with open(ns.libsfile) as f: + libs.extend(f.read().splitlines()) + + gen_llvm_c_export(ns.output, ns.underscore, libs, ns.nm) if __name__ == '__main__': |

