summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2017-09-13 06:55:44 +0000
committerMartin Storsjo <martin@martin.st>2017-09-13 06:55:44 +0000
commit5f919fe349450b3da0e29611ae37f6a940179290 (patch)
treed91bd57ae58ac3acc65d102c2fed8c71b269e56e
parent327f3b7eff3fa8fd8bdec09663cab2cbc76c67b9 (diff)
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 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@313122 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CMakeLists.txt1
-rwxr-xr-xutils/merge_archives.py12
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 24c306767..6f574cc03 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -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}"
diff --git a/utils/merge_archives.py b/utils/merge_archives.py
index ee0f7d334..58d92f0e2 100755
--- a/utils/merge_archives.py
+++ b/utils/merge_archives.py
@@ -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)