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(); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits