[Lldb-commits] [lldb] r366739 - [LLDB] Remove the Xcode project

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Mon Jul 22 14:20:23 PDT 2019


Author: jdevlieghere
Date: Mon Jul 22 14:20:23 2019
New Revision: 366739

URL: http://llvm.org/viewvc/llvm-project?rev=366739&view=rev
Log:
[LLDB] Remove the Xcode project

Finally, after a lot of hard work from a bunch of people, we're in a
state where we can unify LLDB's build system.

This patch removes the hand-maintained Xcode project in favor of using
CMake in combination with the Xcode generator. Going forward, we want to
focus our efforts on improving the generated Xcode project.

Differential revision: https://reviews.llvm.org/D65109

Removed:
    lldb/trunk/lldb.xcodeproj/
    lldb/trunk/lldb.xcworkspace/
    lldb/trunk/scripts/sort-pbxproj.rb

Removed: lldb/trunk/scripts/sort-pbxproj.rb
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/sort-pbxproj.rb?rev=366738&view=auto
==============================================================================
--- lldb/trunk/scripts/sort-pbxproj.rb (original)
+++ lldb/trunk/scripts/sort-pbxproj.rb (removed)
@@ -1,251 +0,0 @@
-#! /usr/bin/ruby
-#
-
-# A script to impose order on the Xcode project file, to make merging
-# across branches were many additional files are present, easier.
-
-
-
-
-## Sort the BuildFile and FileReference sections of an Xcode project file,
-## putting Apple/github-local files at the front to avoid merge conflicts.
-#
-## Run this in a directory with a project.pbxproj file.  The sorted version
-## is printed on standard output.
-#
-
-
-# Files with these words in the names will be sorted into a separate section;
-# they are only present in some repositories and so having them intermixed 
-# can lead to merge failures.
-segregated_filenames = ["Swift", "repl", "RPC"]
-
-def read_pbxproj(fn)
-    beginning  = Array.new   # All lines before "PBXBuildFile section"
-    files      = Array.new   # PBXBuildFile section lines -- sort these
-    middle     = Array.new   # All lines between PBXBuildFile and PBXFileReference sections
-    refs       = Array.new   # PBXFileReference section lines -- sort these
-    ending     = Array.new   # All lines after PBXFileReference section
-
-    all_lines = File.readlines fn
-
-    state = 1 # "begin"
-    all_lines.each do |l|
-        l.chomp
-        if state == 1 && l =~ /Begin PBXBuildFile section/
-            beginning.push(l)
-            state = 2
-            next
-        end
-        if state == 2 && l =~ /End PBXBuildFile section/
-            middle.push(l)
-            state = 3
-            next
-        end
-        if state == 3 && l =~ /Begin PBXFileReference section/
-            middle.push(l)
-            state = 4
-            next
-        end
-        if state == 4 && l =~ /End PBXFileReference section/
-            ending.push(l)
-            state = 5
-            next
-        end
-
-        if state == 1
-            beginning.push(l)
-        elsif state == 2
-            files.push(l)
-        elsif state == 3
-            middle.push(l)
-        elsif state == 4
-            refs.push(l)
-        else
-            ending.push(l)
-        end
-    end
-
-    return beginning, files, middle, refs, ending
-end
-
-xcodeproj_filename = nil
-[ "../lldb.xcodeproj/project.pbxproj", "lldb.xcodeproj/project.pbxproj", "project.pbxproj" ].each do |ent|
-    if File.exists?(ent)
-        xcodeproj_filename = ent
-        break
-    end
-end
-
-if xcodeproj_filename.nil?
-    STDERR.puts "Could not find xcode project file to sort."
-    exit(1)
-end
-
-beginning, files, middle, refs, ending = read_pbxproj(xcodeproj_filename)
-
-
-### If we're given a "canonical" project.pbxproj file, get the uuid and fileref ids for
-### every source file in this project.pbxproj and the canonical one, and fix any of
-### the identifiers that don't match in the project file we're updating.
-### this comes up when people add the file independently on different branches and it
-### gets different identifiers.
-
-if ARGV.size() > 0
-    canonical_pbxproj = nil
-    if ARGV.size == 2 && ARGV[0] == "--canonical"
-        canonical_pbxproj = ARGV[1]
-    elsif ARGV.size == 1 && ARGV[0] =~ /--canonical=(.+)/
-        canonical_pbxproj = $1
-    end
-
-    if File.exists?(canonical_pbxproj)
-        ignore1, canon_files, ignore2, ignore3, ignore4 = read_pbxproj(canonical_pbxproj)
-        canon_files_by_filename = Hash.new { |k, v| k[v] = Array.new }
-
-        canon_files.each do |l|
-            # 2669421A1A6DC2AC0063BE93 /* MICmdCmdTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */; };
-
-            if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\sin.*?\*\/.*?fileRef = ([A-F0-9]{24})\s.*$/
-                uuid = $1
-                filename = $2
-                fileref = $3
-                canon_files_by_filename[filename].push({ :uuid => uuid, :fileref => fileref })
-            end
-        end
-
-        this_project_files = Hash.new { |k, v| k[v] = Array.new }
-
-        files.each do |l|
-            # 2669421A1A6DC2AC0063BE93 /* MICmdCmdTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */; };
-
-            if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\sin.*?\*\/.*?fileRef = ([A-F0-9]{24})\s.*$/
-                uuid = $1
-                filename = $2
-                fileref = $3
-                this_project_files[filename].push({ :uuid => uuid, :fileref => fileref })
-            end
-        end
-
-        this_project_files.keys.each do |fn|
-            next if !canon_files_by_filename.has_key?(fn)
-            next if this_project_files[fn].size() > 1 || canon_files_by_filename[fn].size() > 1
-            this_ent = this_project_files[fn][0]
-            canon_ent = canon_files_by_filename[fn][0]
-            if this_ent[:uuid] != canon_ent[:uuid]
-                STDERR.puts "#{fn} has uuid #{this_ent[:uuid]} in this project file, #{canon_ent[:uuid]} in the canonical"
-                [ beginning, files, middle, refs, ending ].each do |arr|
-                    arr.each { |l| l.gsub!(this_ent[:uuid], canon_ent[:uuid]) }
-                end
-            end
-            if this_ent[:fileref] != canon_ent[:fileref]
-                STDERR.puts "#{fn} has fileref #{this_ent[:fileref]} in this project file, #{canon_ent[:fileref]} in the canonical"
-                [ beginning, files, middle, refs, ending ].each do |arr|
-                    arr.each { |l| l.gsub!(this_ent[:fileref], canon_ent[:fileref]) }
-                end
-            end
-
-        end
-    end
-end
-
-
-
-######### Sort FILES by the filename, putting swift etc in front
-
-# key is filename
-# value is array of text lines for that filename in the FILES text
-# (libraries like libz.dylib seem to occur multiple times, probably
-# once each for different targets).
-
-files_by_filename = Hash.new { |k, v| k[v] = Array.new }
-
-files.each do |l|
-    # 2669421A1A6DC2AC0063BE93 /* MICmdCmdTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266941941A6DC2AC0063BE93 /* MICmdCmdTarget.cpp */; };
-
-    if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\sin.*?\*\/.*?fileRef = ([A-F0-9]{24})\s.*$/
-        uuid = $1
-        filename = $2
-        fileref = $3
-        files_by_filename[filename].push(l)
-    end
-
-end
-
-# clear the FILES array
-
-files = Array.new
-
-# add the lines in sorted order.  First swift/etc, then everything else.
-
-segregated_filenames.each do |keyword|
-    filenames = files_by_filename.keys
-    filenames.select {|l| l.include?(keyword) }.sort.each do |fn|
-        # re-add all the lines for the filename FN to our FILES array that we'll
-        # be outputting.
-        files_by_filename[fn].sort.each do |l|
-            files.push(l)
-        end
-        files_by_filename.delete(fn)
-    end
-end
-
-# All segregated filenames have been added to the FILES output array.
-# Now add all the other lines, sorted by filename.
-
-files_by_filename.keys.sort.each do |fn|
-    files_by_filename[fn].sort.each do |l|
-        files.push(l)
-    end
-end
-
-######### Sort REFS by the filename, putting swift etc in front
-
-refs_by_filename = Hash.new { |k, v| k[v] = Array.new }
-refs.each do |l|
-    # 2611FF12142D83060017FEA3 /* SBValue.i */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = SBValue.i; sourceTree = "<group>"; };
-
-    if l =~ /^\s+([A-F0-9]{24})\s+\/\*\s+(.*?)\s\*\/.*$/
-        uuid = $1
-        filename = $2
-        refs_by_filename[filename].push(l)
-    end
-end
-
-# clear the refs array
-
-refs = Array.new
-
-# add the lines in sorted order.  First swift/etc, then everything else.
-
-
-segregated_filenames.each do |keyword|
-    filenames = refs_by_filename.keys
-    filenames.select {|l| l.include?(keyword) }.sort.each do |fn|
-        # re-add all the lines for the filename FN to our refs array that we'll
-        # be outputting.
-        refs_by_filename[fn].sort.each do |l|
-            refs.push(l)
-        end
-        refs_by_filename.delete(fn)
-    end
-end
-
-# All segregated filenames have been added to the refs output array.
-# Now add all the other lines, sorted by filename.
-
-refs_by_filename.keys.sort.each do |fn|
-    refs_by_filename[fn].sort.each do |l|
-        refs.push(l)
-    end
-end
-
-
-
-####### output the sorted pbxproj
-
-File.open(xcodeproj_filename, 'w') do |outfile|
-    [ beginning, files, middle, refs, ending ].each do |arr|
-      arr.each {|l| outfile.puts l}
-    end
-end




More information about the lldb-commits mailing list