Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 is all roughly based on the Makefile system used by the Linux | 7 # This is all roughly based on the Makefile system used by the Linux |
| 8 # kernel, but is a non-recursive make -- we put the entire dependency | 8 # kernel, but is a non-recursive make -- we put the entire dependency |
| 9 # graph in front of make and let it figure it out. | 9 # graph in front of make and let it figure it out. |
| 10 # | 10 # |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 118 # file for | 118 # file for |
| 119 # Chromium\ Framework.framework/foo | 119 # Chromium\ Framework.framework/foo |
| 120 # is for example | 120 # is for example |
| 121 # out/Release/.deps/out/Release/Chromium?Framework.framework/foo | 121 # out/Release/.deps/out/Release/Chromium?Framework.framework/foo |
| 122 # This is the replacement character. | 122 # This is the replacement character. |
| 123 SPACE_REPLACEMENT = '?' | 123 SPACE_REPLACEMENT = '?' |
| 124 | 124 |
| 125 | 125 |
| 126 LINK_COMMANDS_LINUX = """\ | 126 LINK_COMMANDS_LINUX = """\ |
| 127 quiet_cmd_alink = AR($(TOOLSET)) $@ | 127 quiet_cmd_alink = AR($(TOOLSET)) $@ |
| 128 cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^) | 128 cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) $(ARFLAGS.$(TOOLSET)) $@ $(filter %.o,$ ^) |
| 129 | 129 |
| 130 # Due to circular dependencies between libraries :(, we wrap the | 130 # Due to circular dependencies between libraries :(, we wrap the |
| 131 # special "figure out circular dependencies" flags around the entire | 131 # special "figure out circular dependencies" flags around the entire |
| 132 # input list during linking. | 132 # input list during linking. |
| 133 quiet_cmd_link = LINK($(TOOLSET)) $@ | 133 quiet_cmd_link = LINK($(TOOLSET)) $@ |
| 134 cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--s tart-group $(LD_INPUTS) -Wl,--end-group $(LIBS) | 134 cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--s tart-group $(LD_INPUTS) -Wl,--end-group $(LIBS) |
| 135 | 135 |
| 136 # We support two kinds of shared objects (.so): | 136 # We support two kinds of shared objects (.so): |
| 137 # 1) shared_library, which is just bundling together many dependent libraries | 137 # 1) shared_library, which is just bundling together many dependent libraries |
| 138 # into a link line. | 138 # into a link line. |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 169 cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) | 169 cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) |
| 170 | 170 |
| 171 # TODO(thakis): The solink_module rule is likely wrong. Xcode seems to pass | 171 # TODO(thakis): The solink_module rule is likely wrong. Xcode seems to pass |
| 172 # -bundle -single_module here (for osmesa.so). | 172 # -bundle -single_module here (for osmesa.so). |
| 173 quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ | 173 quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ |
| 174 cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSE T)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) | 174 cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSE T)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) |
| 175 """ | 175 """ |
| 176 | 176 |
| 177 LINK_COMMANDS_ANDROID = """\ | 177 LINK_COMMANDS_ANDROID = """\ |
| 178 quiet_cmd_alink = AR($(TOOLSET)) $@ | 178 quiet_cmd_alink = AR($(TOOLSET)) $@ |
| 179 cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^) | 179 cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) $(ARFLAGS.$(TOOLSET)) $@ $(filter %.o,$ ^) |
| 180 | 180 |
| 181 # Due to circular dependencies between libraries :(, we wrap the | 181 # Due to circular dependencies between libraries :(, we wrap the |
| 182 # special "figure out circular dependencies" flags around the entire | 182 # special "figure out circular dependencies" flags around the entire |
| 183 # input list during linking. | 183 # input list during linking. |
| 184 quiet_cmd_link = LINK($(TOOLSET)) $@ | 184 quiet_cmd_link = LINK($(TOOLSET)) $@ |
| 185 quiet_cmd_link_host = LINK($(TOOLSET)) $@ | 185 quiet_cmd_link_host = LINK($(TOOLSET)) $@ |
| 186 cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--s tart-group $(LD_INPUTS) -Wl,--end-group $(LIBS) | 186 cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--s tart-group $(LD_INPUTS) -Wl,--end-group $(LIBS) |
| 187 cmd_link_host = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $( LD_INPUTS) $(LIBS) | 187 cmd_link_host = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $( LD_INPUTS) $(LIBS) |
| 188 | 188 |
| 189 # Other shared-object link notes: | 189 # Other shared-object link notes: |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 255 # This will allow make to invoke N linker processes as specified in -jN. | 255 # This will allow make to invoke N linker processes as specified in -jN. |
| 256 LINK ?= %(flock)s $(builddir)/linker.lock $(CXX) | 256 LINK ?= %(flock)s $(builddir)/linker.lock $(CXX) |
| 257 | 257 |
| 258 CC.target ?= %(CC.target)s | 258 CC.target ?= %(CC.target)s |
| 259 CFLAGS.target ?= $(CFLAGS) | 259 CFLAGS.target ?= $(CFLAGS) |
| 260 CXX.target ?= %(CXX.target)s | 260 CXX.target ?= %(CXX.target)s |
| 261 CXXFLAGS.target ?= $(CXXFLAGS) | 261 CXXFLAGS.target ?= $(CXXFLAGS) |
| 262 LINK.target ?= %(LINK.target)s | 262 LINK.target ?= %(LINK.target)s |
| 263 LDFLAGS.target ?= $(LDFLAGS) | 263 LDFLAGS.target ?= $(LDFLAGS) |
| 264 AR.target ?= $(AR) | 264 AR.target ?= $(AR) |
| 265 ARFLAGS.target ?= %(ARFLAGS.target)s | |
| 265 | 266 |
| 266 # TODO(evan): move all cross-compilation logic to gyp-time so we don't need | 267 # TODO(evan): move all cross-compilation logic to gyp-time so we don't need |
| 267 # to replicate this environment fallback in make as well. | 268 # to replicate this environment fallback in make as well. |
| 268 CC.host ?= %(CC.host)s | 269 CC.host ?= %(CC.host)s |
| 269 CFLAGS.host ?= | 270 CFLAGS.host ?= |
| 270 CXX.host ?= %(CXX.host)s | 271 CXX.host ?= %(CXX.host)s |
| 271 CXXFLAGS.host ?= | 272 CXXFLAGS.host ?= |
| 272 LINK.host ?= %(LINK.host)s | 273 LINK.host ?= %(LINK.host)s |
| 273 LDFLAGS.host ?= | 274 LDFLAGS.host ?= |
| 274 AR.host ?= %(AR.host)s | 275 AR.host ?= %(AR.host)s |
| 276 ARFLAGS.host ?= %(ARFLAGS.host)s | |
| 275 | 277 |
| 276 # Define a dir function that can handle spaces. | 278 # Define a dir function that can handle spaces. |
| 277 # http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions | 279 # http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions |
| 278 # "leading spaces cannot appear in the text of the first argument as written. | 280 # "leading spaces cannot appear in the text of the first argument as written. |
| 279 # These characters can be put into the argument value by variable substitution." | 281 # These characters can be put into the argument value by variable substitution." |
| 280 empty := | 282 empty := |
| 281 space := $(empty) $(empty) | 283 space := $(empty) $(empty) |
| 282 | 284 |
| 283 # http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path- with-spaces | 285 # http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path- with-spaces |
| 284 replace_spaces = $(subst $(space),""" + SPACE_REPLACEMENT + """,$1) | 286 replace_spaces = $(subst $(space),""" + SPACE_REPLACEMENT + """,$1) |
| (...skipping 1696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1981 header_params.update({ | 1983 header_params.update({ |
| 1982 'flock': './gyp-sun-tool flock', | 1984 'flock': './gyp-sun-tool flock', |
| 1983 'flock_index': 2, | 1985 'flock_index': 2, |
| 1984 'extra_commands': SHARED_HEADER_SUN_COMMANDS, | 1986 'extra_commands': SHARED_HEADER_SUN_COMMANDS, |
| 1985 }) | 1987 }) |
| 1986 elif flavor == 'freebsd': | 1988 elif flavor == 'freebsd': |
| 1987 header_params.update({ | 1989 header_params.update({ |
| 1988 'flock': 'lockf', | 1990 'flock': 'lockf', |
| 1989 }) | 1991 }) |
| 1990 | 1992 |
| 1993 if generator_flags.get('fat_static_libraries', False): | |
|
Ryan Sleevi
2012/10/01 17:39:54
random drive by: If you're going to go through the
borenet
2012/10/01 18:07:10
This is what I was contemplating in my comment; it
| |
| 1994 arflags_linux = 'crs' | |
| 1995 else: | |
| 1996 arflags_linux = 'crsT' | |
| 1997 header_params.update({ | |
| 1998 'ARFLAGS.target': arflags_linux, | |
| 1999 'ARFLAGS.host': arflags_linux, | |
| 2000 }) | |
| 2001 | |
| 1991 header_params.update({ | 2002 header_params.update({ |
| 1992 'CC.target': GetEnvironFallback(('CC_target', 'CC'), '$(CC)'), | 2003 'CC.target': GetEnvironFallback(('CC_target', 'CC'), '$(CC)'), |
| 1993 'AR.target': GetEnvironFallback(('AR_target', 'AR'), '$(AR)'), | 2004 'AR.target': GetEnvironFallback(('AR_target', 'AR'), '$(AR)'), |
| 1994 'CXX.target': GetEnvironFallback(('CXX_target', 'CXX'), '$(CXX)'), | 2005 'CXX.target': GetEnvironFallback(('CXX_target', 'CXX'), '$(CXX)'), |
| 1995 'LINK.target': GetEnvironFallback(('LD_target', 'LD'), '$(LINK)'), | 2006 'LINK.target': GetEnvironFallback(('LD_target', 'LD'), '$(LINK)'), |
| 1996 'CC.host': GetEnvironFallback(('CC_host',), 'gcc'), | 2007 'CC.host': GetEnvironFallback(('CC_host',), 'gcc'), |
| 1997 'AR.host': GetEnvironFallback(('AR_host',), 'ar'), | 2008 'AR.host': GetEnvironFallback(('AR_host',), 'ar'), |
| 1998 'CXX.host': GetEnvironFallback(('CXX_host',), 'g++'), | 2009 'CXX.host': GetEnvironFallback(('CXX_host',), 'g++'), |
| 1999 'LINK.host': GetEnvironFallback(('LD_host',), 'g++'), | 2010 'LINK.host': GetEnvironFallback(('LD_host',), 'g++'), |
| 2000 }) | 2011 }) |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2127 root_makefile.write("endif\n") | 2138 root_makefile.write("endif\n") |
| 2128 root_makefile.write('\n') | 2139 root_makefile.write('\n') |
| 2129 | 2140 |
| 2130 if (not generator_flags.get('standalone') | 2141 if (not generator_flags.get('standalone') |
| 2131 and generator_flags.get('auto_regeneration', True)): | 2142 and generator_flags.get('auto_regeneration', True)): |
| 2132 WriteAutoRegenerationRule(params, root_makefile, makefile_name, build_files) | 2143 WriteAutoRegenerationRule(params, root_makefile, makefile_name, build_files) |
| 2133 | 2144 |
| 2134 root_makefile.write(SHARED_FOOTER) | 2145 root_makefile.write(SHARED_FOOTER) |
| 2135 | 2146 |
| 2136 root_makefile.close() | 2147 root_makefile.close() |
| OLD | NEW |