[Lldb-commits] [lldb] r247202 - Fix the build-llvm.pl to not create one monster .a file from all of the llvm and clang .a files. We now just make a file list which we pass to the linker.
Greg Clayton via lldb-commits
lldb-commits at lists.llvm.org
Wed Sep 9 15:35:25 PDT 2015
Author: gclayton
Date: Wed Sep 9 17:35:25 2015
New Revision: 247202
URL: http://llvm.org/viewvc/llvm-project?rev=247202&view=rev
Log:
Fix the build-llvm.pl to not create one monster .a file from all of the llvm and clang .a files. We now just make a file list which we pass to the linker.
Modified:
lldb/trunk/lldb.xcodeproj/project.pbxproj
lldb/trunk/scripts/build-llvm.pl
Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=247202&r1=247201&r2=247202&view=diff
==============================================================================
--- lldb/trunk/lldb.xcodeproj/project.pbxproj (original)
+++ lldb/trunk/lldb.xcodeproj/project.pbxproj Wed Sep 9 17:35:25 2015
@@ -5937,10 +5937,10 @@
inputPaths = (
"$(LLVM_SOURCE_DIR)",
"$(LLVM_BUILD_DIR)",
+ "$(LLVM_BUILD_DIR)/archives.txt",
);
name = "Build llvm and clang";
outputPaths = (
- "$(LLVM_BUILD_DIR)/libllvmclang.a",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -7333,7 +7333,8 @@
"$(inherited)",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-framework",
Foundation,
"-framework",
@@ -7405,7 +7406,8 @@
"$(inherited)",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-framework",
Foundation,
"-framework",
@@ -7795,7 +7797,8 @@
"$(inherited)",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-framework",
Foundation,
"-framework",
@@ -8087,7 +8090,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -8101,7 +8105,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
@@ -8158,7 +8163,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -8172,7 +8178,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
@@ -8229,7 +8236,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -8243,7 +8251,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
@@ -8506,7 +8515,8 @@
"$(inherited)",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-framework",
Foundation,
"-framework",
@@ -8636,7 +8646,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -8650,7 +8661,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
@@ -8791,7 +8803,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -8805,7 +8818,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
@@ -8858,7 +8872,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -8872,7 +8887,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
@@ -8922,7 +8938,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -8936,7 +8953,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
@@ -8988,7 +9006,8 @@
"OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = "$(OTHER_CFLAGS)";
OTHER_LDFLAGS = (
"$(inherited)",
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
"-lpython2.7",
"-lxml2",
@@ -9002,7 +9021,8 @@
Security,
);
"OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
- "-lllvmclang",
+ "-filelist",
+ "$(LLVM_BUILD_DIR)/archives.txt",
"-lxml2",
"-framework",
Foundation,
Modified: lldb/trunk/scripts/build-llvm.pl
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/build-llvm.pl?rev=247202&r1=247201&r2=247202&view=diff
==============================================================================
--- lldb/trunk/scripts/build-llvm.pl (original)
+++ lldb/trunk/scripts/build-llvm.pl Wed Sep 9 17:35:25 2015
@@ -17,9 +17,7 @@ use Digest::MD5 qw(md5_hex);
our $llvm_srcroot = $ENV{SCRIPT_INPUT_FILE_0};
our $llvm_dstroot = $ENV{SCRIPT_INPUT_FILE_1};
-
-our $llvm_clang_outfile = $ENV{SCRIPT_OUTPUT_FILE_0};
-our ($llvm_clang_basename, $llvm_clang_dirname) = fileparse ($llvm_clang_outfile);
+our $archive_filelist_file = $ENV{SCRIPT_INPUT_FILE_2};
our $llvm_configuration = $ENV{LLVM_CONFIGURATION};
@@ -35,6 +33,8 @@ my $original_env_path = $ENV{PATH};
my $common_configure_options = "--disable-terminfo";
+print "warning: remove this prior to checkin";
+
our %llvm_config_info = (
'Debug' => { configure_options => '--disable-optimized --disable-assertions --enable-cxx11 --enable-libcpp', make_options => 'DEBUG_SYMBOLS=1'},
'Debug+Asserts' => { configure_options => '--disable-optimized --enable-assertions --enable-cxx11 --enable-libcpp' , make_options => 'DEBUG_SYMBOLS=1'},
@@ -93,13 +93,6 @@ else
}
}
-# If our output file already exists then we need not generate it again.
-if (-e $llvm_clang_outfile)
-{
- exit 0;
-}
-
-
# Get our options
our $debug = 1;
@@ -136,6 +129,19 @@ sub build_llvm
push(@llvm_md5_strings, `cd '$repo'; git diff`);
}
}
+
+ print "opening archive file...\n";
+ open my $archive_fh, '>', $archive_filelist_file or die "Can't open $! for writing...\n";
+
+ print "opening /tmp/a.txt file...\n";
+ open my $ffffh, '>', "/tmp/a.txt" or die "Can't open $! for writing...\n";
+ foreach my $aaa (@llvm_md5_strings)
+ {
+ print $ffffh $aaa;
+ }
+ close ($ffffh);
+
+ my @archive_filelist_files;
#print "LLVM MD5 will be generated from:\n";
#print @llvm_md5_strings;
my $llvm_hex_digest = md5_hex(@llvm_md5_strings);
@@ -152,7 +158,7 @@ sub build_llvm
my $save_arch_digest = 1;
my $arch_digest_file = "$llvm_dstroot_arch/md5";
- my $llvm_dstroot_arch_archive = "$llvm_dstroot_arch/$llvm_clang_basename";
+ my $llvm_dstroot_arch_archive = "$llvm_dstroot_arch/archives.txt";
print "LLVM architecture root for ${arch} exists at '$llvm_dstroot_arch'...";
if (-e $llvm_dstroot_arch)
{
@@ -319,13 +325,13 @@ sub build_llvm
}
do_command ("cd '$llvm_dstroot_arch' && make -j$num_cpus clang-only VERBOSE=1 $llvm_config_href->{make_options} PROJECT_NAME='llvm' $extra_make_flags", "making llvm and clang", 1);
do_command ("cd '$llvm_dstroot_arch' && make -j$num_cpus tools-only VERBOSE=1 $llvm_config_href->{make_options} PROJECT_NAME='llvm' $extra_make_flags EDIS_VERSION=1", "making libedis", 1);
- # Combine all .o files from a bunch of static libraries from llvm
- # and clang into a single .a file.
- create_single_llvm_archive_for_arch ($llvm_dstroot_arch, 1);
}
+ append_all_archive_files ($llvm_dstroot_arch, 1, $archive_fh);
++$arch_idx;
}
+
+ close($archive_fh);
}
#----------------------------------------------------------------------
@@ -386,60 +392,16 @@ sub do_command
}
}
-sub create_single_llvm_archive_for_arch
+sub append_all_archive_files
{
my $arch_dstroot = shift;
my $split_into_objects = shift;
- my @object_dirs;
- my $object_dir;
- my $tmp_dir = $arch_dstroot;
- my $arch_output_file = "$arch_dstroot/$llvm_clang_basename";
- -e $arch_output_file and return;
- my $files = "$arch_dstroot/files.txt";
- open (FILES, ">$files") or die "Can't open $! for writing...\n";
-
- our @archive_files = glob "$arch_dstroot/$llvm_configuration/lib/*.a";
-
+ my $fh = shift;
+ our @archive_files = glob "$arch_dstroot/$llvm_configuration/lib/*.a";
for my $archive_fullpath (@archive_files)
{
- if (-e $archive_fullpath)
- {
- if ($split_into_objects)
- {
- my ($archive_file, $archive_dir, $archive_ext) = fileparse($archive_fullpath, ('.a'));
- $object_dir = "$tmp_dir/$archive_file";
- push @object_dirs, $object_dir;
-
- do_command ("cd '$tmp_dir'; mkdir '$archive_file'; cd '$archive_file'; ar -x $archive_fullpath");
-
- my @objects = bsd_glob("$object_dir/*.o");
- foreach my $object (@objects)
- {
- my ($o_file, $o_dir) = fileparse($object);
- my $new_object = "$object_dir/${archive_file}-$o_file";
- print FILES "$new_object\n";
- do_command ("mv '$object' '$new_object'");
- }
- }
- else
- {
- # just add the .a files into the file list
- print FILES "$archive_fullpath\n";
- }
- }
- else
- {
- print "warning: archive doesn't exist: '$archive_fullpath'\n";
- }
- }
- close (FILES);
- do_command ("libtool -static -o '$arch_output_file' -filelist '$files'");
-
- foreach $object_dir (@object_dirs)
- {
- do_command ("rm -rf '$object_dir'");
+ print $fh "$archive_fullpath\n";
}
- do_command ("rm -rf '$files'");
}
build_llvm();
More information about the lldb-commits
mailing list