[libcxx] r313122 - Use CMAKE_AR instead of the system default 'ar' for merging static libraries

Martin Storsjo via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 12 23:55:44 PDT 2017


Author: mstorsjo
Date: Tue Sep 12 23:55:44 2017
New Revision: 313122

URL: http://llvm.org/viewvc/llvm-project?rev=313122&view=rev
Log:
Use CMAKE_AR instead of the system default 'ar' for merging static libraries

Using the system default 'ar' might not be the right choice when
cross compiling.

Don't prepend the ar options by a dash, not all ar implementations
support that (llvm-ar doesn't).

Also pass the 's' option when creating the merged library, to create
an index.

Differential Revision: https://reviews.llvm.org/D37134

Modified:
    libcxx/trunk/lib/CMakeLists.txt
    libcxx/trunk/utils/merge_archives.py

Modified: libcxx/trunk/lib/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/CMakeLists.txt?rev=313122&r1=313121&r2=313122&view=diff
==============================================================================
--- libcxx/trunk/lib/CMakeLists.txt (original)
+++ libcxx/trunk/lib/CMakeLists.txt Tue Sep 12 23:55:44 2017
@@ -270,6 +270,7 @@ if (LIBCXX_ENABLE_STATIC)
       ${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/merge_archives.py
     ARGS
       -o $<TARGET_LINKER_FILE:cxx_static>
+      --ar "${CMAKE_AR}"
       "$<TARGET_LINKER_FILE:cxx_static>"
       "${MERGE_ARCHIVES_ABI_TARGET}"
       "${MERGE_ARCHIVES_SEARCH_PATHS}"

Modified: libcxx/trunk/utils/merge_archives.py
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/merge_archives.py?rev=313122&r1=313121&r2=313122&view=diff
==============================================================================
--- libcxx/trunk/utils/merge_archives.py (original)
+++ libcxx/trunk/utils/merge_archives.py Tue Sep 12 23:55:44 2017
@@ -94,12 +94,18 @@ def main():
         help='Paths to search for the libraries along', action='append',
         nargs=1)
     parser.add_argument(
+        '--ar', dest='ar_exe', required=False,
+        help='The ar executable to use, finds \'ar\' in the path if not given',
+        type=str, action='store')
+    parser.add_argument(
         'archives', metavar='archives',  nargs='+',
         help='The archives to merge')
 
     args = parser.parse_args()
 
-    ar_exe = distutils.spawn.find_executable('ar')
+    ar_exe = args.ar_exe
+    if not ar_exe:
+        ar_exe = distutils.spawn.find_executable('ar')
     if not ar_exe:
         print_and_exit("failed to find 'ar' executable")
 
@@ -115,13 +121,13 @@ def main():
     temp_directory_root = tempfile.mkdtemp('.libcxx.merge.archives')
 
     for arc in archives:
-        execute_command_verbose([ar_exe, '-x', arc], cwd=temp_directory_root,
+        execute_command_verbose([ar_exe, 'x', arc], cwd=temp_directory_root,
                                 verbose=args.verbose)
 
     files = glob.glob(os.path.join(temp_directory_root, '*.o*'))
     if not files:
         print_and_exit('Failed to glob for %s' % temp_directory_root)
-    cmd = [ar_exe, '-qc', args.output] + files
+    cmd = [ar_exe, 'qcs', args.output] + files
     execute_command_verbose(cmd, cwd=temp_directory_root, verbose=args.verbose)
 
 




More information about the cfe-commits mailing list