]> granicus.if.org Git - llvm/commitdiff
Use response file when generating LLVM-C.dll
authorSerge Guelton <sguelton@quarkslab.com>
Tue, 22 Jan 2019 16:25:17 +0000 (16:25 +0000)
committerSerge Guelton <sguelton@quarkslab.com>
Tue, 22 Jan 2019 16:25:17 +0000 (16:25 +0000)
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351833 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-shlib/CMakeLists.txt
tools/llvm-shlib/gen-msvc-exports.py

index 187066e5ded245f7d532d6d86accbf794afc59be..8fdefc0d35017f892aa093a135fa861c7ea75d93 100644 (file)
@@ -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 )
index 2b7291de28b272ab55bb6f9fd0ddd67ec13b804f..671faf115281241369132b83b4aca60d9c190b00 100644 (file)
@@ -82,6 +82,10 @@ def gen_llvm_c_export(output, underscore, libs, nm):
 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'
     )
@@ -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__':