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

Side by Side Diff: pylib/gyp/generator/android.py

Issue 565883002: android: Don't emit useless info into generated makefiles. (Closed) Base URL: http://gyp.googlecode.com/svn/trunk
Patch Set: Created 6 years, 3 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 # Notes: 5 # Notes:
6 # 6 #
7 # This generates makefiles suitable for inclusion into the Android build system 7 # This generates makefiles suitable for inclusion into the Android build system
8 # via an Android.mk file. It is based on make.py, the standard makefile 8 # via an Android.mk file. It is based on make.py, the standard makefile
9 # generator. 9 # generator.
10 # 10 #
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 # "gyp_all_modules" is a concatenation of the "gyp_all_modules" targets from 59 # "gyp_all_modules" is a concatenation of the "gyp_all_modules" targets from
60 # all the included sub-makefiles. This is just here to clarify. 60 # all the included sub-makefiles. This is just here to clarify.
61 gyp_all_modules: 61 gyp_all_modules:
62 """ 62 """
63 63
64 header = """\ 64 header = """\
65 # This file is generated by gyp; do not edit. 65 # This file is generated by gyp; do not edit.
66 66
67 """ 67 """
68 68
69 android_standard_include_paths = set([
70 # JNI_H_INCLUDE in build/core/binary.mk
71 'dalvik/libnativehelper/include/nativehelper',
72 # from SRC_HEADERS in build/core/config.mk
73 'system/core/include',
74 'hardware/libhardware/include',
75 'hardware/libhardware_legacy/include',
76 'hardware/ril/include',
77 'dalvik/libnativehelper/include',
78 'frameworks/native/include',
79 'frameworks/native/opengl/include',
80 'frameworks/base/include',
81 'frameworks/base/opengl/include',
82 'frameworks/base/native/include',
83 'external/skia/include',
84 # TARGET_C_INCLUDES in build/core/combo/TARGET_linux-arm.mk
85 'bionic/libc/arch-arm/include',
86 'bionic/libc/include',
87 'bionic/libstdc++/include',
88 'bionic/libc/kernel/common',
89 'bionic/libc/kernel/arch-arm',
90 'bionic/libm/include',
91 'bionic/libm/include/arm',
92 'bionic/libthread_db/include',
93 ])
94
95
96 # Map gyp target types to Android module classes. 69 # Map gyp target types to Android module classes.
97 MODULE_CLASSES = { 70 MODULE_CLASSES = {
98 'static_library': 'STATIC_LIBRARIES', 71 'static_library': 'STATIC_LIBRARIES',
99 'shared_library': 'SHARED_LIBRARIES', 72 'shared_library': 'SHARED_LIBRARIES',
100 'executable': 'EXECUTABLES', 73 'executable': 'EXECUTABLES',
101 } 74 }
102 75
103 76
104 def IsCPPExtension(ext): 77 def IsCPPExtension(ext):
105 return make.COMPILABLE_EXTENSIONS.get(ext) == 'cxx' 78 return make.COMPILABLE_EXTENSIONS.get(ext) == 'cxx'
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 151
179 # Module class and name. 152 # Module class and name.
180 self.WriteLn('LOCAL_MODULE_CLASS := ' + self.android_class) 153 self.WriteLn('LOCAL_MODULE_CLASS := ' + self.android_class)
181 self.WriteLn('LOCAL_MODULE := ' + self.android_module) 154 self.WriteLn('LOCAL_MODULE := ' + self.android_module)
182 # Only emit LOCAL_MODULE_STEM if it's different to LOCAL_MODULE. 155 # Only emit LOCAL_MODULE_STEM if it's different to LOCAL_MODULE.
183 # The library module classes fail if the stem is set. ComputeOutputParts 156 # The library module classes fail if the stem is set. ComputeOutputParts
184 # makes sure that stem == modulename in these cases. 157 # makes sure that stem == modulename in these cases.
185 if self.android_stem != self.android_module: 158 if self.android_stem != self.android_module:
186 self.WriteLn('LOCAL_MODULE_STEM := ' + self.android_stem) 159 self.WriteLn('LOCAL_MODULE_STEM := ' + self.android_stem)
187 self.WriteLn('LOCAL_MODULE_SUFFIX := ' + self.android_suffix) 160 self.WriteLn('LOCAL_MODULE_SUFFIX := ' + self.android_suffix)
188 self.WriteLn('LOCAL_MODULE_TAGS := optional')
189 if self.toolset == 'host': 161 if self.toolset == 'host':
190 self.WriteLn('LOCAL_IS_HOST_MODULE := true') 162 self.WriteLn('LOCAL_IS_HOST_MODULE := true')
191 self.WriteLn('LOCAL_MULTILIB := $(GYP_HOST_MULTILIB)') 163 self.WriteLn('LOCAL_MULTILIB := $(GYP_HOST_MULTILIB)')
192 else: 164 else:
193 self.WriteLn('LOCAL_MODULE_TARGET_ARCH := ' 165 self.WriteLn('LOCAL_MODULE_TARGET_ARCH := '
194 '$(TARGET_$(GYP_VAR_PREFIX)ARCH)') 166 '$(TARGET_$(GYP_VAR_PREFIX)ARCH)')
195 167
196 # Grab output directories; needed for Actions and Rules. 168 # Grab output directories; needed for Actions and Rules.
197 if self.toolset == 'host': 169 if self.toolset == 'host':
198 self.WriteLn('gyp_intermediate_dir := ' 170 self.WriteLn('gyp_intermediate_dir := '
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 self.android_module)) 678 self.android_module))
707 else: 679 else:
708 path = ('$(call intermediates-dir-for,%s,%s,,,$(GYP_VAR_PREFIX))' 680 path = ('$(call intermediates-dir-for,%s,%s,,,$(GYP_VAR_PREFIX))'
709 % (self.android_class, self.android_module)) 681 % (self.android_class, self.android_module))
710 682
711 assert spec.get('product_dir') is None # TODO: not supported? 683 assert spec.get('product_dir') is None # TODO: not supported?
712 return os.path.join(path, self.ComputeOutputBasename(spec)) 684 return os.path.join(path, self.ComputeOutputBasename(spec))
713 685
714 def NormalizeIncludePaths(self, include_paths): 686 def NormalizeIncludePaths(self, include_paths):
715 """ Normalize include_paths. 687 """ Normalize include_paths.
716 Convert absolute paths to relative to the Android top directory; 688 Convert absolute paths to relative to the Android top directory.
717 filter out include paths that are already brought in by the Android build
718 system.
719 689
720 Args: 690 Args:
721 include_paths: A list of unprocessed include paths. 691 include_paths: A list of unprocessed include paths.
722 Returns: 692 Returns:
723 A list of normalized include paths. 693 A list of normalized include paths.
724 """ 694 """
725 normalized = [] 695 normalized = []
726 for path in include_paths: 696 for path in include_paths:
727 if path[0] == '/': 697 if path[0] == '/':
728 path = gyp.common.RelativePath(path, self.android_top_dir) 698 path = gyp.common.RelativePath(path, self.android_top_dir)
729 699 normalized.append(path)
730 # Filter out the Android standard search path.
731 if path not in android_standard_include_paths:
732 normalized.append(path)
733 return normalized 700 return normalized
734 701
735 def ExtractIncludesFromCFlags(self, cflags): 702 def ExtractIncludesFromCFlags(self, cflags):
736 """Extract includes "-I..." out from cflags 703 """Extract includes "-I..." out from cflags
737 704
738 Args: 705 Args:
739 cflags: A list of compiler flags, which may be mixed with "-I.." 706 cflags: A list of compiler flags, which may be mixed with "-I.."
740 Returns: 707 Returns:
741 A tuple of lists: (clean_clfags, include_paths). "-I.." is trimmed. 708 A tuple of lists: (clean_clfags, include_paths). "-I.." is trimmed.
742 """ 709 """
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 deps.extend(link_deps) 770 deps.extend(link_deps)
804 return (gyp.common.uniquer(deps), gyp.common.uniquer(link_deps)) 771 return (gyp.common.uniquer(deps), gyp.common.uniquer(link_deps))
805 772
806 773
807 def WriteTargetFlags(self, spec, configs, link_deps): 774 def WriteTargetFlags(self, spec, configs, link_deps):
808 """Write Makefile code to specify the link flags and library dependencies. 775 """Write Makefile code to specify the link flags and library dependencies.
809 776
810 spec, configs: input from gyp. 777 spec, configs: input from gyp.
811 link_deps: link dependency list; see ComputeDeps() 778 link_deps: link dependency list; see ComputeDeps()
812 """ 779 """
813 for configname, config in sorted(configs.iteritems()): 780 if self.type != 'static_library':
814 ldflags = list(config.get('ldflags', [])) 781 for configname, config in sorted(configs.iteritems()):
815 self.WriteLn('') 782 ldflags = list(config.get('ldflags', []))
816 self.WriteList(ldflags, 'LOCAL_LDFLAGS_%s' % configname) 783 self.WriteLn('')
817 self.WriteLn('\nLOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))') 784 self.WriteList(ldflags, 'LOCAL_LDFLAGS_%s' % configname)
785 self.WriteLn('\nLOCAL_LDFLAGS := $(LOCAL_LDFLAGS_$(GYP_CONFIGURATION))')
818 786
819 # Libraries (i.e. -lfoo) 787 # Libraries (i.e. -lfoo)
788 # These must be included even for static libraries as some of them provide
789 # implicit include paths through the build system.
820 libraries = gyp.common.uniquer(spec.get('libraries', [])) 790 libraries = gyp.common.uniquer(spec.get('libraries', []))
821 static_libs, dynamic_libs = self.ComputeAndroidLibraryModuleNames( 791 static_libs, dynamic_libs = self.ComputeAndroidLibraryModuleNames(
822 libraries) 792 libraries)
823 793
824 # Link dependencies (i.e. libfoo.a, libfoo.so) 794 # Link dependencies (i.e. other gyp targets this target depends on)
825 static_link_deps = [x[1] for x in link_deps if x[0] == 'static'] 795 # These need not be included for static libraries as within the gyp build
826 shared_link_deps = [x[1] for x in link_deps if x[0] == 'shared'] 796 # we do not use the implicit include path mechanism.
827 self.WriteLn('') 797 if self.type != 'static_library':
828 self.WriteList(static_libs + static_link_deps, 798 static_link_deps = [x[1] for x in link_deps if x[0] == 'static']
829 'LOCAL_STATIC_LIBRARIES') 799 shared_link_deps = [x[1] for x in link_deps if x[0] == 'shared']
830 self.WriteLn('# Enable grouping to fix circular references') 800 else:
831 self.WriteLn('LOCAL_GROUP_STATIC_LIBRARIES := true') 801 static_link_deps = []
832 self.WriteLn('') 802 shared_link_deps = []
833 self.WriteList(dynamic_libs + shared_link_deps, 803
834 'LOCAL_SHARED_LIBRARIES') 804 # Only write the lists if they are non-empty.
805 if static_libs or static_link_deps:
806 self.WriteLn('')
807 self.WriteList(static_libs + static_link_deps,
808 'LOCAL_STATIC_LIBRARIES')
809 self.WriteLn('# Enable grouping to fix circular references')
810 self.WriteLn('LOCAL_GROUP_STATIC_LIBRARIES := true')
811 if dynamic_libs or shared_link_deps:
812 self.WriteLn('')
813 self.WriteList(dynamic_libs + shared_link_deps,
814 'LOCAL_SHARED_LIBRARIES')
835 815
836 816
837 def WriteTarget(self, spec, configs, deps, link_deps, part_of_all, 817 def WriteTarget(self, spec, configs, deps, link_deps, part_of_all,
838 write_alias_target): 818 write_alias_target):
839 """Write Makefile code to produce the final target of the gyp spec. 819 """Write Makefile code to produce the final target of the gyp spec.
840 820
841 spec, configs: input from gyp. 821 spec, configs: input from gyp.
842 deps, link_deps: dependency lists; see ComputeDeps() 822 deps, link_deps: dependency lists; see ComputeDeps()
843 part_of_all: flag indicating this target is part of 'all' 823 part_of_all: flag indicating this target is part of 'all'
844 write_alias_target: flag indicating whether to create short aliases for this 824 write_alias_target: flag indicating whether to create short aliases for this
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
1089 # Write out the sorted list of includes. 1069 # Write out the sorted list of includes.
1090 root_makefile.write('\n') 1070 root_makefile.write('\n')
1091 for include_file in sorted(include_list): 1071 for include_file in sorted(include_list):
1092 root_makefile.write('include $(LOCAL_PATH)/' + include_file + '\n') 1072 root_makefile.write('include $(LOCAL_PATH)/' + include_file + '\n')
1093 root_makefile.write('\n') 1073 root_makefile.write('\n')
1094 1074
1095 if write_alias_targets: 1075 if write_alias_targets:
1096 root_makefile.write(ALL_MODULES_FOOTER) 1076 root_makefile.write(ALL_MODULES_FOOTER)
1097 1077
1098 root_makefile.close() 1078 root_makefile.close()
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