Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(191)

Side by Side Diff: pylib/gyp/xcodeproj_file.py

Issue 391223002: Add complete list of copy types to PBXCopyFilesBuildPhase. Base URL: http://gyp.googlecode.com/svn/trunk
Patch Set: Update fixing greedy RE match and incorrect build setting name Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 Google Inc. All rights reserved. 1 # Copyright (c) 2012 Google Inc. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Xcode project file generator. 5 """Xcode project file generator.
6 6
7 This module is both an Xcode project file generator and a documentation of the 7 This module is both an Xcode project file generator and a documentation of the
8 Xcode project file format. Knowledge of the project file format was gained 8 Xcode project file format. Knowledge of the project file format was gained
9 based on extensive experience with Xcode, and by making changes to projects in 9 based on extensive experience with Xcode, and by making changes to projects in
10 Xcode.app and observing the resultant changes in the associated project files. 10 Xcode.app and observing the resultant changes in the associated project files.
(...skipping 1928 matching lines...) Expand 10 before | Expand all | Expand 10 after
1939 class PBXCopyFilesBuildPhase(XCBuildPhase): 1939 class PBXCopyFilesBuildPhase(XCBuildPhase):
1940 _schema = XCBuildPhase._schema.copy() 1940 _schema = XCBuildPhase._schema.copy()
1941 _schema.update({ 1941 _schema.update({
1942 'dstPath': [0, str, 0, 1], 1942 'dstPath': [0, str, 0, 1],
1943 'dstSubfolderSpec': [0, int, 0, 1], 1943 'dstSubfolderSpec': [0, int, 0, 1],
1944 'name': [0, str, 0, 0], 1944 'name': [0, str, 0, 0],
1945 }) 1945 })
1946 1946
1947 # path_tree_re matches "$(DIR)/path" or just "$(DIR)". Match group 1 is 1947 # path_tree_re matches "$(DIR)/path" or just "$(DIR)". Match group 1 is
1948 # "DIR", match group 3 is "path" or None. 1948 # "DIR", match group 3 is "path" or None.
1949 path_tree_re = re.compile('^\\$\\((.*)\\)(/(.*)|)$') 1949 path_tree_re = re.compile('^\\$\\((.*?)\\)(/(.*)|)$')
1950 1950
1951 # path_tree_to_subfolder maps names of Xcode variables to the associated 1951 # path_tree_to_subfolder maps names of Xcode variables to the associated
1952 # dstSubfolderSpec property value used in a PBXCopyFilesBuildPhase object. 1952 # dstSubfolderSpec property value used in a PBXCopyFilesBuildPhase object.
1953 path_tree_to_subfolder = { 1953 path_tree_to_subfolder = {
1954 'BUILT_PRODUCTS_DIR': 16, # Products Directory 1954 # Types that can be chosen via the Xcode UI.
1955 # Other types that can be chosen via the Xcode UI. 1955 'BUILT_PRODUCTS_DIR': 16, # Products Directory
Mark Mentovai 2014/08/13 17:56:43 Can you sort this list a little bit better?
1956 # TODO(mark): Map Xcode variable names to these. 1956 'WRAPPER_NAME': 1, # Wrapper
1957 # : 1, # Wrapper 1957 # Although Xcode's friendly name is "Executables", the destination
1958 # : 6, # Executables: 6 1958 # is demonstrably the value of the build setting
1959 # : 7, # Resources 1959 # EXECUTABLE_FOLDER_PATH not EXECUTABLES_FOLDER_PATH.
1960 # : 15, # Java Resources 1960 'EXECUTABLE_FOLDER_PATH': 6, # Executables.
Mark Mentovai 2014/08/13 17:56:43 No period at the end of this comment.
1961 # : 10, # Frameworks 1961 'UNLOCALIZED_RESOURCES_FOLDER_PATH': 7, # Resources
1962 # : 11, # Shared Frameworks 1962 'JAVA_FOLDER_PATH': 15, # Java Resources
1963 # : 12, # Shared Support 1963 'FRAMEWORKS_FOLDER_PATH': 10, # Frameworks
1964 # : 13, # PlugIns 1964 'SHARED_FRAMEWORKS_FOLDER_PATH': 11, # Shared Frameworks
1965 'SHARED_SUPPORT_FOLDER_PATH': 12, # Shared Support
1966 'PLUGINS_FOLDER_PATH': 13, # PlugIns
1967 # For XPC Services, Xcode sets both dstPath and dstSubfolderSpec.
1968 # Note that it re-uses the BUILT_PRODUCTS_DIR value for
1969 # dstSubfolderSpec. dstPath is set below.
1970 'XPCSERVICES_FOLDER_PATH': 16, # XPC Services.
1965 } 1971 }
1966 1972
1967 def Name(self): 1973 def Name(self):
1968 if 'name' in self._properties: 1974 if 'name' in self._properties:
1969 return self._properties['name'] 1975 return self._properties['name']
1970 1976
1971 return 'CopyFiles' 1977 return 'CopyFiles'
1972 1978
1973 def FileGroup(self, path): 1979 def FileGroup(self, path):
1974 return self.PBXProjectAncestor().RootGroupForPath(path) 1980 return self.PBXProjectAncestor().RootGroupForPath(path)
1975 1981
1976 def SetDestination(self, path): 1982 def SetDestination(self, path):
1977 """Set the dstSubfolderSpec and dstPath properties from path. 1983 """Set the dstSubfolderSpec and dstPath properties from path.
1978 1984
1979 path may be specified in the same notation used for XCHierarchicalElements, 1985 path may be specified in the same notation used for XCHierarchicalElements,
1980 specifically, "$(DIR)/path". 1986 specifically, "$(DIR)/path".
1981 """ 1987 """
1982 1988
1983 path_tree_match = self.path_tree_re.search(path) 1989 path_tree_match = self.path_tree_re.search(path)
1984 if path_tree_match: 1990 if path_tree_match:
1985 # Everything else needs to be relative to an Xcode variable. 1991 # Everything else needs to be relative to an Xcode variable.
1986 path_tree = path_tree_match.group(1) 1992 path_tree = path_tree_match.group(1)
1987 relative_path = path_tree_match.group(3) 1993 relative_path = path_tree_match.group(3)
1994 separator = '/'
Mark Mentovai 2014/08/13 17:56:43 I think that separator is '/' if match group 2 is
1988 1995
1989 if path_tree in self.path_tree_to_subfolder: 1996 if path_tree in self.path_tree_to_subfolder:
1990 subfolder = self.path_tree_to_subfolder[path_tree] 1997 subfolder = self.path_tree_to_subfolder[path_tree]
1991 if relative_path is None: 1998 if relative_path is None:
1992 relative_path = '' 1999 relative_path = ''
2000 separator = ''
2001 if path_tree == 'XPCSERVICES_FOLDER_PATH':
2002 relative_path = '$(CONTENTS_FOLDER_PATH)/XPCServices' \
2003 + separator + relative_path
1993 else: 2004 else:
1994 # The path starts with an unrecognized Xcode variable 2005 # The path starts with an unrecognized Xcode variable
1995 # name like $(SRCROOT). Xcode will still handle this 2006 # name like $(SRCROOT). Xcode will still handle this
1996 # as an "absolute path" that starts with the variable. 2007 # as an "absolute path" that starts with the variable.
1997 subfolder = 0 2008 subfolder = 0
1998 relative_path = path 2009 relative_path = path
1999 elif path.startswith('/'): 2010 elif path.startswith('/'):
2000 # Special case. Absolute paths are in dstSubfolderSpec 0. 2011 # Special case. Absolute paths are in dstSubfolderSpec 0.
2001 subfolder = 0 2012 subfolder = 0
2002 relative_path = path[1:] 2013 relative_path = path[1:]
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after
2881 self._XCPrint(file, 0, '/* Begin ' + class_name + ' section */\n') 2892 self._XCPrint(file, 0, '/* Begin ' + class_name + ' section */\n')
2882 for object in sorted(objects_by_class[class_name], 2893 for object in sorted(objects_by_class[class_name],
2883 cmp=lambda x, y: cmp(x.id, y.id)): 2894 cmp=lambda x, y: cmp(x.id, y.id)):
2884 object.Print(file) 2895 object.Print(file)
2885 self._XCPrint(file, 0, '/* End ' + class_name + ' section */\n') 2896 self._XCPrint(file, 0, '/* End ' + class_name + ' section */\n')
2886 2897
2887 if self._should_print_single_line: 2898 if self._should_print_single_line:
2888 self._XCPrint(file, 0, '}; ') 2899 self._XCPrint(file, 0, '}; ')
2889 else: 2900 else:
2890 self._XCPrint(file, 1, '};\n') 2901 self._XCPrint(file, 1, '};\n')
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698